逻辑路由 JSON 参考
控制台「逻辑 JSON」为唯一逻辑源(logic_json / RouteLogicV2)。流程图是 flowNodes 的可视化映射;每次应用或画布编辑都会经 parseRouteLogic + syncLogicFromFlowNodes 规范化,并与同一套 validateRouteLogic(含 Gateway Endpoint 上下文)检测。
顶层字段
routingMode 为 single | byInputFormat | conditional | flow;operation 固定为 generate(embed 由 flowNodes 中 kind: embed 表示)。
| Path | Type | Description |
|---|---|---|
| version | number | 必须为 2 |
| operation | string | 固定 "generate" |
| routingMode | string | single | byInputFormat | conditional | flow |
| input.promptTemplate | string | 提示词模板,如 {{prompt}} |
| defaultBranch | object | 默认分支:providerId、model 或 nodeKey(Endpoint)、generation |
| branches[] | array | 条件分支(与 flowNodes 编译结果同步) |
| flowChain[] | array | 回退链步骤(routingMode: flow) |
| flowNodes[] | array | 流程图画布源数据;应用 JSON 后会 syncLogicFromFlowNodes |
| protocolFlowNodes | object | 按访问协议 id 分桶的 flowNodes(控制台「分开」视图) |
| embedBranch | object | 由 kind: embed 节点编译 |
分支条件 when
用于 branches[].when、deny 节点 when、嵌套 nested 分支。按顺序匹配,首个命中生效。
format
输入格式:text | chat_content | image | image_text | multimodal | file | audio | video | openapi_json | any
{ "type": "format", "format": "image_text" }modelId
调用方请求中的上游 model(Header x-gateway-model 或 metadata.model)
{
"when": { "type": "modelId", "op": "eq", "value": "gemini-2.5-flash" }
}fileSize
inlineData 总体积阈值
{ "type": "fileSize", "op": "gt", "value": 1, "unit": "MB" }metadata
Header / metadata / body 字段匹配
{ "type": "metadata", "source": "metadata", "key": "user_id", "op": "exists" }messageType
消息角色或部分类型(text / image / audio / video / file)
{ "type": "messageType", "variant": "role", "role": "system", "scope": "any" }messageContent
消息文本内容匹配(contents / messages 中的 text 部分)
{ "type": "messageContent", "scope": "last_user", "op": "contains", "value": "summarize" }messageParts
多种内容类型组合:parts[] 可勾选 text/image/audio/video/file;match 支持跨消息全部包含、同条消息组合等
{ "type": "messageParts", "parts": ["text", "image"], "match": "same_message", "scope": "last_user" }flowNodes.kind
- single — 单上游 Endpoint
- conditional — IF / ELSE 双分支
- switch — 多路 CASE + DEFAULT
- fallback — 顺序回退链 steps[]
- deny — 命中 when 时拒绝请求
- embed — 向量嵌入 embedContent
示例
单 Endpoint
{
"version": 2,
"operation": "generate",
"routingMode": "single",
"input": { "promptTemplate": "{{prompt}}" },
"defaultBranch": {
"providerId": "gemini",
"model": "",
"nodeKey": "your-endpoint-node-key",
"generation": { "temperature": 0.7 }
},
"flowNodes": [
{
"id": "single-1",
"kind": "single",
"providerId": "gemini",
"model": "",
"nodeKey": "your-endpoint-node-key"
}
]
}条件分支(图文 / 文本)
{
"version": 2,
"operation": "generate",
"routingMode": "byInputFormat",
"input": { "promptTemplate": "{{prompt}}" },
"defaultBranch": { "providerId": "gemini", "model": "", "nodeKey": "default-node" },
"flowNodes": [
{
"id": "if-1",
"kind": "conditional",
"branches": [
{
"id": "image",
"label": "图文",
"when": { "type": "format", "format": "image_text" },
"providerId": "gemini",
"model": "",
"nodeKey": "vision-node"
}
],
"elseBranch": {
"providerId": "openai",
"model": "",
"nodeKey": "text-node"
}
}
]
}Ctrl+Enter 应用 JSON;应用后流程图与运行时 registry 使用同一份 logic_json。