构建高效Agent
约 1504 字大约 5 分钟
2026-08-02
Anthropic 在最近的研究论文 Building Effective Agents 中分享了关于构建高效 LLM Agent 的宝贵见解。这项研究的特别之处在于它强调简单性和可组合性而非复杂框架。
虽然模式描述和图表来自 Anthropic 的原始论文,但我们将重点介绍如何使用 Java AI 的模型可移植性和结构化输出功能实现这些模式。建议先阅读原始论文。
Agentic 系统
研究论文对两种类型的 agentic 系统做了重要的架构区分:
- 工作流(Workflows):LLM 和工具通过预定义的代码路径编排(即规范系统)
- Agent:LLM 动态指导自己的流程和工具使用
重要
虽然完全自主的 Agent 可能看起来很吸引人,但工作流通常为定义明确的任务提供更好的可预测性和一致性。这与企业对可靠性和可维护性的需求完全吻合。
让我们看看 Java AI 如何通过五种基本模式实现这些概念:
1. 链式工作流 (Chain Workflow)
链式工作流模式体现了将复杂任务分解为更简单、更可管理步骤的原则。
适用场景:
- 具有明确顺序步骤的任务
- 当希望用延迟换取更高准确性时
- 当每一步都基于前一步的输出时
public class ChainWorkflow {
private final ChatClient chatClient;
private final String[] systemPrompts;
public String chain(String userInput) {
String response = userInput;
for (String prompt : systemPrompts) {
String input = String.format("{%s}\n {%s}", prompt, response);
response = chatClient.prompt(input).call().content();
}
return response;
}
}关键原则:
- 每个步骤都有明确的职责
- 一步的输出成为下一步的输入
- 链条易于扩展和维护
2. 并行化工作流 (Parallelization Workflow)
LLM 可以同时处理任务,并通过编程方式聚合输出。
适用场景:
- 处理大量相似但独立的项目
- 需要多个独立视角的任务
- 处理时间关键且任务可并行化时
List<String> parallelResponse = new ParallelizationWorkflow(chatClient)
.parallel(
"分析市场变化将如何影响以下利益相关者群体。",
List.of(
"客户: ...",
"员工: ...",
"投资者: ...",
"供应商: ..."
),
4 // 并行线程数
);3. 路由工作流 (Routing Workflow)
路由模式实现智能任务分发,为不同类型的输入提供专门处理。
适用场景:
- 具有不同输入类别的复杂任务
- 不同输入需要专门处理时
- 分类可以准确处理时
RoutingWorkflow workflow = new RoutingWorkflow(chatClient);
Map<String, String> routes = Map.of(
"billing", "你是账单专家。帮助解决账单问题...",
"technical", "你是技术支持工程师。帮助解决技术问题...",
"general", "你是客户服务代表。帮助处理一般咨询..."
);
String input = "我的账户上周被扣了两次款";
String response = workflow.route(input, routes); // 自动路由到账单专家4. 编排器-工作者 (Orchestrator-Workers)
适用场景:
- 子任务无法提前预测的复杂任务
- 需要不同方法或视角的任务
- 需要自适应问题解决的情况
public class OrchestratorWorkersWorkflow {
public WorkerResponse process(String taskDescription) {
// 1. 编排器分析任务并确定子任务
OrchestratorResponse orchestratorResponse = // ...
// 2. 工作者并行处理子任务
List<String> workerResponses = // ...
// 3. 结果合并为最终响应
return new WorkerResponse(/*...*/);
}
}使用示例:
OrchestratorWorkersWorkflow workflow = new OrchestratorWorkersWorkflow(chatClient);
WorkerResponse response = workflow.process(
"为 REST API 端点生成技术文档和用户友好文档"
);5. 评估器-优化器 (Evaluator-Optimizer)
适用场景:
- 存在明确的评估标准
- 迭代改进提供可衡量的价值
- 任务从多轮批评中获益
public class EvaluatorOptimizerWorkflow {
public RefinedResponse loop(String task) {
Generation generation = generate(task, context);
EvaluationResponse evaluation = evaluate(generation.response(), task);
// 迭代直到满足标准
return new RefinedResponse(finalSolution, chainOfThought);
}
}使用示例:
RefinedResponse response = workflow.loop(
"创建一个实现线程安全计数器的 Java 类"
);
System.out.println("最终方案: " + response.solution());
System.out.println("演进过程: " + response.chainOfThought());Java AI 的实现优势
模型可移植性
只需更改依赖即可切换 LLM 提供商:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-openai</artifactId>
</dependency>结构化输出
类型安全的响应解析:
EvaluationResponse response = chatClient.prompt(prompt)
.call()
.entity(EvaluationResponse.class);一致的 API
- 跨不同 LLM 提供商的统一接口
- 内置错误处理和重试
- 灵活的提示词管理
最佳实践和建议
从简单开始
- 在添加复杂性之前从基本工作流开始
- 使用满足需求的最简单模式
- 仅在需要时添加复杂性
为可靠性设计
- 实现清晰的错误处理
- 尽可能使用类型安全的响应
- 在每一步构建验证
考虑权衡
- 平衡延迟与准确性
- 评估何时使用并行处理
- 在固定工作流和动态 Agent 之间选择
未来工作
这些指南将持续更新,探索如何将基础模式与高级功能结合构建更强大的 Agent:
- 模式组合:组合多种模式创建更强大的工作流
- 高级 Agent 记忆管理:跨对话持久记忆、高效管理上下文窗口
- 工具和 MCP 集成:通过标准化接口利用外部工具
结论
Anthropic 的研究洞见与 Java AI 的实用实现相结合,为构建高效的 LLM 系统提供了强大的框架。通过遵循这些模式和原则,开发者可以创建健壮、可维护且有效的 AI 应用。
核心要点
最简单的解决方案往往是最有效的。从基本模式开始,充分理解你的用例,只有在能明显改善系统性能或能力时才增加复杂性。
关键洞察
Anthropic 的研究强调了一个重要原则——在大多数情况下,精心设计的工作流比完全自主的 Agent 更可靠。Java AI 通过这些可组合的模式使开发者能够构建企业级的 AI 系统。