38
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Difyをローカル環境で起動してLLMアプリを作成してみた

Last updated at Posted at 2024-05-06

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

image.png

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完了!
ログイン後の画面は以下のようになります。
image.png

Model設定

右上のアカウント設定から使用するモデルを設定
image.png

今回はClaudeを利用
電話番号登録すると$5無料枠がもらえる
https://www.anthropic.com/api

アプリ作成

既存のテンプレートがいくつかあります。
今回は、Pythonコードのバグを修正してくれるテンプレートを選択します。
image.png

Chat形式でエラーが発生するコード(PDFから文字列出力)とエラーメッセージを入力
*今回は検証なので聞くまでもないエラー内容ですがご了承ください
image.png

Difyというよりは選択したモデルのおかげですが、
ご丁寧にソースコードの修正とエラーの原因を説明してくれました。
image.png

作成したアプリケーションは公開したりサイトに埋め込んだり(今回はlocalhostですが)、API実行もできるようです。
自作のテンプレートも共有できるようです。

また、テンプレートはほかにもたくさんあり、ワークフローとかも作成できるようです。
image.png

所感

ユーザー体験までの速さに感動しました。
使われるサービスになるためには、すぐ利用できるって大事ですね。
HULFT SquareにもApplicationという機能がありますが、新しいサービスが次々と出てくるので新しい機能をどんどんリリースしていかないとなと思いました。

今回は簡単な検証でしたが、アイデアがあれば個人でも簡単にそれを実現できるようになりそうですね。

38
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
38
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?