API 拡張
開発者はAPIエクステンションを通じてモジュールの機能を拡張できます。現在、以下のモジュールがサポートされています:
モデレーション
敏感内容の監査外部データツール
外部データツール
モジュールの機能を拡張する前に、APIと認証用のAPIキー(Difyが自動生成することも可能)を準備する必要があります。
対応するモジュール機能を開発するだけでなく、DifyがAPIを正しく呼び出せるよう、以下の仕様にも従う必要があります。
API仕様
Difyは以下の仕様に従ってインターフェースを呼び出します:
ヘッダー
Header | Value | Desc |
---|---|---|
Content-Type | application/json | リクエスト内容はJSON形式です。 |
Authorization | Bearer {api_key} | APIキーはトークン形式で送信されます。api_key を解析し、提供されたAPIキーと一致するか確認してください。 |
リクエストボディ
APIレスポンス
検証
DifyがAPIベースのエクステンションを設定する際、DifyはAPIエンドポイントにリクエストを送り、APIの有効性を確認します。
APIエンドポイントがpoint=ping
を受信した場合、インターフェースはresult=pong
を返す必要があります。具体的には次の通りです:
ヘッダー
リクエストボディ
API期待レスポンス
例
ここでは外部データツールを例にとり、地域に基づいて外部の天気情報を取得するシナリオを示します。
API例
ヘッダー
リクエストボディ
APIレスポンス
コード例
コードはPython FastAPIフレームワークに基づいています。
-
依存関係をインストールする
-
インターフェース仕様に従ってコードを書く
-
APIサービスを起動する。デフォルトポートは8000で、APIの完全なアドレスは:
http://127.0.0.1:8000/api/dify/receive
、設定されたAPIキーは123456
です。uvicorn main:app --reload --host 0.0.0.0
-
DifyにこのAPIを設定します。
- アプリでこのAPIエクステンションを選択します。
アプリのデバッグ時、Difyは設定されたAPIにリクエストを送り、以下の内容(例)を送信します:
APIレスポンスは以下の通りです:
ローカルデバッグ
Difyクラウド版は内網APIサービスにアクセスできないため、ローカルでAPIサービスをデバッグするために、Ngrokを使用してAPIサービスのエンドポイントをパブリックに公開し、クラウドでローカルコードをデバッグすることができます。操作手順は次の通りです:
-
https://ngrok.comの公式サイトにアクセスし、登録してNgrokファイルをダウンロードします。
-
ダウンロードが完了したら、ダウンロードディレクトリに移動し、以下の説明に従って圧縮ファイルを解凍し、初期化スクリプトを実行します。
-
-
ローカルAPIサービスのポートを確認します:
次に以下のコマンドを実行して開始します:
-
成功例は以下の通りです:
- Forwardingで示されるように、上の図では
https://177e-159-223-41-52.ngrok-free.app
(これは例のドメインです。自分のドメインに置き換えてください)がパブリックドメインとなります。
- 上記の例に従って、ローカルで既に起動しているサービスエンドポイントを公開し、コード例のインターフェース:
http://127.0.0.1:8000/api/dify/receive
をhttps://177e-159-223-41-52.ngrok-free.app/api/dify/receive
に置き換えます。
これで、このAPIエンドポイントはパブリックアクセス可能となります。これで、DifyでこのAPIエンドポイントを設定してローカルデバッグコードを実行できます。設定手順については、external-data-tool.mdを参照してください。
Cloudflare Workersを使用したAPIエクステンションのデプロイ
Cloudflare Workersを使用してAPIエクステンションをデプロイすることをお勧めします。Cloudflare Workersは簡単にパブリックアドレスを提供でき、無料で使用できます。
このページは役に立ちましたか?