このドキュメントは AI によって自動翻訳されています。不正確な部分がある場合は、英語版 を参照してください。
前提条件
- エクスポート元のアプリと更新するアプリには、いずれもサービス API アクセスが必要です。
-
アプリが 2 つの Dify サーバーにまたがる場合は、
DIFY_CONFIG_DIRでサーバーごとに別のフォルダを指定して、それぞれにサインインします。次に、それぞれのフォルダを指定してdifyctl versionを実行し、どちらのサーバーのバージョンも手元のdifyctlと一致していることを確認します。各コマンドは、対象のアプリがあるサーバーのフォルダを指定して実行します。
アプリの更新
ファイルから更新できるのは、Workflow アプリと Chatflow アプリだけです。ほかの種類のアプリは、代わりに ファイルからアプリを作成 してください。 更新しても、アプリの Web アプリ URL と API キーはそのまま残ります(ほかに残るもの)。インポートすると、まだ公開していない変更も含めて、アプリのドラフトが置き換わります。新しいワークフローは、公開した時点で有効になります。1
アプリ ID の確認
アプリを一覧表示し、更新するアプリと、ファイルのエクスポート元にするアプリの このページの例では、本番用のアプリ「Order Status」を更新します。使うのは、テスト済みのコピー「Order Status (staging)」からエクスポートしたファイルです:
id を控えておきます:2
ファイルの取得
DSL ファイル がすでに Git にある場合は、手順 3 に進みます。ない場合は、更新するアプリのテスト済みコピーなど、別のアプリからエクスポートします。まず、そのアプリで、タイトルなどの Web アプリ設定 を、ユーザーに見せる内容にしておきます。設定はファイルに含まれ、インポートするとすぐにユーザーに表示されます。次に、そのアプリで公開中のバージョンをエクスポートします。代わりに未公開の変更をエクスポートするには、
get console_app version で current: true と表示されるバージョンです:--workflow-id を省略します。エクスポートしたファイルでは、シークレットの値が空になります。更新するアプリのシークレットを、このアプリの値で置き換える場合に限り、--include-secret を付けます。この方法でエクスポートしたファイルには値が平文で含まれるため、Git や共有される場所には置かないでください。3
ファイルの検証
valid: true であれば、そのファイルはインポートできます。そうでない場合は、severity が error の各問題を、loc が示すノードとフィールドで修正し、もう一度検証します。severity が warning の問題があっても、インポートは止まりません。この問題は、認証情報やモデルが不足していることを示します。不足分は手順 5 で設定します。4
ファイルのインポート
アプリのドラフトハッシュを取得し、そのハッシュを指定してファイルをインポートします。その間に誰かがドラフトを変更した場合、ハッシュを指定したインポートは拒否されます。その人の変更が上書きされることはありません。アプリの名前と説明を残すには、インポートに成功すると、
--name と --description で現在の値を渡します。ファイルのアイコンや Web アプリ設定がこのアプリに合わない場合は、インポートの直後に 変更します。status: completed が返されます。警告がある場合は completed-with-warnings が返されるので、先に進む前に警告を読んでください。それ以外の結果になった場合は、次のように対処します:-
ハッシュを取得した後にドラフトが変更された場合、インポートは終了コード 1 で拒否され、
The draft changed after it was exported.と表示されます。 スタジオで、ドラフトの変更内容を確認します。- 変更を破棄してよい場合は、ハッシュを取得し直してインポートします。変更はインポートで置き換わります。
- 変更を残す必要がある場合は、ファイルかエクスポート元のアプリに同じ変更を加え、手順 2 からやり直します。
-
ファイルの DSL
versionがサーバーの対応範囲より新しい場合、statusはpendingになります。それでもインポートするには、confirm console_app dsl_importという ヒントを実行 します。 - ファイルが無効な場合、インポートは終了コード 1 で拒否されます。手順 3 と同じようにファイルを検証し、報告された問題を修正してから、もう一度インポートします。
5
不足している統合のインストール
ファイルで使われている統合がワークスペースになくても、検証とインポートは成功することがあります。不足している統合は、インポートから 10 分以内に一覧表示してください。10 分を過ぎると、空の一覧が返されます:マーケットプレイスから統合をインストールするには、その ヒントを実行 します。認証情報が必要な統合があれば、手順 7 でテストする前に、スタジオで追加しておきます。
6
環境変数の設定
インポートにより、アプリの環境変数にはファイルの値が設定されています。呼び出す API のアドレスなど、このアプリで別の値にすべきものを設定し直します。アプリの環境変数を一覧表示します。このアプリの値が残っているシークレットはアスタリスクの列で、空のシークレットは 変更が必要な値を、空のシークレットも含めてそれぞれ設定します。変数の
"" で表示されます:id を --env-id に指定します:7
ドラフトのテスト
典型的な入力で、ドラフトを 1 回実行します。テストでは、本番の API キーなど、このアプリの環境変数が使われます。実際に実行しても問題のない入力を選んでください。Chatflow アプリでは、代わりに
describe console_app を実行すると、アプリが受け取る入力 を確認できます。test console_app advanced_chat を使います。実行に成功すると status: ended に、失敗すると status: failed になります。失敗の理由は error.message で確認できます。ファイルかエクスポート元のアプリでワークフローを修正し、手順 2 からやり直します。DSL バージョンの新しいファイルがこのサーバーで動作しない場合は、代わりに 公開中のバージョンをドラフトに復元 します。そのバージョンはすでに公開中なので、公開する必要はありません。8
公開準備の確認
ready: true は、ドラフトが有効で、直近のテストに合格したことを表します。ready が false の場合は、ヒントに従って 対処し、もう一度確認します。公開する前に、changes で公開済みのバージョンとの違いを確認します。9
公開
更新のロールバック
公開した更新に問題がある場合は、アプリの公開済みバージョンを一覧表示し、以前のバージョンをid で指定してドラフトに復元してから公開します。そのバージョンは以前に公開されていたものなので、テストと公開準備の確認は省略できます。
復元すると、ドラフトが置き換わります。ドラフトを残すには、先に --workflow-id を付けずにエクスポートしておきます。
DSL ファイルからのアプリの作成
--app-id を付けずにファイルをインポートすると、ファイルと同じ種類のアプリが新しく作成されます。アプリ名は --name で指定します:
app_id を --app-id に指定します。
作成したアプリでは、Web アプリのタイトルに --name ではなくファイルの値が使われます。そのタイトルをユーザーに見せたくない場合は、変更してください。
Workflow アプリや Chatflow アプリを仕上げるには、アプリの更新 の手順 5 から 9 を行います。ほかの種類のアプリに必要なのは、手順 5 だけです。
アプリパッケージのインポート
スタジオからエクスポートした アプリパッケージ(.ifpkg)をインポートするには、パッケージを展開し、中にある app.yaml を DSL ファイルとして使います。アップロードしたアイコンは引き継がれません。インポート後に 設定し直してください。
Web アプリとアプリ情報の変更
タイトルなどの Web アプリ設定を変更するには、set webapp を使います。アプリの名前、説明、アイコンを変更するには、set app_info を使います。変更されるのは、渡したフィールドだけです。
difyctl help set webapp または difyctl help set app_info を実行して、対応するコマンドを確認します。