Difyを使ってみました。クラウドベースのLLM特化のワークフロー作成ツールです。ZapierやMakeとの違いはLLMに特化してるかどうか。
私の期待としてはGPTsではできない再起的なLLMの呼び出し、バッチ処理、他のソースの取り込み、コードが書けない人でもRAGが扱えるようにしたいということでした。
結論から書くと期待してたことは大体できそうでした。
- 入力としてCSVの処理が始めからついている
- 作ったワークフローについて他のワークフローから呼び出したりWeb APIとしてすぐに使える
- Notionを知識のソースとして使える(Notionへのデータ挿入もDifyから自動化できるため自動で成長するチャットボットも作れそう)
- GPTsではできないことがコードなしでできる
なおDifyはオープンソースとなっており自前でホスティングすることも可能です。今回はまずはクラウドサービスを利用してみましたが、LLMのAPI利用に無料の範囲があるらしく煩わしいAPI Keyの設定などが不要でサービスを体験できてよかったです。テンプレートも豊富でした。
今回はCSVの1行1行にLLMを使った処理をする場合と、RAGの実装についてみてみました
CSVの1行1行にLLMを使った処理をする
CSVにある会社名から業種分類をさせるようなものを作ってみます。ChatGPTやGPTs単体では行ごとにLLMを呼び出すということはできないので普通はコードを書く必要があります。
まずワークフローを作り始め、最初に変数を設定します。 sys_files
というのが右にありますが、最初からファイルの入力に対応しています。
次にLLMのブロックを追加し、プロンプトを与えます。先ほど設定した変数が使えるほか、LLMの返答が出力変数というのに格納されます
最後に終了のブロックを追加して、出力に先ほどのLLMの出力を指定して終わりです。
では、使ってみます。自動で生成されるチャットのUIから「トヨタ自動車」と与えてみます
製造業と分類されてました。
次にCSVでデータを与えます。定義した変数からCSVのテンプレートを作ってくれるのでそれをダウンロードして値を入れます
実行の画面で「Run Batch」を選ぶとCSVのアップロード画面が自動で作成されているのでアップロードすると結果が得られます。
期待通りに分類されていました。結果はファイルとしてもダウンロードできます。ブロックにはPythonのコードを直書きするようなこともできます。
追記:そもそも分類の問題はそれ用のブロックがありました(Question Classifier | Dify)
RAGの実装
事前に与えた知識とLLMを組み合わせるRAGの実装もしてみました。これはテンプレートがあったのでその紹介です。
上記のような単純な流れになっています。Knowledge Retrievalというブロックでテキスト、CSV、PDF、URLといった形で事前知識を与えます。
Notionとも連携するようになっています。(Notion からデータを同期する | Dify)
これで与えた知識に基づくチャットボットやワークフローが簡単に作れます。RAGは一度作るのはいいけどその後のメンテナンスを考えると面倒でしたが、これで外部のテキストやNotionが使えるので誰でも更新がしていけます。それに他のワークフローでバッチ処理で知識を追加していける(例えば名刺を追加していく、新規のニュースや論文を加えていく、議事録を加えていく)ということもできるでしょうから夢は広がります。
まとめ
コード書けない人も含めてチームでLLMを色々やるには良さそうです。まずはこれでプロトタイピングして・・・という使い方も良さそうです。予算のことを考えるとZapierやMakeにも似た機能が出るのを待つのもありなので悩ましいでしょうか。