1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【最新LLM情報/Dify】オープンソースLLM開発プラットフォーム

Last updated at Posted at 2024-05-06

みなさんこんにちは。最近話題となっているDifyというツールについて調べてみました。

Difyとは

オープンソースの大規模言語モデル(LLM)アプリケーション開発プラットフォームで、Backend-as-a-ServiceとLLMOpsの概念が組み合わさったソフトウェアです。通常LLMの開発には複雑なコード作成が必要になりますが、技術者ではない開発者でも、本番レベルの生成AIアプリケーションをすばやく構築できるのが一番の特徴になります。

Difyを使うと何ができるの?

  • ノーコードでAIアプリケーションを直感的に構築
  • 50以上の組み込みツールを使ったAIエージェントを数クリックで構築できる
  • GPT-4、Claude、Llama3など、アプリケーションの作成に使うことができる多様なLLMモデルをサポート
  • RAG(Retrieval-Augmented Generation)エンジンにより、関連情報の検索・取得と高品質な回答生成が可能
  • ワークフロー機能を使用し、グラフィカルな処理フローの設計が可能

サポートされる主要LLMモデルのプロバイダーとモデル

  • OpenAI
    • gpt3.5-turbo
    • gpt4
    • gpt4-Turbo
    • gpt4-vision
  • Azure OpenAI
  • Anthropic
    • claude-opus
    • claude-sonnet
    • claude-haiku
  • Google
    • gemini-1.5-pro
    • gemini-pro
    • gemini-pro-vision
  • Cohere
    • command-r
    • command-r-plus
  • Bedrock
    • titan-text-g1
  • Hugging Face

※上記に記載がない項目についても、たくさんのモデルをサポートしています
※LLMモデルについては、更新が早いためドキュメント化はされていません
※LLMプロバイダについては下記ページを参照のこと

利用方法

Difyを使うには、以下の2つの方法があります。

  • クラウド版のDify Cloudを利用する方法
    • セットアップ不要ですぐに使えるクラウドサービス。プランによって異なるが、ストレージ容量やチームで使うかどうかなどで、利用できるプランが変わる
  • セルフホスティング(ローカル環境)でDifyを利用する
    • Dockerを使ってローカル環境にDifyをインストールして利用する
    • DockerDesktopが動作する環境、DockerVMが2vCPU、8GBメモリを利用できる環境

※料金ページについては、下記を参照ください

※ローカル環境のスペックについては、下記のローカル環境へのセットアップの項にあるURLを参照ください

ローカル環境へのセットアップ

セットアップ環境

  • linuxの場合
    • Docker 19.03 以降がインストールされていること
    • Docker Compose 1.25.1 以降がインストールされていること
    • Python 3.10 の環境が動作すること(手順ではAnacondaを利用)
    • Node.js v18.x がインストールされていること
    • NPM version 8.x.x がインストールされていること

※基本的には下記手順に沿って設定作業を実施しています

1. dockerタスク実行

レポジトリからファイルを取得して、dockerタスクを起動

git clone https://github.com/langgenius/dify.git

cd docker
docker compose -f docker-compose.middleware.yaml up -d

2. APIサーバの構築

Python環境の構築

anacondaでpython環境を新規作成

conda create --name dify python=3.10

※以前作成した環境に何か作業を行う場合は以下のコマンドを使用

conda activate dify
環境変数の設定

APIフォルダへ移動し、作成した秘密鍵を.envファイルに保存する

※openssl rand -base64 42の出力結果をと置き換えて次のコマンドを実行する

cd api

openssl rand -base64 42
sed -i 's/SECRET_KEY=.*/SECRET_KEY=<your_value>/' .env
Python環境の設定

依存関係のモジュールをセットアップする

pip install -r requirements.txt
APIサーバの起動
flask db upgrade
flask run --host 0.0.0.0 --port=5001 --debug

3. フロントエンドサーバの構築

npmのインストール

下記コマンドでインストールする

cd web
npm install
環境変数の設定

必要に応じて環境変数を設定します

  • NEXT_PUBLIC_DEPLOY_ENV
    • 開発環境の場合は "DEVELOPMENT"、本番環境の場合は "PRODUCTION" に設定
  • NEXT_PUBLIC_EDITION
    • セルフホスティングの場合は "SELF_HOSTED"、クラウドサービスを使用する場合は "CLOUD" に設定
  • NEXT_PUBLIC_API_PREFIX
    • コンソールアプリケーションのベースURLを設定します
    • APIやWebアプリのドメインがコンソールのドメインと異なる場合は、WEBサービスのコンソールベースURLを指定
    • 例) http://cloud.dify.ai/console/api
  • NEXT_PUBLIC_PUBLIC_API_PREFIX
    • WebアプリのURLを設定します。WebアプリのドメインがコンソールやAPIのドメインと異なる場合は、WEBサービスのWebアプリベースURLを指定
    • 例) http://udify.app/api
  • NEXT_PUBLIC_SENTRY_DSN
    • Sentryを使用する場合は、SentryのDSN(Data Source Name)を設定
    • Sentryを使用しない場合は空のまま
  • NEXT_PUBLIC_SENTRY_ORG
    • Sentryを使用する場合は、Sentryのオーガニゼーション名を設定
    • Sentryを使用しない場合は空のまま
  • NEXT_PUBLIC_SENTRY_PROJECT
    • Sentryを使用する場合は、Sentryのプロジェクト名を設定
    • Sentryを使用しない場合は空のまま
# For production release, change this to PRODUCTION
NEXT_PUBLIC_DEPLOY_ENV=DEVELOPMENT
# The deployment edition, SELF_HOSTED or CLOUD
NEXT_PUBLIC_EDITION=SELF_HOSTED
# The base URL of console application, refers to the Console base URL of WEB service if console domain is
# different from api or web app domain.
# example: http://cloud.dify.ai/console/api
NEXT_PUBLIC_API_PREFIX=http://localhost:5001/console/api
# The URL for Web APP, refers to the Web App base URL of WEB service if web app domain is different from
# console or api domain.
# example: http://udify.app/api
NEXT_PUBLIC_PUBLIC_API_PREFIX=http://localhost:5001/api

# SENTRY
NEXT_PUBLIC_SENTRY_DSN=
NEXT_PUBLIC_SENTRY_ORG=
NEXT_PUBLIC_SENTRY_PROJECT=
フロントエンドサーバの起動

コードをビルドし、Web サービスを開始する

npm run build
npm run start

アプリケーション実行

difyにログインすると下記のような画面が表示されます。ここでオリジナルのアプリケーションを構築するか、すでに登録してあるアプリケーションを動かすこともできます。

image.png

登録済みアプリケーションは探索の画面から探すことができます。
image.png

余談な話ですが・・

レポジトリからファイルを取得して、以下のコマンドでdockerタスクを起動するだけでも動作しました。
現実的にはこちらの方がよさそうですネ。。

git clone https://github.com/langgenius/dify.git

cd docker
docker compose up -d

まとめ

軽く触ってみた感じ、色々出来そうな雰囲気があります。自分で開発するよりは、すでにアプリケーションとして登録されているものを使う方がより早く自分がやりたいことをできそうですね。次はもう少しアプリケーションを触ってみて、その内容をまとめられればと思います。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?