Dify 三昧:【リリース情報】エージェントルーティング、ポータブルアプリ、ワークフロー可視化の新境地

はじめに

Dify をご利用・ご検討中の皆さん、10月も下旬に入り、秋も深まってまいりましたが、いかがお過ごしでしょうか?
ディーネットのよろず請負人、深見です。

Dify の最新バージョン、v1.18.0 が10月23日にリリースされました!今回のアップデートでは、エージェントのインテリジェンス強化、アプリのポータビリティ向上、ワークフローの実行状況の深い可視化など、多くの新機能と改善が導入されています。特に、エージェントがワークフローの次のステップを自律的に選択できるようになった点や、アプリを単一パッケージで簡単に移動できるようになった点は、Dify を活用したアプリケーション開発において大きな変化をもたらすでしょう。

ただし、今回のアップデートは本番適用前に確認すべき項目が多いリリースです。API・ワーカー・Agent Backend・Agent ランタイムの各イメージの同時アップグレード、ローカルサンドボックス認証トークンの設定(必須)、既存の PASSWORD_PEPPER 設定の維持、difyctl の再サインイン、ソースインストールでの Python 3.13 必須化など、見落とすとトラブルにつながるポイントがありますので、アップグレードガイドを必ずご確認ください。

Dify v1.80.0 リリース情報

New Features (新機能)

エージェントが次のステップを選択可能に

今回のリリースで最も注目すべき機能の一つは、エージェントがワークフロー内で次のステップを自律的に選択できるようになった点です。

  • 出力ルート (Output Routes): ワークフローエディタで「出力ルート」を有効にし、2つ以上の分岐とそれぞれの選択条件を定義して次のステップにつなぐことで、エージェントがリクエストを直接解決するか、特定の専門家に引き渡すかなどを決定できるようになります。選択されたルートは、読み取り専用の switch 出力で確認できます。これにより、より複雑で柔軟なエージェントベースのアプリケーション構築が可能になります。
    • ルートを無効にしている場合は、従来どおり通常の成功出力が使われます。
    • ルート有効時のエラー処理は「停止」または「失敗ブランチ」から選びます。ノード単位のデフォルト値によるエラー処理は利用できません。
  • Plain Agent v2 ノードのストリーミング: Plain Agent v2 ノードが、テキストを生成しながらストリーミング出力するようになりました。これにより、応答を待たずに生成中のテキストを順次確認でき、UX が向上します。なお、構造化された結果、ルーティングされた結果、およびデフォルト値によるエラー処理を使用しているノードはバッファリングされ、ストリーミングされません。

dify-038-01

ポータブルアプリパッケージ (.ifpkg) の導入

アプリとその関連リソースを単一の .ifpkg パッケージとして移動できるようになりました。アプリのエクスポートはデフォルトで .ifpkg 形式になります。

  • 単一パッケージでの持ち運び: ワークフローやチャットフローのパッケージには、インラインエージェント、スキル、および関連ファイルが含まれます。インポート時には、これらのリソースが移行先のワークスペースに再作成され、参照も自動的に再マッピングされます。アプリアイコン、サイト設定、ノードのプラグイン依存関係もエクスポートの対象で、不足しているリソースはインポート時に報告されます。
  • インポート・エクスポートの柔軟性: ファイルおよび URL からのインポートはパッケージと YAML の両方をサポートし、明示的な YAML エクスポートも引き続き利用可能です。これにより、アプリの共有や管理が非常に効率的になります。
  • エージェントのバージョン管理: エージェントのエクスポートで公開済みバージョンを指定できるほか、バージョンメニューから復元(Restore)も行えるようになりました。

dify-038-02

ネストされたワークフロー実行の可視化向上

ワークフローツールがネストされた実行をサポートし、実行履歴から子ワークフローの個々のステップを詳細に検査できるようになりました。

  • 詳細なトレース機能: 実行履歴からワークフローツールの呼び出しを開き、子ワークフローの個々のステップを詳細に確認できます。ネストされたツールは、調整された一時停止、再開、停止、ファイル出力を持つ子グラフとして実行されます。また、呼び出し元の実行時点のソースグラフが記録されるため、ツールを再公開しても実行中の処理には影響しません。
  • アクセス制御: ソースアプリの詳細はアクセスチェックによって保護されます。
  • ご注意: ネストされた実行の使用量やステップ数の合計は、特に一時停止や停止の後に、概算値になる場合があります。

