跳转到内容
搜索文档

JSON 配置

最后更新 查看 MarkdownAgent 设置

除了使用仪表板编辑器 UI 定义路由图外,你还可以使用 REST API 来完成。路由在内部使用简单的 JSON 结构表示:

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

支持的元素

动态路由支持多种元素类型,你可以组合它们创建复杂的路由流程。每个元素都有特定的输入、输出和配置选项。

Start 元素

标记路由的开始。每个路由必须以 Start 元素开始。

  • Inputs(输入):无
  • Outputs(输出)
    • next:将未更改的请求转发到下一个元素
{
	"id": "<id>",
	"type": "start",
	"outputs": {
		"next": { "elementId": "<id>" }
	}
}

Conditional 元素 (If/Else)

基于请求参数评估条件并相应地路由请求。

  • Inputs(输入):Request
  • Outputs(输出)
    • true:如果条件评估为 true,将请求转发到提供的元素
    • false:如果条件评估为 false,将请求转发到提供的元素

conditions 支持 MongoDB 风格的运算符,如 $eq$ne$in$and$or

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

Percentage Split

按概率将请求路由到多个输出,适用于 A/B 测试和逐步推出。

  • Inputs(输入):Request
  • Outputs(输出):最多 5 个命名百分比输出
    • 每个输出键(例如 "10%")是该分支的概率,键的总和必须为 100%
{
	"id": "<id>",
	"type": "percentage",
	"outputs": {
		"10%": { "elementId": "<id>" },
		"40%": { "elementId": "<id>" },
		"50%": { "elementId": "<id>" }
	}
}

Rate/Budget Limit

基于请求元数据应用限制。支持基于计数和基于成本的限制。

  • Inputs(输入):Request
  • Outputs(输出)
    • success:如果请求未被速率限制,将请求转发到提供的元素
    • fallback:被速率限制请求的可选输出(如果未提供,路由将终止)

Properties(属性)

  • 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

使用指定的模型和提供商执行推理,具有可配置的超时和重试设置。

  • Inputs(输入):Request
  • Outputs(输出)
    • success:如果模型成功开始流式响应,将请求转发到提供的元素
    • fallback:如果模型在所有重试后失败或超时,可选输出

Properties(属性)

  • 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 元素

标记路由的结束。返回最后一个成功的模型响应,如果没有生成模型响应则返回错误。

  • Inputs(输入):Request
  • Outputs(输出):无(提供空的 outputs 对象)
{
	"id": "<id>",
	"type": "end",
	"outputs": {}
}

这篇文档对您有帮助吗?