自分好みのAIチャット相手を簡単に作れる「Dify」が面白い
生成AI界隈で話題になっているAIサービス「Dify.AI」がなかなか面白い。LLMを中心にいろいろなシステムを組み込むことで、プログラムを書くことなく簡単にチャットbotなどのネイティブAIアプリを開発できる。 【もっと写真を見る】
生成AI界隈で話題になっているAIサービス「Dify.AI」がなかなか面白いですよ。Dify.AIは、スタートアップの米LangGeniusが用意している大規模言語モデル(LLM)用のWebUI環境を利用して、いろいろなシステムを組み込むことで、プログラムを書くことなく簡単にチャットbotなどのネイティブAIアプリを開発できるサービスです。 Difyは大きく「チャットボット」、「エージェント」、「ワークフロー」の3つの機能に分かれており、簡単なチャットボットから、複数のLLMを組み合わせた複雑な動作をさせるように設計するものまで、多様なアプリを開発することが可能です。ChatGPTから、Claude 3、Geminiなどの主要なLLMをAPIから呼び出すことができるので、それらを組み合わせてサービスを作ることも可能です。例えばOpenAIのAPIキーを生成してDifyに入力すると「GPT-4」などを使ったチャットボットが作れるようになります。 チャットボットの場合でも「コンテキスト」をナレッジとして読み込むことができるため、外部の知識を登録するとデータを参照して答えるいわゆる「RAG(Retrieval Augmented Generation、取得拡張生成)」機能を使うこともできます。 もちろんPythonなどのプログラム言語を書いていけば、そうした設定を作ることは決して難しい技術ではないのですが、それでも手間と感じられる部分でした。Difyを使うことで、30分もあればチャットボットの基本的な環境を作り上げることができ、また、一度環境を作ってしまえば、すぐにテストを行い、挙動を確認することができます。最初のセッティングがほとんど手間いらずに作れてしまうところに、圧倒的な便利さがあります。 ローカル環境だけでRAGベースのAIアプリが作れる Difyはオンラインの月59ドルからの有料サービス(無料のトライアル版あり)として展開されていますが、面白いのがオープンソースとしても提供されていて、環境がGitHubに公開されていることです。動作させるにはアプリケーションの実行環境であるDockerをインストールしてることが前提ですが、動作させるための手順はそれほど複雑ではありません。Web用のものと同じ環境をローカルPC上に構築することができます。 また、ローカルで動いているので、ローカルサーバーも参照できる。そしてローカル環境だけで、実際にアプリが作れてしまうわけです。 実際にDifyのローカル環境を構築して、チャットボットを作成してみました。執筆時点で最新のv0.6.8では、最新の「GPT-4o」にも対応しています。OpenAIのAPI Keyをセットしておくと、選択肢として選ぶことができます。システムプロンプトにあたる手順には、作成済みの「明日来子さん」の設定を入れ込みます(筆者作成のキャラクター。前回参照)。その状態で、右側の「デバッグとプレビュー」にチャットを入力すると、すぐ動作が始まります。そして気に入った場合には、「公開する」を押すだけで、URLが生成され、チャットボットのLLMアプリとして動作するようになります。 ただ、APIを利用する場合には、当然テスト中もトークンの使用料がかかります。ここで使えるのが、前回の「Command R+」の記事で紹介したアプリ「LM Studio」の「サーバーモード」です。サーバーモードを実行した状態で、Difyに接続してやると、ローカルサーバーを通じて、LLMを動かすことができてしまいます。LM Studioには今のところ外部データを読み込む機能がありませんが、Dify側に送って処理させるようにすれば、より複雑な機能を組み合わせることができます。例えば、ナレッジを組み合わせておくことで、LM Studio単体では実現できないRAG機能を持たせることができます。 AIと著作権に詳しいLLMキャラ爆誕 これにより、明日来子さんをAIと著作権に詳しいチャットボットへと拡張してみます。試しに、文化庁が3月に公開した「AIと著作権に関する考え方について(考え方)」PDFをナレッジに登録してみます。テキスト登録後、ベクトル情報と全文検索を可能にするハイブリッド検索に設定します。埋め込みモデルはOpenAIの「text-embedding-3-large」と最ランクモデルにはCohereの「rerank-multilingual-v3.0」を使いました。そうするとテキスト全体への解析が行われ、自動的にコンテキストとして使用可能なデータへと分けられます。 それをコンテキストとして登録するだけで、明日来子さんは、考え方を著作権とAIについての専門家として振る舞いはじめます。 チャットボットにLLMを設定し、RAGを組み込むまでに必要だった時間は30分程度。慣れれば10分程度でできてしまう簡単さです。この環境は何よりもトライ&エラーを簡単にすることが可能です。非エンジニアであっても手軽にローカル環境でチャットボットのプロトタイプが開発でき、その修正作業を進めることができるようになりました。その点からも、注目されるようになったわけです。チャットボットをウェブサイトに埋め込むためのウィジェット作成などにも対応してくれていて、「ちょっと面倒くさいな」というところをすべてやってくれます。 ノードベースでさらに複雑な処理が可能 さらに、もうひとつ踏み込んで話題になっているのが「ワークフロー」です。画像生成AIでは「ComfyUI」がノードベースでの処理を可能にするため、視覚的にプログラミングをするように手順を決められることからかなり複雑な処理ができるように発展しているのですが、LLMの世界にもそういう技術が登場してきているのです。一つ一つの処理を定義したノードをつなぎ合わせていくことで、複雑な作業をさせることができます。 単純なサンプルですが、このワークフローでは外部サービスを組み合わせて、LLMに複雑な動作をさせています。それぞれの四角がノードで、左から右へと処理が進んでいきます。ユーザーが単語を入力すると、その単語をプロンプトにしてDALL-E 3で画像を生成、さらにその単語をWikipediaで検索して該当する項目があった場合、LM StudioのCommand R+がその単語を説明する内容を100字以内に要約して、テキストと画像を一緒に出力するという仕組みです。もちろんチャットボットと同様にアプリ化して実行することができます。ChatGPTにおける「GPTs」のようなものをこれまでよりも簡単に作れてしまうわけです。 かつ、このアプリがどれだけ使われたか、どのくらいトークンを使っているかといった統計データもちゃんと取ってくれて、APIの使用量からコストも推計してくれるので、サービスとしての費用感もわかりやすくなっています。当然のようにハルシネーションも起こすのですが、回答に対して、ポジティブやネガティブの評価を行っていくと、どの程度の割合でミスをするのかを確認するといった使い方もできそうです。 そういう意味でも、非常にユーザーフレンドリーなアプリです。事業化時にリリースする最終的なプロダクトは、手打ちして自前で組み込んだほうが望ましいということも考えられますが、 プロトタイプの開発までは便利です。我々がおもちゃにするにもうってつけです(笑)。 これをローカル環境と組み合わせれば、雑なAITuberが作れてしまうんじゃないかという期待は抱かせるものがありますね。この連載から、AITuber「明日来子ちゃん」が生まれてくる日は近いかもしれません。 筆者紹介:新清士(しんきよし) 1970年生まれ。株式会社AI Frog Interactive代表。デジタルハリウッド大学大学院教授。慶應義塾大学商学部及び環境情報学部卒。ゲームジャーナリストとして活躍後、VRマルチプレイ剣戟アクションゲーム「ソード・オブ・ガルガンチュア」の開発を主導。現在は、新作のインディゲームの開発をしている。著書に『メタバースビジネス覇権戦争』(NHK出版新書)がある。 文● 新清士 編集●ASCII