dify-038-03

エージェントナレッジベース (ベータ版)

エージェント専用のナレッジスペースを作成し、ファイルの追加やソースとの接続、ドキュメント処理、メタデータ、検索トレース、品質評価などを一元的に管理できるようになりました。

  • KnowledgeFS: 新しい Knowledge Retrieval ノードとエージェント統合は、アクセス制御された KnowledgeFS スペースを共有します。従来のナレッジ(Classic Knowledge)も引き続き利用できます。
  • 展開要件: これはオプトイン統合であり、別のサービスと別のデータベースが必要です。展開要件については後述のアップグレードガイドで確認してください。なお、オプトインしても既存の Classic データセットがすべて自動的に移行されるわけではありません。
  • クラウド版での提供予定: 近日中に cloud.dify.ai でも利用可能になる予定です。

開発者向け機能強化: OpenAPI と difyctl

OpenAPI と新しい difyctl コマンドラインツールにより、アプリの構築と管理がさらに柔軟になりました。

  • difyctl: /openapi/v1 が公開するサーバーの操作カタログからコマンドを自動的に発見し、検索可能なヘルプを提供します。ワークフローやチャットフローの作成、DSL のインポート/エクスポート、設定、環境変数、公開、バージョン復元などをサポートします。
  • 並行編集保護: ドラフトハッシュにより、並行編集による上書きが防止されます。
  • スキルインストール: difyctl install skills <dir> コマンドで、エージェントが Dify アプリを構築するためのバンドルされたスキルをインストールできます。
  • 新規サインイン: 新しいクライアントを使用するには、再サインインが必要です。
  • 旧ルートの置き換え: 従来のモード共通ルート /openapi/v1/apps/{app_id}:run はモードごとの操作に置き換えられました。ハードコードされた v1 ルートではなく、カタログを参照してください。

その他の注目ポイント

  • リソースアクセストークン: ワークスペースオーナーが、選択したアプリやナレッジベースに紐づくトークンを発行できます(ワークスペース管理権限は付与されません)。設定画面の入口は NEXT_PUBLIC_ENABLE_ACCESS_TOKEN(デフォルト false)によるオプトインです。
  • Agent 実行トレーシング: Agent アプリや Workflow の Agent v2 ノードの実行ツリー(Agent・モデル・ツール)を、既存のトレーシングプロバイダーにエクスポートできます(オプトイン)。
  • OpenShell サンドボックスバックエンド: セルフホストの NVIDIA OpenShell ゲートウェイを Agent の実行基盤として利用できます(DIFY_AGENT_RUNTIME_BACKEND=openshell)。
  • サンドボックスからのプロンプト編集: dify-agent config prompt pull / push で、Agent のシステムプロンプトを取得・置換できます。

アップグレードガイド

Dify v1.18.0 へアップグレードする際は、以下の重要な点に注意し、必ずバックアップを最初に行ってください。

