跳转到内容

LLM 应用三层架构与决策树

LLM 应用三层架构与决策树

学习目标

读完本章后,你将能够:

  • 理解 LLM 应用的三层架构:单次调用、工作流、Agent
  • 使用决策树为任务选择最合适的层级
  • 区分 Managed Agents(服务端托管)与自建 Agent
  • 理解 Agent 四准则检查(Complexity / Value / Viability / Cost of error)
  • 避免常见的架构误用(过度使用 Agent)

核心概念

三层架构

所有 LLM 应用都可以归类到以下三层之一:

层级控制者典型场景复杂度
单次调用开发者分类、摘要、提取、问答
工作流开发者代码循环多步流水线、自定义工具、审批门
Agent模型自主决定开放式研究、代码生成、复杂推理

统一端点

三层架构都通过同一个端点实现:POST /v1/messages。差异在于是否使用工具定义、工具执行循环和输出约束。

用户定义工具:你定义工具(通过装饰器、Zod 模式或原始 JSON),SDK 的工具处理器自动处理 API 调用、执行函数、循环直到完成。

服务端工具:Anthropic 托管的工具,代码执行完全在服务端完成。

结构化输出:通过 output_config.format 约束响应格式,通过 strict: true 约束工具参数验证。


决策树详解

第 0 步:部署提供商检查

Are you deploying through Amazon Bedrock, Google Vertex AI, or Microsoft Foundry?

  • Yes → 只能使用 Claude API + Tool Use。Managed Agents 不可用于第三方部署。
  • No → 继续。

这是最常见的误判点——开发者在第三方部署上寻找 Managed Agents 功能,但它仅限 Anthropic 第一方。

第 1 步:单次调用

适用场景:

  • 分类、总结、信息提取、问答
  • 一个请求,一个响应
  • 无需多轮交互或工具调用

示例: "从这篇文档中提取所有人名", "将这段文本分类为正面/负面/中性"

第 2 步:是否需要服务端托管的有状态 Agent?

判断标准:

  • 需要 Anthropic 运行 Agent 循环并托管每次会话的容器?
  • 需要持久化、版本化的 Agent 配置?
  • 需要长时间运行的多轮 Agent,带有文件挂载?

如果答案是 Yes → Managed Agents

  • 服务端管理会话,SSE 事件流
  • 每个会话独立容器(bash、文件操作、代码执行)
  • Skills + MCP 集成支持

第 3 步:工作流 vs 自建 Agent

工作流(Claude API + Tool Use):

  • 你用代码控制循环
  • 多步流水线,每一步由代码决定是否调用 LLM
  • 适合:有明确步骤、需要审批门、自定义日志记录

自建 Agent

  • 模型自主决定轨迹
  • 最大灵活性
  • 适合:开放式任务,模型需要自主探索

Agent 四准则检查

在选择 Agent 层级之前,检查以下四个条件:

准则问题示例
Complexity任务是否多步且难以提前完全指定?“把设计文档变成 PR” vs “从 PDF 提取标题”
Value结果的价值是否值得更高的成本和延迟?高价值研究 vs 简单格式化
ViabilityClaude 在此类任务上是否有能力?代码生成、研究分析 ✅ 精确数学计算 ❌
Cost of error错误能否被发现和恢复?有测试覆盖、代码审查、回滚机制

任何一项为 No → 留在更简单的层级(单次调用或工作流)。


Managed Agents 架构

Managed Agents 是 Anthropic 提供的服务端托管 Agent 方案:

关键原则

  • Agent 配置只创建一次,通过 ID 引用
  • 每次会话创建 Session,引用 Agent ID
  • model / system / tools 定义在 Agent 上,不在 Session 上

常见陷阱与对策

过度使用 Agent

问题:为简单任务使用 Agent 层,导致成本增加 10-100 倍、延迟增加 5-50 倍。

对策:严格使用四准则检查。任何一项为 No 就不使用 Agent。

第三方部署误判

问题:在 Bedrock / Vertex AI 上尝试使用 Managed Agents。

对策:第三方部署一律使用 Claude API + Tool Use。

Agent ID 重复创建

问题:在请求路径中每次都调用 agents.create,导致创建大量重复 Agent。

对策:Agent 是持久化对象。创建一次,存储 ID,每次会话引用该 ID。

忽略 Compaction

问题:长时间运行的 Agent 对话超过 1M 上下文窗口,导致截断。

对策:启用服务端压缩(compaction),自动在接近阈值时总结早期上下文。


参考来源