LoginSignup
2
1

【ローカル】Dify+OpenAIを使って生成AIアプリ作ってみる

Posted at

Difyって?

DifyはオープンソースのLLMアプリ開発プラットフォームです。 RAGエンジンを使用して、エージェントから複雑なAIワークフローまでLLMアプリを編成します。 LangChain よりも本番環境に適しています。

公式サイト

事前準備(WSL)

1.Windows PoweShellを「管理者として実行」し
wsl --installと入力してインストールする
wsl事前準備1.png
2.インストールが完了したら、OS再起動

3.再起動するとUbuntuが自動で立ち上がり、ユーザ名とパスワードを設定
wsl事前準備2.png

4.コマンドプロンプトを開いてwsl -l -vと入力しWSLのバージョン情報が表示されればOK
wsl事前準備3.png

事前準備(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

実行結果

docker起動1.png
docker起動2.png
8個のコンテナが起動していますね。

Difyにログインする

ローカルにDifyが起動しているので下記URLにアクセスし、サインアップする
http://localhost/install
Dify画面.png

管理者アカウントのセットアップを終えたらサインインする
Dify画面2.png

サインインできました!
画面はこんな感じ。
Dify画面3.png

LLMモデル設定

OpenAIで無料プランの場合はAPI Key登録時にエラーが出ました

今回はOpenAIのモデルgpt-3.5-turbo-16k-0613を使います。
事前にOpenAIでAPI Keyを取得しておきます。

右上のアカウント>設定からモデルプロバイダーを選択し
使用するLLMモデルをセットアップします。
以下のようにモデルの右端に緑色のステータスが表示されていればOK
モデル設定.png

ワークフローを作る

「アプリを作成する」の最初から作成を選択してワークフローを作ってみます。
名前は何でもよいですが「検索くん」にしました。
自分の代わりにGoogle検索してくれるアプリです。
Dify画面4.png

初期配置されている「開始」モジュールを選択して
ユーザが質問入力できるようにinput変数を登録します。
Dify画面5.png

次にユーザが入力した内容を基にGoogle検索をしてくれるように「GoogleSearch」モジュールを追加します。
この時、SerpAPIキーが必要になりますのでGoogleアカウントを持っていればアカウント連携してサインアップしAPIキーを取得します。

入力変数には「開始」モジュールで登録したinputを選択し
Result typeをtextに設定します。

Dify画面8.png

次に、検索結果から推論するLLMモジュールを追加
モデルは事前にモデルプロバイダーで設定したOpenAIのgpt-3.5-turbo-16k-0613を選択します。
SYSTEMプロンプトには入力変数inputとGoogle検索結果のtextを入力します。
Dify画面9.png

最後に「終了」モジュールを追加
デフォルトだとJSONで結果が返ってきてしまうので、出力変数にLLM/textを設定します。

Dify画面10.png

これでワークフロー(アプリの)の作成が完了です。

テスト実行

画面上部にある「▷実行」を押してテストしてみます。
FF14のディレクターである吉田氏の肩書を聞いてみました。
実行テスト1.png

実行すると、ワークフローが流れて回答が出力されました。
合ってそうですw
実行テスト2.png

アプリを公開する

今回はローカル環境なので外部公開はできませんが
画面右上の「公開する」をクリックするとブラウザアクセス用のURLが生成されます。
http://localhost/workflow/xxxxxxxx

アプリ公開.png

初心者にはDPSがおすすめのようですね。
かわいい装備は白魔導士だけじゃないですが、まぁ言いたいことは分かりますw

最後に

サーバも要らずにアプリを簡単に作れちゃうので面白いですね。
使用するLLMモデルによって回答の精度は変わりますが、その分お金もかかるのでトレードオフです。
今回は代替検索してくれるアプリでしたが、学習データを登録してチャットボットを作ったり
いろんなことがDifyで出来るのでもっと試したいですね。

2
1
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
2
1