AIアプリが簡単に作れるDifyに入門してみる


あらためて言うまでもなく、AIが生活の中に浸透しています。 私も、ChatGPTなりCommand R+なり使っていたり、コーディングにはGitHub Copilotを使っていたりしますが、 ありものを使うだけで自身で何かを作ったことは無かったので、AIを組み込んだアプリを簡単に作れるというDifyを使ってみました。

Difyとは

DifyはLangGenius社が開発するAIアプリを開発するプラットフォームです。 各種LLMを組み込んだアプリケーションを開発したり、実行するプラットフォームを提供します。

簡単なアプリを今回作ってみましたが、 いわゆるノーコード/ローコードで簡単にアプリを開発することができました。

SaaS版、自前の環境で動かせるコンテナイメージなど複数の提供形態があります。

インストール

今回は、Bedrockと連携したかったので、AWS上に構築してみました。

本番利用を想定するならEKS上にデプロイして、データベースやセッション管理にはAuroraやElastiCacheを利用するところですが、 今回はお試し利用ということで、提供されているDocker Composeを利用してデプロイします。

インストール先のEC2インスタンスを用意します。 最小スペックが2CPU、4GB RAMということなので、今回は少し余裕を持たせてt3.large (2vCPU, 8GB RAM)としました。

公式のコンテナイメージが提供されているので、 Dockerを導入するだけで簡単にインストール可能です。

# Dockerのインストール
sudo dnf update
sudo dnf install docker -y
sudo dnf systemctl enable docker
sudo dnf systemctl start docker
sudo dnf systemctl status docker

# Docker Composeのインストール
DOCKER_CONFIG=${DOCKER_CONFIG:-/usr/local/lib/docker}
sudo mkdir -p $DOCKER_CONFIG/cli-plugins
sudo curl -SL https://github.com/docker/compose/releases/download/v2.35.1/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
sudo chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
docker compose version

# Difyの起動
sudo dnf install git -y
git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .env
vim .env # 必要な箇所を修正
sudo docker compose up

なお、 .env の中のパラメータにタイムゾーン設定があり、デフォルトでは UTC が設定されているのですが、 日本の時間に合わせたい場合は、 JST ではなく、 Asia/Tokyo を指定するので注意しましょう。

Docker Composeが起動すると、 0.0.0.0:80 にバインドされているので、 外部からでも http://<EC2インスタンスのIPアドレス> にブラウザから開くとDifyのコンソールにアクセスできます。

言うまでもないですが、本番用途で利用する場合は、httpsにしたりアクセス経路を必要十分に絞るなどをしたほうがよいでしょう。

初回アクセス時には、ユーザ登録の画面が出ます。 そこで登録したユーザでログインすることが可能です。

いくつかアプリを作って試してみる

導入が済んだので、いくつかアプリを作ってみました。

まず、各種LLMの呼び出しですが、各種モデルプロバイダを呼び出すモジュールがあらかじめ用意されているので、 これらを選んで導入、APIキーなどを設定するだけでLLMモデルを実行することができます。

今回は、GeminiとBedrockを利用してみました。 Bedrockの場合は、AWS上で構築していればアクセスキー、シークレットキーを使わなくても インスタンスロールに必要なIAMポリシーをアタッチしておくだけで呼び出し可能で簡単です。

AIアプリケーションを作る上では、 最初からチャットボットやワークフローなどのひな形が用意されているので、 これを用いることでGUIで各種設定ができます。

また、最近のAIアプリらしく、アプリの設定自体をAIがブラッシュアップする機能が搭載されているので、 こんなアプリが作りたいな〜というのをインプットして出てきた結果をブラッシュアップする、 というやり方で簡単に生成することができました。

また、ワークフロー、チャットフローにおいては、 LLMとの対話だけでなく、HTTPリクエストのような定型的な処理もできるため、 Webサイトの情報を取得する、APIをコールするというような作業は、 AIが解釈した予想しづらい動きではなく確実に実行することが可能です。

作ってみたもの

そんなわけで数十分ぐらいで2種類のAIアプリを作ることができました。

  • ユーザが入力したURLを受け取り、その内容を採点してくれるアプリ

HTTPのリクエスト処理や、コンテンツだけの取得といった処理は、 Dify側でやってくれるので、取得したBody部分だけをLLMに渡して処理するだけとノーコードで動かせます。

  • 大喜利の回答を複数のLLMに投げ、イチオシのものを回答してくれる

マルチエージェントで処理するものを作ってみたくてやってみました。 プロンプトをそんなに練ってないので、回答がおもしろいかというとそうでもないですが、 複数のLLMと連携して処理をおこなうのも簡単にできてしまい、さすがだなという印象。

まとめ

今回は、今さらながらDifyを使ってみたのでそのメモとなります。

騒がれていたときには、正直この辺のジャンルに興味がなかったので、 ちゃんと調べてはなかったのですが、使ってみるとまあ騒がれてた理由もわかるな、という印象です。

今は、MCPが一大ブームとなっており、Difyも連携ができるので、 いろいろなところで、Agentic AIが騒がれはじめている昨今、 このような形で簡単にAIを活用するアプリケーションが作れるプラットフォームというのは重宝されると思います。


comments powered by Disqus