事前準備と互換性に関する注意点

  1. バックアップの実施:

    • データベース、ベクターストアデータ、アップロードファイル、エージェントスナップショット/ワークスペースストレージ、そしてすべてのデプロイシークレットおよび環境ファイルを、必ずバックアップしてください。
    • メンテナンスウィンドウを設け、シングルスタックアップグレードで行うことを推奨します。
  2. エージェントコンポーネントの同時アップグレード:

    • API、ワーカー、Agent Backend、および Agent ランタイムの各イメージを同時にアップグレードする必要があります。
    • Agent Backend の /runs エンドポイントは Composition v2 を受け入れ、v1 リクエストは拒否します。
    • 既存のセッションスナップショットは読み込み時に v2 に変換され、v2 として保存されます。古いランタイムでは新しく保存された v2 スナップショットを読み取ることができません。
    • Agent Backend への直接統合を行っている場合は、リクエスト形式を更新する必要があります。
    • 従来の Agent 専用 AskHuman ツールと、遅延再開(deferred resume)のパスは削除されました。過去の Agent フォームからは実行が再開されなくなります(共通の Workflow Human Input ノードは引き続きサポートされます)。
  3. ワークフローコンシューマの停止と移行:

    • 新しいバージョンのトラフィックを受け入れる前に、古いワークフローコンシューマ(レガシーワーカーやレジュームコンシューマ)を停止してください。
    • インフライト(実行中)のワークフローが完了するまで待機し、その後、新しいキャンセルガードをサポートするバージョンに置き換えてください。共有キューを、新しいキャンセルガードを持たない古いワーカーが処理してしまうことを防ぐためです。
  4. ローカルサンドボックストークンの設定:

    • 再起動前に、ローカルサンドボックスに高エントロピーの認証トークンを設定する必要があります。共有の Compose 補間ソースを通じて提供してください。
    • 1.17.1 ランタイムイメージは新しい --require-auth-token フラグをサポートしないため、1.18.0 に対応する Agent Backend と Local サンドボックスのイメージをデプロイしてください。
    • 環境変数名は DIFY_AGENT_LOCAL_SANDBOX_AUTH_TOKEN です(詳細は後述の「環境変数の変更点」を参照)。
  5. パスワードハッシュ設定の保持:

    • 既存のインストールで PASSWORD_PEPPER が設定されていない場合は、空のままにしてください。
    • アップグレード時に新しいペッパーを設定すると、透過的な移行は行われず、明示的なパスワードリセット計画が必要になります。
    • 設定済みのペッパーは、すべてのインスタンスで変更せずに維持し、データベースとともに復元してください。
  6. プロキシ境界の確認:

    • バンドルされている Nginx は X-Forwarded-For ヘッダーをクライアントの解決されたアドレスに置き換え、Compose は転送ヘッダー処理を有効にします。API への直接アクセスは、信頼できる呼び出し元に限定してください。
    • ロードバランサーや Cloudflare が Nginx の前に配置されている場合、信頼できるリアル IP 処理をそこで設定する必要があります。設定しない場合、訪問者がプロキシのレート制限バケットを共有する可能性があります。
  7. KnowledgeFS の有効化(オプトイン):

    • KnowledgeFS はデフォルトの Compose インストールでは無効になっています。
    • ローカルの Community Edition 開発では、明示的な「Community development opt-in」が必要です。
    • KnowledgeFS を有効にするには、専用のデータベースとマイグレーション、Capability v2 public verifier、Dify 署名キー、モデルプロファイル(埋め込み、推論、リランキング)、およびワークスペースのカットオーバーゲートを、トラフィックを流す前に設定する必要があります。
    • このオプションサービスは /health だけでなく /ready エンドポイントも通過する必要があります。
    • 標準の Dify API イメージには KnowledgeFS エンジンは含まれていません(オプションの engine-worker プロファイルで使用する別エンジンです)。公開されているデフォルトの KnowledgeFS API イメージは現在 amd64 のみです。
    • KnowledgeFS のデプロイとリカバリガイドに従ってください。
  8. Python 3.13 必須:

    • ソースインストールの場合、Python 3.13 が必須となります(Node.js 24.22.1 以降の 24.x 系、pnpm 12.10.1 も必要です)。

デプロイ手順(Docker Compose/ソース/difyctl)

ここからは、具体的なデプロイメント手順について説明します。

Docker Compose を使用する場合

1.18.0 のリリースイメージとタグが公開されたことを確認のうえ、旧スタックを正常停止し、リリースへ切り替えて、設定変更をマージしてから新スタックを起動します。

cd dify/docker
docker compose stop -t -1
git fetch --tags
git checkout 1.18.0
# ここで、必要な設定変更を既存の env ファイルへマージする
docker compose pull
docker compose up -d
  • 設定ファイルのマージ: 既存の env ファイル(docker/.env や docker/envs 配下のサービス別ファイル)を上書きせず、新しいバージョンの変更点を取り込んでください。
    • 特に PASSWORD_PEPPER は既存の値を保持するように注意してください。
    • Agent Local サンドボックスの認証トークン DIFY_AGENT_LOCAL_SANDBOX_AUTH_TOKEN を、docker/.env、実行シェルの環境変数、または --env-file のいずれかで設定してください。Agent Backend と shellctl が同じシークレットを受け取る必要があるため、サービス別 env ファイルにのみ設定しても不十分です。
  • マイグレーション: API 起動時のデータベースマイグレーションは有効(MIGRATION_ENABLED=true)のままにするか、新しいワーカーを起動する前に、管理下のマイグレーション手順で実行してください。
  • Weaviate: 同梱の Weaviate の更新は 1.39 系内のパッチ更新(1.39.2 → 1.39.13)です。Weaviate 1.27 を使用している古いバージョンから上げる場合は、先に 1.17.1 の段階的な Weaviate アップグレードを完了してください。

