1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

作成日:2025年3月22日(土)

1.はじめに

近年、生成AIの発展により、多くの企業がAIを活用したビジネス変革を模索しています。しかし、AIアプリケーションの開発には専門的な知識やスキルが必要とされ、その恩恵を受けられる人材は限られていました。

私の会社では、AIの民主化を重要な経営課題と位置づけ、非エンジニアでも容易にAIアプリケーションを開発できる環境の整備を進めてきました。その取り組みの一環として、ノーコードチャットボット開発プラットフォーム「Dify」を導入し、社内での活用を推進しています。

このたび、Difyの最新バージョンv1.0.0がリリースされ、より高度な機能と使いやすさが実現されました。本記事では、v1.0.0へのアップグレードの意義と手順について解説し、非エンジニアの方々がより効果的にAI開発に取り組めるよう、その道筋を示していきます。

2.Dify-v1.0.0とは

Dify-v1.0.0は、2024年3月にリリースされた最新バージョンです。このバージョンでは、LLMのオーケストレーション機能が強化され、より柔軟なAIアプリケーションの構築が可能になりました。また、UIの刷新やセキュリティの向上など、多くの改善が施されています。

特筆すべき新機能として、プラグインシステムの導入があります。このプラグインシステムにより、開発者は独自の機能拡張を作成し、Difyプラットフォームに統合することができるようになりました。これにより、カスタムツールの開発やサードパーティサービスとの連携が容易になり、より多様なAIアプリケーションの開発が可能となっています。

3.バージョンアップ計画

Difyのバージョン0.15から1.1への直接アップグレードはできません。そのため、まずバージョン1.0.0へアップグレードする必要があります。

以下が私の環境でのバージョンアップ手順です。

dify-upgrade-path.png

4.GitHub公式のリリースノートに注意

Dify-v1.0.0へのバージョンアップ手順はlanggenius/difyRelease/1.0.0に記載されていますが、情報が不十分なため、その手順だけでは正しくアップグレードできません。

Difyのドキュメントにある「コミュニティ版を v1.0.0 に移行する」ページを参照してバージョンアップすることを推奨します。

Release/1.0.0に記載されていない重要な注意点

  • 最新版のfetch
    git fetch originコマンドをgit checkout 1.0.0の前に実行する必要があります。このコマンドを実行しないと、ローカルリポジトリに1.0.0のタグが存在せず、checkoutに失敗します。
git fetch origin
git checkout 1.0.0 
  • .envファイルの再作成
    .envファイルの再作成は、v1.0.0に特有の要件ではありませんが、.env.exampleが定期的に更新されるため、最新の.env.exampleから.envを新しく作成することをお勧めします。
    企業プロキシなどで.envファイルをカスタマイズしている場合は、その設定を新しい.envファイルに反映してください。
mv .env .env_250322_bak
cp -p .env.example .env
  • docker-compose.override.yamlの整合性確認について
    docker-compose.yamlファイルを直接修正した場合、Difyのバージョンアップ時のgit pullで毎回コンフリクトが発生してしまいます。この問題を回避するため、多くのユーザーはdocker-compose.override.yamlでオーバーライドする方法を採用しています。docker-compose.yamlは頻繁に更新されるため、override.yamlとの整合性を必ず確認してください。
    なお、docker-compose.yamlの詳細については、@TKDSさんの「docker compose override入門」をご参照ください。
  • データマイグレーションツールの実行環境について
    Dify-1.0.0には各種データマイグレーションツールが同梱されていますが、Release/1.0.0には実行環境の記載がありませんでした。「コミュニティ版を v1.0.0 に移行する」を参照することで、これが明確になりました。extract-plugins —workers=20、install-plugins —workers=2、migrate-data-for-pluginの各ツールは、docker-api-1コンテナ内で実行する必要があります。実行手順としては、まずdocker compose up -dでDifyを起動し、その後docker exec -it docker-api-1 bashコマンドでdocker-api-1コンテナ内のbashを起動して実行します。
[root@localmotion docker]# docker compose -f docker-compose.yaml up -d
[root@localmotion docker]# docker exec -it docker-api-1 bash

