工程化实践
为什么要做模型路由,而不是全量用一个最强模型?
最强模型往往更贵、更慢,且并非所有子任务都需要。路由能在 质量、成本、延迟、可用性、合规 之间做权衡;同时多供应商提高 容灾能力,避免单点故障。
熔断器和重试分别解决什么问题?一起用时要注意什么?
熔断防止故障扩散和雪崩;
重试提高偶发失败的成功率。
一起用时应在熔断 Open 阶段停止对同一下游的盲目重试,改为降级或切换供应商;并对 429 使用限流 + 退避,避免放大拥堵。
全链路可观测性
可观测性(Observability):不仅知道「错了」,还能从日志、指标、链路还原「错在哪一步、哪个工具、哪个模型、哪个租户」。对 Agent 尤其重要,因为路径是动态多步的,没有 Trace 很难排障。
日志系统(结构化日志)
- 使用 JSON 一行一条(或等价结构化字段),便于 ELK、Loki、ClickHouse 查询。
- 必备字段示例:timestamp、level、trace_id、span_id、tenant_id、agent_name、step、model、latency_ms、token_usage、error_code。
- 切忌:只打一大段自然语言,没有可过滤字段。
链路追踪(Trace)
- Trace:一次用户请求从头到尾。
- Span:其中一个单元(一次 LLM 调用、一次工具执行、一次检索)。
- 父子关系:span_id / parent_span_id 构成树,还原 Agent 的思考链路与并行分支。
每个 Agent 步骤的记录
- 建议为每步记录:step_index、thought摘要、tool_name、tool_args(脱敏后)、observation摘要、耗时、重试次数、是否降级。
LangSmith / LangFuse 等工具
- LangSmith:与 LangChain 生态结合紧,便于调试链路与数据集。
- LangFuse:开源,可自托管,侧重产品分析 + 成本 + 质量。