ソースからインストールする場合

API は Python 3.13、Node.js は 24.22.1 以降(24.x 系)、pnpm は 12.10.1 を使用します。リポジトリのルートで、ロック済み依存関係を更新し、データベースマイグレーションを適用します。

uv sync --project api --frozen
uv run --directory api flask db upgrade
pnpm install --frozen-lockfile

その後、Web アプリケーションをリビルドし、API、ワーカー、スケジューラー、Agent の各サービスを同じリリースから再起動してください。Agent Backend を別途ソースからデプロイしている場合は、そのロック済みの server 依存関係も更新します。

difyctl クライアントについて

  • クライアントの更新: 1.18.0 に対応するクライアントをインストールしてください。v2 実装は、v1 のログイン状態を引き継ぎません。
  • 新しいクライアントへのサインイン: 既存のセッションは再利用されないため、再度サインインが必要です。
    difyctl login --server https://your-dify.example.com
    difyctl help
  • スクリプトの見直し: サーバーから検出される現行のコマンド体系に合わせてスクリプトを更新してください。インストール済みのエージェントスキルは difyctl install skills <dir> で更新できます。

環境変数の変更点

必須または挙動が変わるもの

設定 1.18.0 での変更
DIFY_AGENT_LOCAL_SANDBOX_AUTH_TOKEN ローカルランタイムを有効にする場合は必須(空不可)。Compose では docker/.env、実行シェル、--env-file のいずれかに設定します。
SHELLCTL_ENABLE_PATH_ISOLATION 有効時、Landlock のエラーでスクリプトを継続せず実行を停止します。
PASSWORD_PEPPER 新規追加(デフォルトは空)。既存の未設定環境では空のままにしてログインを維持します。
GRAPH_ENGINE_MAX_WORKERS エンジンインスタンスあたりの固定ワーカー数になりました(デフォルト 10)。
RESPECT_XFORWARD_HEADERS_ENABLED 単体 API のデフォルトは false のまま。同梱 Compose では Nginx 配下の API/WebSocket で明示的に有効化されます。
OAUTH_TTL_DAYS 起動時にアプリケーション設定経由で読み込まれます(デフォルト 14、範囲 1〜365 日)。

削除されたもの

  • GRAPH_ENGINE_MIN_WORKERS、GRAPH_ENGINE_SCALE_UP_THRESHOLD、GRAPH_ENGINE_SCALE_DOWN_IDLE_TIME は使用されなくなりました。
  • 旧 KnowledgeFS 実装の KNOWLEDGE_FS_JWT_SECRET と SSE タイムアウト設定は再利用しないでください。
  • Console のフィードバックエクスポート API GET /console/api/apps/{app_id}/feedbacks/export は削除されました。直接呼び出している連携は更新が必要です。
  • UV_CACHE_DIR は共有のデフォルト値を持たなくなりました。

その他のオプション設定(Agent トレーシング、E2B 使用量計測、OpenShell、KnowledgeFS など)は、公式リリースノートの環境変数の表をご確認ください。

データベースマイグレーション

1.17.1 からのアップグレードでは、22 件のスキーマ/データのマイグレーションリビジョンと 2 件のヘッドマージが適用され、最終的に b9d3f7a5c102 に到達します。

  • 新しいワーカーを起動する前に、マイグレーションチェーンを最後まで適用してください。
  • PostgreSQL では、タスク ID のインデックスは並行作成されますが、workflow_runs をスキャンして I/O を消費します。また、カラム追加時に短時間のスキーマロックが発生します。
  • KnowledgeFS には別のエンジンデータベースとマイグレーション手順があります。
  • KnowledgeFS 専用の API キーが制限されない状態になるダウングレードは、それらのキーを API 経由で失効させるまでブロックされます。ロールバックに備えてバックアップを保持してください。

