九保すこひです(フリーランスのITコンサルタント、エンジニア)
さてさて、私は歴15年のエンジニアですが「フリーランスで良かった」と思う点があります。
それは・・・・・・
経営サイドから面白い話が聞ける
ことです。
先日いかにも経営サイドの方が好みそうなテクノロジーを教えてもらいました。
それが・・・・・・
dify(でぃふぁい)
です。
簡単に言うと「より自分好みに改造できるChatGPT」です。
difyは多くの作業を効率化できるということで、55,900件のスターを獲得しています。(2024.12.24現在)
たとえば、次のようなことができます。
- 検索キーワードを送信
- wikipediaでページ検索
- データをGPT-4でスクレイピング
- 同じくJSON化
- そのJSONをメールで送信する
つまり、自分でストーリーをつくっていろんな作業をさせられるというわけです。(水バケツリレーみたいなイメージですね)
メリットはこんなカンジ。
- dify本体は無料(APIは除く)
- ローカルで動く
- ウェブ版もある(こっちは無料&有料)
- GPT以外のAPIも使える
- dockerなのでインストール簡単
そこで!
今回はdifyで私の「ある時間をかかる」ことをショートカットしてみます。
この記事は・・・・・・
- そもそも「dify」って何ができるの?
- 勉強しないと使えないんじゃないの?
- 日々の面倒な作業が楽になるってホント?
という方に向けて書いています。
ぜひ最後まで読んでくださいね😊
「ロックマン3のBGMを聞いたら、
3日たってもイヤーワームが止まらない(笑)」
目次
dify:この記事で出来るようになること
ライティング・ハックス(講座)で勉強をしたとき、執筆前に次のリサーチが必要なことを知りました。
- 狙いのキーワードで検索
- 上位の10記事を調査
- 共通する読者ニーズを読みとる
- 記事の構成をつくる
つまり、まずは競合を見て自分が何をするか決めるんですね。
そう考えると、記事タイトルの作成も競合からヒントを得られそうです。
そこで、今回はdifyで検索上位のタイトルを10個を参考にして、もっと魅力的なタイトルをつくってみます
※ただし、SEOは記事タイトルよりドメインパワーの方が影響が強いと言われていますので、このやりかたが絶対ではないことだけ注意してください。
dify:インストールする5ステップ
difyはdockerを用意してくれているのでインストールは簡単です!
今回は公式のgitリポジトリに書かれている方法でインストールします。
【ステップ1】git cloneでリポジトリをコピー
以下のコマンドで好きな場所にソースコードをコピーしてください。
git clone https://github.com/langgenius/dify.git
【ステップ2】difyのdockerフォルダへ移動
cd dify
cd docker
【ステップ3】環境変数を作成(ファイルをコピー)
cp .env.example .env
【ステップ4】dockerを起動
docker compose up -d
※最初は5〜10分ぐらい時間がかかるかもしれません
【ステップ5】ユーザー登録してログイン
すでにdifyが使えるので、http://localhost/installにアクセスしてユーザー登録してください。
ログインしたら、こんな画面になります。
dify:ワークフローの基本
記事の冒頭で紹介した「水バケツ」方式で処理をすることを「ワークフロー」と言います。
difyには他にもいくつか処理方法がありますが、今回はワークフローの使い方を紹介します。
なお、ワークフローの基本は、
- 入ってくるデータ
- 出ていくデータ
を設定して、ブロックをつなぐ。
これだけでです!
dify:ワークフローをつくる3ステップ
ワークフロー本体をつくるのはとても簡単です!
【ステップ1】トップページへ移動する
すでにトップページの方はそのままでいいですが、もし別のページが表示されている場合はページ左上のロゴをクリックしてください。
【ステップ2】ブランクAppをつくる
「Create from Blank」と書かれたリンクがあるのでクリック。
【ステップ3】作成するAppの設定をする
次の内容を保存してください。
- Choose App Type:Workflowを選択
- App Name & icon:好きな名前を入力
- 保存ボタンをクリック
dify:記事タイトルをつくる5ステップ
ワークフロー本体の保存が完了すると、設計ページに転送されます。
では、ここからは本題の記事タイトルをつくっていきます。
必要な手順(ワークフローのブロック)は次の5つです。
- キーワードの入力フォームをつくる
- 上位10記事のタイトルを取得
- データを加工
- GPT-4に記事タイトルを考えてもらう
- 出力
【ステップ1】キーワードの入力フォームをつくる
ワークフロー設計ページに移動すると「Start」というブロックが用意されています。
ここがスタート地点で、どんな入力をするのかを設定します。
以下6つの入力がつかえます(2024.12.25時点)
- Short Text:短いテキスト
- Paragraph:文章
- Select:選択
- Number:番号
- Single File:ファイル(1つ)
- File List:ファイル(複数)
今回は次の設定で実行します。
- Field type:Short Text
- Variable Name:q
- Label Name:検索キーワード
【ステップ2】上位10記事のタイトルを取得
先ほどのフォームで入力したキーワードを受けとって、ウェブ検索する部分です。
+ボタンを新しいブロックを追加します。
すると、次のようなパネルが表示されます。
「Tools」をクリックして検索ボックスに「duck」と入力してください。
すると、DuckDuckGo(検索エンジン)のツールが表示されるので「DuckDuckGo Search」を選んでください。
※GoogleやBraveもありますが、APIの設定が必要です。
ページ右側にブロックの設定パネルが表示されます。
この中のQuery string
下の入力ボックスをクリックして(半角で)/を入力すると、選択肢が表示されます。
この中から「q」を選んでください(これはさっき設定したq
という変数名です)
また、次の設定もしておいてください。
- MAX RESULTS:10件
- RETRY ON FAILURE:ON(DuckDuckGo Searchは失敗が多いので)
※ちなみにパネル内にある「OUTPUT VARIABLES」を開くと、次のブロックに送るデータ一覧が表示されます。
【ステップ3】データを加工
DuckDuckGoで取得した検索結果10件は以下のようなものになります。
{
"text": "",
"files": [],
"json": [
{
"title": "(ページタイトル)",
"href": "(ページURL)",
"body": "(本文の一部)."
},
...続く
]
}
この中から「title」だけを取得して次のようにコードで加工します。
※正直言うと次のGPT-4にそのまま送ってもいけそうですが、練習的な意味合いもありますので、あえてコードの使い方も紹介しています!
・ページタイトル1
・ページタイトル2
・ページタイトル3
では、先ほどと同じく「+ボタン」をクリックしてブロックを追加し「Blocks > Code」を選択してください。
すると、新しいパネルが表示されるのでINPUT VARIABLES
を次のようにします。
- ひとつめの変数名:searchItemsに変更
- ひとつめの値:jsonを選択
ふたつめの変数は不要なので、削除して問題ありません。
そして、コードを入力します。
プログラミング言語をPython3
→JavaScript
に変更し、以下のコードを貼り付けてください。
function main({searchItems}) {
return {
result: searchItems.map(item => {
return '・'+ item.title;
}).join("\n")
}
}
完了するとこうなります。
【ステップ4】GPT-4に記事タイトルを考えてもらう
また新しいブロックを「+ボタン」で追加し「LLM」を選択します。
右側にLLMパネルが表示されるので、MODEL
とSYSTEM
を入力します。
※MODELはAPIキーを追加しないと選択できません。
そして、SYSTEMの文章は以下のとおりです。
以下は検索上位の記事のタイトルをまとめたものです。
これらにSEOで勝てるようなより魅力的なタイトルを10個提案してくください。
【検索上位のタイトル】
{result}
なお、{result}
の部分は、半角「{」と入力すると選択肢が表示されるので「result」を選択してください。
【ステップ5】出力
最後のブロックです。
「+ボタン」で追加して、OUTPUT VARIABLE
から「LLM > text」を選択すればOK。
これで設定は完了です。
お疲れ様でした😊
テストしてみる
では実際にテストしてみましょう。
ページ右上にある「Run」ボタンをクリックします。
フォームが表示されるので、書きたい記事のキーワードを入力して「Start Run」ボタンを押します。
さて、どうなるでしょうか・・・・・・
・・・。
出力はこうなりました!
"ステップバイステップ: LaravelとLINE通知の統合ガイド"
"LaravelとLINE Messaging APIの完全マニュアル: 2022年版"
"LaravelでLINE Notifyを使った通知システムの構築"
"Laravel 11.xの新機能: LINE通知の実装方法"
"LaravelとLINE APIの連携: 自動返信からメッセージ送信まで"
"LaravelプロジェクトにLINE Notifyを統合する最新ガイド"
"LaravelとLINE通知の連携: フレームワークでの実装テクニック"
"LaravelによるLINE Messaging APIの活用法: 完全ガイド"
"LaravelとLINE Notify: Webアプリケーションでの通知設定方法"
"Laravel 11.xでのLINE通知の実装: Web Artisansのためのガイド"
さすがGPT-4ですね!
キャッチコピーとしても有効と言われる数字を入れたり、できるだけ左側にキーワードを多く配置するなどテクニックを感じる内容でした。
成功です😊✨
企業様へのご提案:人員不足をAIで乗り切りたい方へ
difyを使うと、社内のルーティンワークを効率化&省力化することができます。
また、difyだけではできない処理も私がコードを提供することで対応ができるかもしれません。
もしAIを仕事に役立てたい方はお問い合わせからご相談ください。
お待ちしております!😊
おわりに
ということで、今回はdifyを使ってみました。
difyのことを教えてくれた方は、difyとプログラムが2つ合体するとすごいことができそうだとおっしゃっていました。
プログラマとAIの共存という形も時代の流れかもしれません。
どちらにしても常に新しい情報をインプット&アウトプットしておかないと置いていかれちゃうってことですね。
個人的にもdifyを使ってルーティンワークを効率化できたらと思ってます!
みなさんもトライしてくださいね。
ではでは〜!
「久しぶりの深夜に食べる牛丼、
うんまかったー!」