Cloudflare Workers を使用した API ツールのデプロイ

始めに

Dify API Extension は、アクセス可能な公開アドレスを API エンドポイントとして使用する必要があるため、API 拡張を公開アドレスにデプロイする必要があります。ここでは、Cloudflare ワーカーを使用して API 拡張をデプロイします。

まず、サンプル GitHub リポジトリarrow-up-right をクローンします。このリポジトリには、簡単な API 拡張が含まれており、これを基にして修正を行うことができます。

git clone https://github.com/crazywoola/dify-extension-workers.git
cp wrangler.toml.example wrangler.toml

次に、wrangler.toml ファイルを開き、namecompatibility_date をあなたのアプリ名と互換日付に変更します。

ここで注意が必要な設定は、vars 内の TOKEN です。Dify に API 拡張を追加する際に、このトークンを入力する必要があります。セキュリティ上の観点から、ランダムな文字列をトークンとして使用することをお勧めします。トークンをソースコードに直接書き込むのではなく、環境変数を使用してトークンを渡す方法を取るべきです。したがって、wrangler.toml をコードリポジトリにコミットしないでください。

name = "dify-extension-example"
compatibility_date = "2023-01-01"

[vars]
TOKEN = "bananaiscool"

この API 拡張は、ランダムなブレイキング・バッドの名言を返します。src/index.ts 内でこの API 拡張のロジックを変更することができます。この例は、サードパーティの API とやり取りする方法を示しています。

// ⬇️ ここにロジックを実装 ⬇️
// point === "app.external_data_tool.query"
// https://api.breakingbadquotes.xyz/v1/quotes
const count = params?.inputs?.count ?? 1;
const url = `https://api.breakingbadquotes.xyz/v1/quotes/${count}`;
const result = await fetch(url).then(res => res.text())
// ⬆️ ここにロジックを実装 ⬆️

このリポジトリは、ビジネスロジック以外のすべての設定を簡素化しています。npm コマンドを使用して API 拡張をデプロイすることができます。

デプロイが成功すると、公開アドレスが得られます。このアドレスを Dify に API エンドポイントとして追加できます。endpoint パスを忘れないようにしてください。この経路の具体的な定義は src/index.ts で確認できます。

Dify に API エンドポイントを追加する
アプリ編集ページに API ツールを追加する

また、npm run dev コマンドを使用してローカルにデプロイし、テストすることもできます。

関連する出力:

その後、Postman などのツールを使用してローカルインターフェースをデバッグできます。

その他のロジック TL;DR

Bearer 認証について

上記のコードでは、Bearer 認証ロジックを示しています。hono/bearer-auth パッケージを使用して Bearer 認証を実装しています。src/index.tsc.env.TOKEN を使用してトークンを取得できます。

パラメータの検証について

ここでは、zod を使用してパラメータのタイプを定義しています。src/index.tszValidator を使用してパラメータを検証できます。const { point, params } = c.req.valid("json"); を使用して検証後のパラメータを取得します。point は2つの値しか持たないため、z.union を使用して定義しています。params はオプションのため、z.optional を使用して定義しています。この中には inputs パラメータがあり、これは Record<string, any> 型です。この型はキーが文字列で値が任意のオブジェクトを示します。src/index.tsparams?.inputs?.count を使用して count パラメータを取得できます。

Cloudflare ワーカーのログを取得する

参考内容

Last updated