root@b2f93e7305c8:/app/api# poetry run flask extract-plugins --workers=20
root@b2f93e7305c8:/app/api#
root@b2f93e7305c8:/app/api# cat plugins.jsonl
{"tenant_id": "1a551d58-5fc9-44cf-b4fd-3825b05c5880", "plugins": ["langgenius/openai", "langgenius/google", "langgenius/azure_openai", "langgenius/openrouter"]}
root@b2f93e7305c8:/app/api#
root@b2f93e7305c8:/app/api# poetry run flask install-plugins --workers=2
2025-03-21 20:21:56.151 INFO [MainThread] [utils.py:162] - NumExpr defaulting to 4 threads.
2025-03-21 20:21:59.797 INFO [MainThread] [_client.py:1038] - HTTP Request: GET https://raw.githubusercontent.com/BerriAI/litellm/main/model_prices_and_context_window.json "HTTP/1.1 200 OK"
Input file [plugins.jsonl]:
Output file [installed_plugins.jsonl]:
Starting install plugins.
2025-03-21 20:22:07.983 INFO [MainThread] [plugin_migration.py:304] - Extracting unique plugins from plugins.jsonl
 25%|███████████████████████████████▎                                                                                           100%|█████████████████████████████████████████████████████████████████████████████ 100%|█████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████| 4/4 [00:01<00:00,  3.39it/s]
2025-03-21 20:22:09.182 INFO [MainThread] [plugin_migration.py:342] - Installing 4 plugin instances for fake tenant 41503b334b3a4987b8d63f5aad3d8fc7
2025-03-21 20:22:10.438 INFO [ThreadPoolExecutor-4_2] [_client.py:1038] - HTTP Request: GET https://marketplace.dify.ai/api/v1/plugins/download?unique_identifier=langgenius/openai:0.0.13@9caa0421b5519db036aaccdbf1980d1071550767d6c59e9d9388dd386a92e9f6 "HTTP/1.1 200 OK"
2025-03-21 20:22:10.453 INFO [ThreadPoolExecutor-4_1] [_client.py:1038] - HTTP Request: GET https://marketplace.dify.ai/api/v1/plugins/download?unique_identifier=langgenius/google:0.0.8@3efcf55ffeef9d0f77715e0afb23534952ae0cb385c051d0637e86d71199d1a6 "HTTP/1.1 200 OK"
2025-03-21 20:22:10.459 INFO [ThreadPoolExecutor-4_3] [_client.py:1038] - HTTP Request: GET https://marketplace.dify.ai/api/v1/plugins/download?unique_identifier=langgenius/openrouter:0.0.5@55ddb36a03717ec8c10945eca203f066ef53d8ab692a17050fdc730000ba1e0a "HTTP/1.1 200 OK"
2025-03-21 20:22:10.470 INFO [ThreadPoolExecutor-4_0] [_client.py:1038] - HTTP Request: GET https://marketplace.dify.ai/api/v1/plugins/download?unique_identifier=langgenius/azure_openai:0.0.10@6dd624f6fe6e7ac3bae02890e42be143aab0dd461fe1dff94731a98343ff36f6 "HTTP/1.1 200 OK"
2025-03-21 20:23:04.030 INFO [ThreadPoolExecutor-3_0] [plugin_migration.py:351] - Installing 4 plugins for tenant 1a551d58-5fc9-44cf-b4fd-3825b05c5880
2025-03-21 20:23:04.090 INFO [MainThread] [plugin_migration.py:400] - Uninstall plugins
Install plugins completed.

root@b2f93e7305c8:/app/api# poetry run flask migrate-data-for-plugin
2025-03-21 20:23:18.072 INFO [MainThread] [utils.py:162] - NumExpr defaulting to 4 threads.
2025-03-21 20:23:21.857 INFO [MainThread] [_client.py:1038] - HTTP Request: GET https://raw.githubusercontent.com/BerriAI/litellm/main/model_prices_and_context_window.json "HTTP/1.1 200 OK"
Starting migrate data for plugin.
Migrating [providers] data for plugin
...
[1] Migrated [tool_builtin_providers] 11af3008-9a7a-42ef-97e7-88e923ee966e (google)
Migrate [tool_builtin_providers] data for plugin completed, total: 1
Migrate data for plugin completed.

