Difyって?
DifyはオープンソースのLLMアプリ開発プラットフォームです。 RAGエンジンを使用して、エージェントから複雑なAIワークフローまでLLMアプリを編成します。 LangChain よりも本番環境に適しています。
公式サイト
事前準備(WSL)
1.Windows PoweShellを「管理者として実行」し
wsl --install
と入力してインストールする
2.インストールが完了したら、OS再起動
3.再起動するとUbuntuが自動で立ち上がり、ユーザ名とパスワードを設定
4.コマンドプロンプトを開いてwsl -l -v
と入力しWSLのバージョン情報が表示されればOK
事前準備(Docker)
1.Ubuntu(WSL)にDockerをインストールする
sudo apt update
# インストールに必要なものをインストール
sudo apt install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
# GPGキー追加
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# dockerのパッケージリポジトリをaptに追加
echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# dockerEngineのインストール
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
# docker-composeのインストール
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# docker daemonの起動
sudo service docker start
2.docker自動起動設定
WLS使用時に自動でdockerを起動するようにする
# service docker startだけパスワード無しでsudoできるようにする
sudo visudo
# User privilege specificationに以下を追記
ユーザー名 ALL=NOPASSWD: /usr/sbin/service docker start, /usr/sbin/service docker stop, /usr/sbin/service docker restart
3.docker操作権限を付与
dockerグループに対してOS操作をするユーザを追加(権限付与)する
sudo usermod -aG docker [ユーザ名]
Ubuntuを開きなおすことで設定が反映されます。
ローカルにDifyコンテナを起動する
GithubからDifyのコードをcloneしdocker composeでコンテナを起動する
git clone https://github.com/langgenius/dify.git
cd dify/docker
docker compose up -d
実行結果
Difyにログインする
ローカルにDifyが起動しているので下記URLにアクセスし、サインアップする
http://localhost/install
LLMモデル設定
OpenAIで無料プランの場合はAPI Key登録時にエラーが出ました
今回はOpenAIのモデルgpt-3.5-turbo-16k-0613
を使います。
事前にOpenAIでAPI Keyを取得しておきます。
右上のアカウント>設定からモデルプロバイダーを選択し
使用するLLMモデルをセットアップします。
以下のようにモデルの右端に緑色のステータスが表示されていればOK
ワークフローを作る
「アプリを作成する」の最初から作成を選択してワークフローを作ってみます。
名前は何でもよいですが「検索くん」にしました。
自分の代わりにGoogle検索してくれるアプリです。
初期配置されている「開始」モジュールを選択して
ユーザが質問入力できるようにinput
変数を登録します。
次にユーザが入力した内容を基にGoogle検索をしてくれるように「GoogleSearch」モジュールを追加します。
この時、SerpAPIキーが必要になりますのでGoogleアカウントを持っていればアカウント連携してサインアップしAPIキーを取得します。
入力変数には「開始」モジュールで登録したinput
を選択し
Result typeをtext
に設定します。
次に、検索結果から推論するLLMモジュールを追加
モデルは事前にモデルプロバイダーで設定したOpenAIのgpt-3.5-turbo-16k-0613
を選択します。
SYSTEMプロンプトには入力変数input
とGoogle検索結果のtext
を入力します。
最後に「終了」モジュールを追加
デフォルトだとJSONで結果が返ってきてしまうので、出力変数にLLM/text
を設定します。
これでワークフロー(アプリの)の作成が完了です。
テスト実行
画面上部にある「▷実行」を押してテストしてみます。
FF14のディレクターである吉田氏の肩書を聞いてみました。
実行すると、ワークフローが流れて回答が出力されました。
合ってそうですw
アプリを公開する
今回はローカル環境なので外部公開はできませんが
画面右上の「公開する」をクリックするとブラウザアクセス用のURLが生成されます。
http://localhost/workflow/xxxxxxxx
初心者にはDPSがおすすめのようですね。
かわいい装備は白魔導士だけじゃないですが、まぁ言いたいことは分かりますw
最後に
サーバも要らずにアプリを簡単に作れちゃうので面白いですね。
使用するLLMモデルによって回答の精度は変わりますが、その分お金もかかるのでトレードオフです。
今回は代替検索してくれるアプリでしたが、学習データを登録してチャットボットを作ったり
いろんなことがDifyで出来るのでもっと試したいですね。