Difyとは
先進的なAIアプリケーションのためのイノベーションエンジン
DifyはオープンソースのLLMアプリ開発プラットフォームです。RAGエンジンを使用して、エージェントから複雑なAIワークフローまでLLMアプリを編成します。
以下詳細
https://dify.ai/jp
ローカルで起動(WSL)
実行コマンド
git clone https://github.com/langgenius/dify.git
cd dify/docker
docker compose up -d
起動手順は以下に記載があります。
https://github.com/langgenius/dify?tab=readme-ov-file#quick-start
実行結果
$ docker compose up -d
[+] Running 66/8
✔ redis 6 layers [⣿⣿⣿⣿⣿⣿] 0B/0B Pulled 30.0s
✔ weaviate 4 layers [⣿⣿⣿⣿] 0B/0B Pulled 49.7s
✔ nginx 7 layers [⣿⣿⣿⣿⣿⣿⣿] 0B/0B Pulled 11.4s
✔ sandbox 10 layers [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿] 0B/0B Pulled 59.2s
✔ worker Pulled 70.6s
✔ api 10 layers [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿] 0B/0B Pulled 70.6s
✔ db 9 layers [⣿⣿⣿⣿⣿⣿⣿⣿⣿] 0B/0B Pulled 17.2s
✔ web 12 layers [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿] 0B/0B Pulled 47.6s
[+] Building 0.0s (0/0)
[+] Running 8/8
✔ Container docker-redis-1 Started 3.2s
✔ Container docker-weaviate-1 Started 3.5s
✔ Container docker-db-1 Started 3.3s
✔ Container docker-web-1 Started 3.3s
✔ Container docker-sandbox-1 Started 3.7s
✔ Container docker-api-1 Started 5.0s
✔ Container docker-worker-1 Started 5.0s
✔ Container docker-nginx-1 Started
以下の通り、実行後8つのコンテナが起動します。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
500d20104fe0 nginx:latest "/docker-entrypoint.…" 53 seconds ago Up 45 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp docker-nginx-1
73a54d6264b7 langgenius/dify-api:0.6.6 "/bin/bash /entrypoi…" 53 seconds ago Up 47 seconds 5001/tcp docker-api-1
ca6df3663c2f langgenius/dify-api:0.6.6 "/bin/bash /entrypoi…" 53 seconds ago Up 47 seconds 5001/tcp docker-worker-1
8083aaf2459c langgenius/dify-sandbox:0.1.0 "/main" 53 seconds ago Up 48 seconds
docker-sandbox-1
42d51ac7e40f postgres:15-alpine "docker-entrypoint.s…" 53 seconds ago Up 49 seconds (healthy) 5432/tcp docker-db-1
daf190a30b24 langgenius/dify-web:0.6.6 "/bin/sh ./entrypoin…" 53 seconds ago Up 49 seconds 3000/tcp docker-web-1
acf0e14f2b9b redis:6-alpine "docker-entrypoint.s…" 53 seconds ago Up 49 seconds (healthy) 6379/tcp docker-redis-1
136438d2d53e semitechnologies/weaviate:1.19.0 "/bin/weaviate --hos…" 53 seconds ago Up 49 seconds
docker-weaviate-1
ログイン
以下にアクセスして、アカウントを作成しログイン!
http://localhost/install
のはずが、初期パスワードに入力ミスがあったせいでログインパスワードがわからなくなりログインできなくなる事態発生w
DBにアカウント情報が保存されているはずだと思い、docker-compose.yamlからDBログイン情報チェックしコンテナに入りテーブルをチェック。
が、パスワード情報は当然暗号化されている。
コンテナ再起動してもアカウント情報が残ったまま。
あたふたしてましたが、調べたらパスワードリセット手順発見。
$ docker exec -it docker-api-1 flask reset-password
None of PyTorch, TensorFlow >= 2.0, or Flax have been found. Models won't be available and only tokenizers, configuration and file/data utilities can be used.
Email: xxx@xxx.com
New password: xxxxx
Password confirm: xxxxx
Congratulations!, password has been reset.
(実行ディレクトリ配下にvolumeというフォルダが作成されていてDBのデータが永続化されていたのですが、フォルダ削除するか、cloneしなおせばよかったかも笑)
そして無事Login完了!
ログイン後の画面は以下のようになります。
Model設定
今回はClaude
を利用
電話番号登録すると$5無料枠がもらえる
https://www.anthropic.com/api
アプリ作成
既存のテンプレートがいくつかあります。
今回は、Pythonコードのバグを修正してくれるテンプレートを選択します。
Chat形式でエラーが発生するコード(PDFから文字列出力)とエラーメッセージを入力
*今回は検証なので聞くまでもないエラー内容ですがご了承ください
Difyというよりは選択したモデルのおかげですが、
ご丁寧にソースコードの修正とエラーの原因を説明してくれました。
作成したアプリケーションは公開したりサイトに埋め込んだり(今回はlocalhostですが)、API実行もできるようです。
自作のテンプレートも共有できるようです。
また、テンプレートはほかにもたくさんあり、ワークフローとかも作成できるようです。
所感
ユーザー体験までの速さに感動しました。
使われるサービスになるためには、すぐ利用できるって大事ですね。
HULFT SquareにもApplicationという機能がありますが、新しいサービスが次々と出てくるので新しい機能をどんどんリリースしていかないとなと思いました。
今回は簡単な検証でしたが、アイデアがあれば個人でも簡単にそれを実現できるようになりそうですね。