PR

Dify と LM Studio を使ってチャットボットを作成してみた

1. はじめに

前に OpenAI Agents SDK を試してみましたが、チャットボットを作成するのであれば Dify も良さそうだったので試してみました。
ローコード、ノーコードのツールと生成AIの組み合わせが注目されています。Difyはその一つで、AIアシスタントやチャットボットを簡単に作成できるプラットフォームです。
Difyにはクラウド版とセルフホスト版がありますが、セルフホスト版でチャットボットを作成してみます。

ちなみに、ディフィ が正式な読み方になったようです。
公式サイトはこちらです: https://dify.ai/jp

2. Dify のインストール

セルフホスト版は、Dockerを使ってインストールします。
Docker と Docker Compose がインストールされていることを前提とします。

2.1. Dify のソースコードを取得

以下のコマンドで Dify をダウンロードします。

git clone https://github.com/langgenius/dify.git
cd dify/docker

2.2. 環境変数の設定

中身を書き換える必要はありませんが、.env.example.env にコピーします。

cp .env.example .env

2.3. Docker コンテナの起動

docker-compose up -d

以上で、Dify のインストールは完了です。

2.4. ブラウザで確認

ブラウザを開いて、http://localhost にアクセスします。Dify の管理者アカウントの設定画面が表示されれば、インストールは成功です。
管理者として登録するメールアドレスとユーザー名とパスワードを入力して、アカウントを作成します。
サインイン画面に切り替わるので、登録した情報でサインインしダッシュボードが表示されれば成功です。

2.5. ソースコード更新

Dify のソースコードを更新するには、以下のコマンドを実行します。

# ソースコード更新
cd dify
git pull origin main
# docker再起動
cd docker
docker compose down && docker compose up -d

3. LM Studio でモデルの準備

LM Studio はインストールされていることを前提とします。
インストール方法は省略します。
モデル選択は簡単な解説を記載します。

LM Studio の左メニューにある虫眼鏡(探索)のアイコンをクリックし、モデルのモーダルを表示します。
LM Studio

モデルの検索で「gtp-oss-20b」と入力し、OpenAI のモデルを見つけダウンロードします。
LM Studio

左メニューにあるコンソール(開発者)のアイコンをクリックし画面を切り替え。
Ctrl+L でモデルの選択画面を表示します。
LM Studio

モデルの読み込みが完了するとステータスが「READY」になります。
LM Studio

読み込んだモデルの上に、Status: Stopped の部分をクリックし、Status: Running に変更します。
外部から接続できるIPとポートが Reachable at: http://xxx.xxx.xxx.xxx:1234 と表示されれば、モデルの準備は完了です。

4. プラグインの追加

ここからまた Dify に戻ります。
Dify から LM Studio のモデルを使うためのプラグインを追加します。
画面右上のプラグインアイコンより、「プラグイン」→「マーケットプレイスを探索する」→「検索プラグイン」にて OpenAI-API-compatible を検索し、インストールします。
LM Studio というプラグインがあるのですが、こちらバージョンの問題か pydantic のエラーが出てうまく動作しないです。

続いて、画面右上のアカウントアイコンからメニューを開き、「設定」→「モデルプロバイダー」を選択します。
プラグインで追加した OpenAI-API-compatible があるので、「モデルを追加」→「新しいモデルを追加する」を選択。
必須項目のみ入力します。必須でないところは空欄で大丈夫です。

項目入力内容
認証名gpt-oss-20b
Model TypeLLM
Model Nameopenai/gpt-oss-20b
API endpoint URLhttp://xxx.xxx.xxx.xxx:1234/v1
Model context size4096

上記設定で保存します。

5. チャットボットの作成

http://localhost/apps にアクセスし、テンプレートから作成 をクリックします。
Dify

テンプレートの一覧が表示されるので、検索からチャットボットを選択します。
Dify

チャットボットのテンプレートが表示されるので、Code Interpreter を選択し、このテンプレートを使用する をクリックします。
Dify

テンプレートを開くと、使用できないモデルが選択されているので、先ほど追加した gpt-oss-20b に変更します。
Dify
Dify

変更すると、パラメータの設定が表示されるので、必要に応じて変更します。
今回はデフォルトのまま保存しました。Max Tokens は 4096 に変更しても良いかもしれません。
Dify

デバッグとプレビューから動作の確認が行えます。ローカル LLM なので、レスポンスが少し遅いですが、問題なく動作しました。
Dify

初期の会話を変更するため、管理 → から、会話の開始オープナーを書く を選択します。
Dify
Dify

会話の開始のダイアログが表示されるので、内容を変更します。
Dify
日本語に訳して保存して閉じます。

リフレッシュで履歴をクリアし、再度デバッグとプレビューで動作確認します。
Dify

日本語にしたからか、回答も日本語になりました。
Dify

デバッグとプレビュー の左に、プロンプト などがありますが、今回は特に変更しません。

モデル選択の右隣に、公開 ボタンがあるので、クリックします。
Dify

アプリの実行 をクリックすると、別タブでチャットボットの画面が表示されます。
サイトに埋め込む をクリックすると、HTMLコードが表示されるので、コピーして自分のサイトに貼り付けることもできます。

すごく簡単にチャットボットが作成できました。

6. まとめ

Dify と LM Studio を使って、簡単にチャットボットを作成することができました。
プログラミングの知識がなくても、AIを活用したチャットボットを作成できる時代になりました。
オーケストレーションツールとしても優れており、様々なAIモデルやサービスと連携できるため、用途に応じた柔軟なチャットボットの構築が可能です。
というより、SDK 使って自分でコードを書くよりも、Dify で作成した方が早い上に、メンテナンスも楽そうです。
フロントエンド側を React や Vue.js で作成し、バックエンド側を Dify で作成するのが良さそうです。

今回の記事も、Github Copilot が半分くらい書いてくれました。

A. 参考サイト

【インストールとセットアップ】Difyを使いこなすためのガイドブック-③

B. 関連書籍

コメント