路由模式智能分发 垂直 Agent路由模式的核心是智能分发——根据任务类型、内容或上下文将请求路由到不同的垂直 Agent。读完你能设计出适配多种场景的路由层理解分类器精度与兜底策略的关键 trade-off。一、概念速查1.1 什么是路由模式路由模式Router Pattern用一个中央路由层替代一个 Agent 处理所有请求。路由层分析入站任务分发给最适合的垂直 Agent类似微服务架构中的 API Gateway 后端服务。客服类代码类数据分析类其他用户请求路由层分类器 / LLM Judge客服 Agent代码 Agent分析 Agent通用 Agent兜底1.2 核心术语速查术语定义路由层Router中央分发节点接收请求并决定目标 Agent垂直 Agent专精某一领域的 Agent客服、代码、分析分类器路由层的决策引擎可用轻量模型、规则或 LLM兜底 Agent当路由无法匹配时接管的通用处理 Agent路由表任务类型 → 目标 Agent 的映射规则Fallback 策略路由失败或 Agent 超时时的降级处理逻辑1.3 三种路由实现方式方式决策引擎延迟成本适用场景基于规则关键词 / Regex / 意图匹配极低接近 0分类边界清晰的场景工单类型、指令前缀基于轻量模型BERT 分类器 / Embedding KNN低低分类明确的场景类别固定基于 LLM JudgeLLM Judge 分析后决策中高分类模糊、需要语义理解的复杂场景二、底层原理2.1 路由层的核心职责路由层不只是选一个 Agent它还承担请求分析解析用户输入提取意图、实体、上下文路由决策根据分析结果匹配最合适的 Agent参数转发将原始请求转换为目标 Agent 所需的输入格式结果汇聚可选——将 Agent 返回结果做后处理格式化、翻译、合并Fallback路由失败或 Agent 异常时降级2.2 路由决策的三种方法方法一基于规则的路由器最轻量适合分类边界清晰的场景。# Python 3.11 | from src.router import RuleRouterfrom__future__importannotationsimportrefromdataclassesimportdataclass,fieldfromtypingimportCallabledataclassclassRuleRouter:基于规则的路由器——关键词 正则匹配routes:dict[str,str]field(default_factorydict)fallback:strgeneraldefadd_rule(self,pattern:str,target:str)-None:self.routes[pattern]targetdefroute(self,text:str)-str:forpattern,targetinself.routes.items():ifre.search(pattern,text,re.IGNORECASE):returntargetreturnself.fallback routerRuleRouter(fallbackgeneral_agent)router.add_rule(r客服|退货|退款|投诉,customer_service)router.add_rule(r代码|bug|debug|部署,code_agent)router.add_rule(r报表|图表|统计|分析,analytics_agent)print(router.route(我想退货))# customer_serviceprint(router.route(帮我查 bug))# code_agentprint(router.route(今天天气))# general_agent方法二基于 Embedding 的路由器将请求文本和 Agent 描述向量化用语义相似度匹配。# Python 3.11 | from src.router import EmbeddingRouterfrom__future__importannotationsfromtypingimportSequenceimportnumpyasnpfromsentence_transformersimportSentenceTransformer# pip install sentence-transformersclassEmbeddingRouter:基于语义相似度的路由器——Embedding Cosine 相似度def__init__(self,model_name:strall-MiniLM-L6-v2)-None:self.modelSentenceTransformer(model_name)self.agents:dict[str,str]{}# agent_name - descriptionself.agent_embeddings:dict[str,np.ndarray]{}defregister_agent(self,name:str,description:str)-None:self.agents[name]description self.agent_embeddings[name]self.model.encode(description)defroute(self,text:str,top_k:int1)-Sequence[str]:text_embself.model.encode(text)scores{name:float(np.dot(text_emb,emb)/(np.linalg.norm(text_emb)*np.linalg.norm(emb)))forname,embinself.agent_embeddings.items()}sorted_agentssorted(scores,keyscores.get,reverseTrue)# type: ignore[arg-type]returnsorted_agents[:top_k]routerEmbeddingRouter()router.register_agent(customer_service,处理退货退款投诉等客户服务问题)router.register_agent(code_agent,编写代码、调试、部署和技术支持)router.register_agent(analytics_agent,数据分析、报表生成和可视化)print(router.route(我的订单怎么还没到))# [customer_service, ...]方法三基于 LLM Judge 的路由器用 LLM 做语义理解适合边界模糊的任务。# Python 3.11 | from src.router import LLMRouterfrom__future__importannotationsimportjsonfromtypingimportAnyfromopenaiimportOpenAI# pip install openaiclassLLMRouter:基于 LLM Judge 的路由器——LLM 分析后决策def__init__(self,client:OpenAI,agents:list[str])-None:self.clientclient self.agentsagents self._build_system_prompt()def_build_system_prompt(self)-None:agent_list\n.join(f-{a}forainself.agents)self.system_promptf分析用户请求选择最合适的 Agent 处理。 可选 Agent{agent_list}仅返回 JSON格式 {{agent: agent_name, reason: 简短理由}}defroute(self,text:str)-dict[str,Any]:respself.client.chat.completions.create(modelgpt-4o-mini,messages[{role:system,content:self.system_prompt},{role:user,content:text},],response_format{type:json_object},temperature0,)returnjson.loads(resp.choices[0].message.contentor{})clientOpenAI()routerLLMRouter(client,[customer_service,code_agent,analytics_agent])print(router.route(帮我画一下 Q2 的销售额趋势))# {agent: analytics_agent, reason: 用户需要数据分析与可视化}2.3 路由结束后做什么路由决策只是第一步。路由层还需处理三种后续情形情形处理方式说明Agent 返回成功原路返回给用户可选加后处理格式统一、翻译、脱敏Agent 返回错误重试 → 切换 → 报错同 Agent 重试 1-2 次仍然失败则切到兜底 AgentAgent 超时降级到兜底或报错设严格超时如 30s超时后走 Fallback2.4 路由模式 vs 单一 Agent维度单一 Agent路由模式系统 Prompt巨大所有能力塞进一个 Prompt极简仅路由分类 Prompt上下文污染高——文件搜索指令可能干扰客服推理无——各 Agent 上下文隔离工具集全部挂载LLM 选择易出错仅挂载本领域工具选择准确率高扩展性加新能力 重写 Prompt加新 Agent 注册即可容错性一个环节失败全流程挂路由层独立单个 Agent 故障不影响其他三、架构设计原则3.1 兜底优先原则路由不可用时必须有兜底。任何分类器都有精度上限。当置信度低于阈值时不强行分类——回退到通用 Agent 或请求用户澄清。置信度高置信度低用户请求LLM Judge置信度评分路由到垂直 Agent兜底 Agent或请求用户澄清返回结果3.2 路由层无状态原则路由层不记忆会话历史每次请求独立决策。理由单一职责路由只做分发不做推理可扩展无状态意味着可以水平扩展路由节点可隔离会话状态属于垂直 Agent 的职责范围3.3 分类器精度 ≠ 路由质量原则100% 精度的分类器不代表好的路由体验。要考虑误召回的成本不对称把客服问题路由给代码 Agent代码 Agent 执行不了比路由给兜底 Agent兜底能处理大部分严重得多路由延迟多 100ms 分类延迟 垂直 Agent 的推理延迟用户感知明显Agent 负载高并发下路由应做简单限流避免将请求发给已过载的 Agent3.4 可观测性原则路由决策必须可追溯记录每次路由的输入、决策结果、置信度、延迟记录 Fallback 触发的原因和次数用路由日志持续优化分类规则误分类案例分析3.5 渐进式复杂度原则不要一开始就上 LLM Judge 路由先用规则路由关键词 正则积累分类样本样本量足够后训练一个轻量文本分类模型仅处理分类边界模糊的剩余请求用 LLM Judge 兜底每一步都验证这一步真的需要吗——路由层的核心目标是降低成本、提升准确率不是用上最新技术。
路由模式:智能分发 + 垂直 Agent
路由模式智能分发 垂直 Agent路由模式的核心是智能分发——根据任务类型、内容或上下文将请求路由到不同的垂直 Agent。读完你能设计出适配多种场景的路由层理解分类器精度与兜底策略的关键 trade-off。一、概念速查1.1 什么是路由模式路由模式Router Pattern用一个中央路由层替代一个 Agent 处理所有请求。路由层分析入站任务分发给最适合的垂直 Agent类似微服务架构中的 API Gateway 后端服务。客服类代码类数据分析类其他用户请求路由层分类器 / LLM Judge客服 Agent代码 Agent分析 Agent通用 Agent兜底1.2 核心术语速查术语定义路由层Router中央分发节点接收请求并决定目标 Agent垂直 Agent专精某一领域的 Agent客服、代码、分析分类器路由层的决策引擎可用轻量模型、规则或 LLM兜底 Agent当路由无法匹配时接管的通用处理 Agent路由表任务类型 → 目标 Agent 的映射规则Fallback 策略路由失败或 Agent 超时时的降级处理逻辑1.3 三种路由实现方式方式决策引擎延迟成本适用场景基于规则关键词 / Regex / 意图匹配极低接近 0分类边界清晰的场景工单类型、指令前缀基于轻量模型BERT 分类器 / Embedding KNN低低分类明确的场景类别固定基于 LLM JudgeLLM Judge 分析后决策中高分类模糊、需要语义理解的复杂场景二、底层原理2.1 路由层的核心职责路由层不只是选一个 Agent它还承担请求分析解析用户输入提取意图、实体、上下文路由决策根据分析结果匹配最合适的 Agent参数转发将原始请求转换为目标 Agent 所需的输入格式结果汇聚可选——将 Agent 返回结果做后处理格式化、翻译、合并Fallback路由失败或 Agent 异常时降级2.2 路由决策的三种方法方法一基于规则的路由器最轻量适合分类边界清晰的场景。# Python 3.11 | from src.router import RuleRouterfrom__future__importannotationsimportrefromdataclassesimportdataclass,fieldfromtypingimportCallabledataclassclassRuleRouter:基于规则的路由器——关键词 正则匹配routes:dict[str,str]field(default_factorydict)fallback:strgeneraldefadd_rule(self,pattern:str,target:str)-None:self.routes[pattern]targetdefroute(self,text:str)-str:forpattern,targetinself.routes.items():ifre.search(pattern,text,re.IGNORECASE):returntargetreturnself.fallback routerRuleRouter(fallbackgeneral_agent)router.add_rule(r客服|退货|退款|投诉,customer_service)router.add_rule(r代码|bug|debug|部署,code_agent)router.add_rule(r报表|图表|统计|分析,analytics_agent)print(router.route(我想退货))# customer_serviceprint(router.route(帮我查 bug))# code_agentprint(router.route(今天天气))# general_agent方法二基于 Embedding 的路由器将请求文本和 Agent 描述向量化用语义相似度匹配。# Python 3.11 | from src.router import EmbeddingRouterfrom__future__importannotationsfromtypingimportSequenceimportnumpyasnpfromsentence_transformersimportSentenceTransformer# pip install sentence-transformersclassEmbeddingRouter:基于语义相似度的路由器——Embedding Cosine 相似度def__init__(self,model_name:strall-MiniLM-L6-v2)-None:self.modelSentenceTransformer(model_name)self.agents:dict[str,str]{}# agent_name - descriptionself.agent_embeddings:dict[str,np.ndarray]{}defregister_agent(self,name:str,description:str)-None:self.agents[name]description self.agent_embeddings[name]self.model.encode(description)defroute(self,text:str,top_k:int1)-Sequence[str]:text_embself.model.encode(text)scores{name:float(np.dot(text_emb,emb)/(np.linalg.norm(text_emb)*np.linalg.norm(emb)))forname,embinself.agent_embeddings.items()}sorted_agentssorted(scores,keyscores.get,reverseTrue)# type: ignore[arg-type]returnsorted_agents[:top_k]routerEmbeddingRouter()router.register_agent(customer_service,处理退货退款投诉等客户服务问题)router.register_agent(code_agent,编写代码、调试、部署和技术支持)router.register_agent(analytics_agent,数据分析、报表生成和可视化)print(router.route(我的订单怎么还没到))# [customer_service, ...]方法三基于 LLM Judge 的路由器用 LLM 做语义理解适合边界模糊的任务。# Python 3.11 | from src.router import LLMRouterfrom__future__importannotationsimportjsonfromtypingimportAnyfromopenaiimportOpenAI# pip install openaiclassLLMRouter:基于 LLM Judge 的路由器——LLM 分析后决策def__init__(self,client:OpenAI,agents:list[str])-None:self.clientclient self.agentsagents self._build_system_prompt()def_build_system_prompt(self)-None:agent_list\n.join(f-{a}forainself.agents)self.system_promptf分析用户请求选择最合适的 Agent 处理。 可选 Agent{agent_list}仅返回 JSON格式 {{agent: agent_name, reason: 简短理由}}defroute(self,text:str)-dict[str,Any]:respself.client.chat.completions.create(modelgpt-4o-mini,messages[{role:system,content:self.system_prompt},{role:user,content:text},],response_format{type:json_object},temperature0,)returnjson.loads(resp.choices[0].message.contentor{})clientOpenAI()routerLLMRouter(client,[customer_service,code_agent,analytics_agent])print(router.route(帮我画一下 Q2 的销售额趋势))# {agent: analytics_agent, reason: 用户需要数据分析与可视化}2.3 路由结束后做什么路由决策只是第一步。路由层还需处理三种后续情形情形处理方式说明Agent 返回成功原路返回给用户可选加后处理格式统一、翻译、脱敏Agent 返回错误重试 → 切换 → 报错同 Agent 重试 1-2 次仍然失败则切到兜底 AgentAgent 超时降级到兜底或报错设严格超时如 30s超时后走 Fallback2.4 路由模式 vs 单一 Agent维度单一 Agent路由模式系统 Prompt巨大所有能力塞进一个 Prompt极简仅路由分类 Prompt上下文污染高——文件搜索指令可能干扰客服推理无——各 Agent 上下文隔离工具集全部挂载LLM 选择易出错仅挂载本领域工具选择准确率高扩展性加新能力 重写 Prompt加新 Agent 注册即可容错性一个环节失败全流程挂路由层独立单个 Agent 故障不影响其他三、架构设计原则3.1 兜底优先原则路由不可用时必须有兜底。任何分类器都有精度上限。当置信度低于阈值时不强行分类——回退到通用 Agent 或请求用户澄清。置信度高置信度低用户请求LLM Judge置信度评分路由到垂直 Agent兜底 Agent或请求用户澄清返回结果3.2 路由层无状态原则路由层不记忆会话历史每次请求独立决策。理由单一职责路由只做分发不做推理可扩展无状态意味着可以水平扩展路由节点可隔离会话状态属于垂直 Agent 的职责范围3.3 分类器精度 ≠ 路由质量原则100% 精度的分类器不代表好的路由体验。要考虑误召回的成本不对称把客服问题路由给代码 Agent代码 Agent 执行不了比路由给兜底 Agent兜底能处理大部分严重得多路由延迟多 100ms 分类延迟 垂直 Agent 的推理延迟用户感知明显Agent 负载高并发下路由应做简单限流避免将请求发给已过载的 Agent3.4 可观测性原则路由决策必须可追溯记录每次路由的输入、决策结果、置信度、延迟记录 Fallback 触发的原因和次数用路由日志持续优化分类规则误分类案例分析3.5 渐进式复杂度原则不要一开始就上 LLM Judge 路由先用规则路由关键词 正则积累分类样本样本量足够后训练一个轻量文本分类模型仅处理分类边界模糊的剩余请求用 LLM Judge 兜底每一步都验证这一步真的需要吗——路由层的核心目标是降低成本、提升准确率不是用上最新技术。