Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

JSON 設定

最終更新 Markdown で表示Agent セットアップ

ダッシュボードのエディター UI ではなく、REST API でルートグラフを定義できます。ルートは内部的に、次のようなシンプルな JSON 構造で表されます。

{
  "id": "<route id>",
  "name": "<route name>",
  "elements": [<array of elements>]
}

対応している要素

ダイナミックルーティングでは、複数の要素タイプを組み合わせて高度なルーティングフローを作れます。各要素には、入力、出力、設定項目があります。

Start 要素

ルートの開始を示します。すべてのルートは Start 要素から始める必要があります。

  • 入力: なし
  • 出力:
    • next: 変更していないリクエストを次の要素へ転送します
{
	"id": "<id>",
	"type": "start",
	"outputs": {
		"next": { "elementId": "<id>" }
	}
}

Conditional 要素(If/Else)

リクエストパラメーターに基づく条件を評価し、結果に応じてリクエストを振り分けます。

  • 入力: リクエスト
  • 出力:
    • true: 条件が true のとき、指定した要素へリクエストを転送します
    • false: 条件が false のとき、指定した要素へリクエストを転送します

conditions$eq$ne$in$and$or など、MongoDB 風の演算子に対応しています。

{
	"id": "<id>",
	"type": "conditional",
	"properties": {
		"conditions": {
			"metadata.plan": { "$eq": "free" }
		}
	},
	"outputs": {
		"true": { "elementId": "<id>" },
		"false": { "elementId": "<id>" }
	}
}

Percentage Split

複数の出力へ確率的にリクエストを振り分けます。A/B テストや段階的ロールアウトに使えます。

  • 入力: リクエスト
  • 出力: 名前付きのパーセンテージ出力を最大 5 つ
    • 各出力キー(例: "10%")がその分岐の確率です。キーの合計は 100% である必要があります
{
	"id": "<id>",
	"type": "percentage",
	"outputs": {
		"10%": { "elementId": "<id>" },
		"40%": { "elementId": "<id>" },
		"50%": { "elementId": "<id>" }
	}
}

Rate/Budget Limit

リクエストメタデータに基づく制限を適用します。回数ベースとコストベースの両方に対応しています。

  • 入力: リクエスト
  • 出力:
    • success: レート制限に達していないとき、指定した要素へリクエストを転送します
    • fallback: レート制限されたリクエスト向けの任意の出力です(指定しない場合、ルートは終了します)

プロパティ:

  • limitType: "count" または "cost"
  • key: レート制限に使うリクエストフィールド(例: "metadata.user_id"
  • limit: 許可するリクエスト数またはコストの上限
  • window: 時間ウィンドウ(秒)
{
	"id": "<id>",
	"type": "rate",
	"properties": {
		"limitType": "count",
		"key": "metadata.user_id",
		"limit": 100,
		"window": 3600
	},
	"outputs": {
		"success": { "elementId": "node_model_workers_ai" },
		"fallback": { "elementId": "node_model_openai_mini" }
	}
}

Model

指定したモデルとプロバイダーで推論を実行します。タイムアウトとリトライを設定できます。

  • 入力: リクエスト
  • 出力:
    • success: モデルが応答のストリーミングを開始できたとき、指定した要素へリクエストを転送します
    • fallback: すべてのリトライ後にモデルが失敗した、またはタイムアウトしたときの任意の出力です

プロパティ:

  • provider: AI プロバイダー(例: "openai""anthropic"
  • model: 使うモデル名
  • timeout: リクエストのタイムアウト(ミリ秒)
  • retries: リトライ回数
{
	"id": "<id>",
	"type": "model",
	"properties": {
		"provider": "openai",
		"model": "gpt-4o-mini",
		"timeout": 60000,
		"retries": 4
	},
	"outputs": {
		"success": { "elementId": "<id>" },
		"fallback": { "elementId": "<id>" }
	}
}

End 要素

ルートの終了を示します。最後に成功したモデル応答を返します。モデル応答がなければエラーを返します。

  • 入力: リクエスト
  • 出力: なし(空の outputs オブジェクトを指定します)
{
	"id": "<id>",
	"type": "end",
	"outputs": {}
}

役に立ちましたか?