アップグレード後に復旧が必要になる可能性のあるデータ

  • 公開済みトリガー: ドラフト同期の修正は、アップグレード前にすでに削除されたサブスクリプションを修復しません。不足しているサブスクリプションを再バインドし、必要に応じて影響を受けたワークフローを再公開してください。
  • ドキュメント抽出: 既存ドキュメントに抽出処理の修正を反映するには、再インポート/再インデックスが必要です。
  • 組み込みドキュメントメタデータ: 組み込みフィールドの切り替えで書き換えられるのは、有効かつ未アーカイブで、インデックス作成が完了したドキュメントのみです。完全なバックフィルは今回のリリースには含まれません。

Full Change List (重要な変更点のピックアップ)

今回のリリースでは、上記以外にも多くの改善やバグ修正が含まれています。特にセキュリティ関連のうち、運用に影響しやすいものを抜粋します。

  • パスワードハッシュ: PASSWORD_PEPPER の設定・変更・削除は、既存のパスワードハッシュを無効にします。
  • プラグインインストール権限: 明示的なポリシーが保存されていない場合、プラグインのインストールはワークスペースのオーナーと管理者に限定されます(既存の保存済みポリシーはそのまま有効です)。
  • ローカルサンドボックス: 空の認証トークンを拒否します。パス分離有効時に Landlock の設定が失敗した場合は、ユーザーコードを実行する前に終了コード 125 で中断します。
  • エラーメッセージ: API と Webhook の失敗時は、内部の例外テキストではなく固定の公開メッセージを返します。
  • ナレッジの共有デフォルト: RBAC 有効環境では、新規ナレッジベースにワークスペースの全メンバーが自動で含まれなくなりました。
  • 依存関係: 同梱の Weaviate を 1.39.2 から 1.39.13 へ更新したほか、Next.js などのセキュリティアップデートが含まれます。

詳細については、以下の公式変更ログをご確認ください。


終わりに

以上、Dify v1.18.0 のリリース情報をお届けしました。

Dify v1.18.0 は、Dify をより強力で使いやすいプラットフォームへと進化させるリリースです。エージェントが状況に応じて次のステップを選べる「出力ルート(エージェントルーティング)」、アプリとその関連リソースを一括で持ち運べる「ポータブルアプリパッケージ(.ifpkg)」、そして子ワークフローの実行内容まで追える「ネストされたワークフローの可視化」が加わりました。特にエージェント機能の強化は、今後の AI アプリケーション開発に大きな影響を与えるでしょう。さらに、オプトインのエージェントナレッジベース(ベータ)や、開発者向け CLI difyctl の刷新により、アプリの構築・運用の選択肢も広がっています。

一方で、アップグレードに際しての注意点が多いリリースでもあります。実際に作業される際は、次の点を改めてご確認ください。

  • 作業前にデータベースやシークレットを含めてバックアップを取得する
  • API・ワーカー・Agent Backend・Agent ランタイムの各イメージを同時にアップグレードする
  • ローカルサンドボックスの認証トークン(DIFY_AGENT_LOCAL_SANDBOX_AUTH_TOKEN)を必ず設定する
  • 既存の PASSWORD_PEPPER 設定は変更せず維持する(未設定の環境では空のまま)
  • difyctl は新しいクライアントに入れ替えて再サインインする
  • KnowledgeFS は別サービス・別データベースが必要なオプトイン機能のため、導入は十分に検証してから行う

これらを押さえたうえで新機能を活用することで、より高度で効率的な AI アプリケーション開発につながるはずです。ぜひ、最新版の Dify v1.18.0 をお試しください!なお、本記事は公式リリースノートの要点をまとめたものですので、実際のアップグレード前には、必ず公式のリリースノートもあわせてご確認ください。

次回も Dify の最新情報をお届けしていきますので、引き続き「Dify 三昧」をよろしくお願いいたします。


参考リンク


本記事は Dify v1.18.0 のリリースノートを基に作成されています。最新情報は公式サイトおよび GitHub リポジトリをご確認ください。

返信を残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

CAPTCHA