※プロンプトが「root@b2f93e7305c8」になっている部分がdocker-api-1コンテナ内での作業です

※extract-pluginsコマンドで生成される「plugins.jsonl」ファイルは、poetry run flask install-plugins --workers=2コマンドがプロキシ環境下で失敗するのと、後述するプロキシ環境下でDify Marketplaceにアクセスできない問題があるため、catコマンドで内容を表示して控えておくことをお勧めします。

Dify-1.0.0では大規模言語モデルや今まで「ツール」だったものがDify Marketplaceに移行されているため、プロキシ問題でDify Marketplaceにアクセスできないのは困りました。
回避策はあります。

私の環境はプロキシを使用していませんが、plugins.jsonlのフォーマットは以下のような構造(整形済み)となっています。

{
    "tenant_id": "1a551d58-5fc9-44cf-b4fd-3825b05c5880",
    "plugins": [
        "langgenius/openai",
        "langgenius/google",
        "langgenius/azure_openai",
        "langgenius/openrouter"
    ]
}

5.Dify-1.0.0の動作確認

バージョンアップとデータマイグレーションの完了後、DifyのURLにアクセスして、バージョンが正しく1.0.0に更新されていることを確認してください。
ConfirmDifyVersion.png

6.Dify-1.1.2へのバージョンアップ

バージョン1.0.0へのアップグレード完了後は、通常のアップグレード手順に従って最新版へ更新できます。

私の環境では、0.15.2から1.0.0、1.1.1へと段階的にアップグレードし、2025年3月22日にリリースされた1.1.2へ更新しました。

バージョンアップ方法はlanggenius/difyRelease/1.1.2を参照してください。

Docker Composeデプロイメントの手順

  1. カスタマイズしたdocker-compose YAMLファイルのバックアップ(任意)

    cd docker
    cp docker-compose.yaml docker-compose.yaml.$(date +%s).bak
    
  2. メインブランチから最新のコードを取得

    git checkout main
    git pull origin main
    
  3. サービスの停止(dockerディレクトリで実行)

    docker compose down
    
  4. データのバックアップ

    tar -cvf volumes-$(date +%s).tgz volumes
    
  5. サービスのアップグレードdocker compose up -d

6.Dify-1.1.1の問題

個人環境ではあまり問題は発生していませんが、企業プロキシがある会社環境では問題が発生していますので、少しまとめておきます。

No 環境 問題 関連Issues 備考
1 個人/会社 Azure DALL-E(0.0,.2)でDall-E3の認証が’base64’ is not definedエラーで認証できない(*1) OpenAI版は動きます。
2 会社 Dify Marketplaceに接続できるがmarketplace.dify.aiがSSL証明書エラーとなりダウンロードインストールできない
3 会社 プラグインインストール時に”Expecting value: line 1 column 1 (char 0)"エラーが発生してインストールできない #14608
#15449
NO_PROXYで対策可能
4 会社 Google Search、Perplexityプラグインがプロキシを越えられない #14621

(*1)実際のエラー
base64isnotdefined.png

7.Dify-1.1.1の問題の回避策

今、発見できている問題は大きく4つです。回避策があるものは回避策を記載します。

No 環境 問題 回避策
1 個人/会社 Azure DALL-E(0.0,.2)でDall-E3の認証が’base64’ is not definedエラーで認証できない OpenAI DALL-Eを使う
それ以外回避策なし
2 会社 Dify Marketplaceに接続できるがmarketplace.dify.aiがSSL証明書エラーとなりダウンロードインストールできない 対策(#14608#15449問題)をしたのち、プラグインをDifyの[プラグインをインストールする]→[ローカルパッケージファイル]から手動インストール
3 会社 プラグインインストール時に”Expecting value: line 1 column 1 (char 0)"エラーが発生してインストールできない 同上
4 会社 Google Search、Perplexityプラグインがプロキシを越えられない 回避策なし、PROXYに関して複数報告されているissuesの対策待ち

7.参考URL

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?