AI Agent 开发指南

张开发
2026/4/20 0:10:04 15 分钟阅读

分享文章

AI Agent 开发指南
前言AI Agent 是当前 AI 应用开发的前沿方向。它让 AI 从被动回答问题升级为主动完成任务。什么是 AI AgentAI Agent LLM 工具 记忆 规划与传统程序的区别传统程序AI Agent按预设逻辑执行自主决策执行需要精确指令理解模糊意图无法处理异常可自我调整功能固定可学习扩展阅读本文后你将能够✅ 理解 AI Agent 核心概念✅ 掌握 Agent 架构设计✅ 实现工具调用能力✅ 构建多 Agent 协作系统✅ 开发实用 Agent 应用1. AI Agent 核心概念1.1 Agent 的四大能力1. 感知能力Perception理解用户输入文本、语音、图像获取环境信息API、数据库、传感器识别任务类型和意图2. 规划能力Planning任务分解将大任务拆分为小步骤策略选择选择合适的工具和方法路径优化调整执行顺序3. 行动能力Action调用工具API、函数、脚本与外部系统交互执行具体操作4. 反思能力Reflection检查结果是否符合预期识别并纠正错误从经验中学习改进1.2 Agent 架构┌─────────────────────────────────────────┐│ 用户输入 │└─────────────────┬───────────────────────┘ ↓┌─────────────────────────────────────────┐│ 感知层理解意图、提取关键信息 │└─────────────────┬───────────────────────┘ ↓┌─────────────────────────────────────────┐│ 规划层任务分解、策略制定 │└─────────────────┬───────────────────────┘ ↓┌─────────────────────────────────────────┐│ 执行层调用工具、执行操作 │└─────────────────┬───────────────────────┘ ↓┌─────────────────────────────────────────┐│ 反思层结果验证、错误处理 │└─────────────────┬───────────────────────┘ ↓┌─────────────────────────────────────────┐│ 返回结果 │└─────────────────────────────────────────┘1.3 应用场景场景描述难度智能客服自动回答 业务办理⭐⭐⭐代码助手代码生成 Debug⭐⭐⭐⭐数据分析数据查询 报表生成⭐⭐⭐⭐工作流自动化多系统协作完成任务⭐⭐⭐⭐⭐个人助理日程管理 信息整合⭐⭐⭐⭐⭐2. 使用 LangChain4j 开发 Agent2.1 添加依赖dependencies !-- LangChain4j 核心 -- dependency groupIddev.langchain4j/groupId artifactIdlangchain4j/artifactId version0.35.0/version /dependency !-- OpenAI 支持 -- dependency groupIddev.langchain4j/groupId artifactIdlangchain4j-open-ai/artifactId version0.35.0/version /dependency !-- 工具注解支持 -- dependency groupIddev.langchain4j/groupId artifactIdlangchain4j/artifactId version0.35.0/version /dependency/dependencies2.2 定义工具工具类示例import dev.langchain4j.agent.tool.Tool;import dev.langchain4j.agent.tool.P;import org.springframework.stereotype.Component;Componentpublic class BusinessTools { /** * 查询订单信息 */ Tool(查询指定订单的详细信息) public String queryOrder( P(订单 ID) String orderId ) { // 实际项目中调用订单服务 return String.format( 订单 %s状态已发货金额299 元商品无线耳机, orderId ); } /** * 查询用户信息 */ Tool(查询用户的基本信息) public String queryUser( P(用户 ID) String userId ) { // 实际项目中调用用户服务 return String.format( 用户 %s姓名张三等级VIP积分1500, userId ); } /** * 发送通知 */ Tool(向用户发送通知消息) public boolean sendNotification( P(用户 ID) String userId, P(消息内容) String message ) { // 实际项目中调用消息服务 System.out.println(发送通知给 userId : message); return true; } /** * 计算折扣价格 */ Tool(根据用户等级计算折扣后的价格) public double calculateDiscount( P(原价) double originalPrice, P(用户等级) String userLevel ) { double discount switch (userLevel.toUpperCase()) { case VIP - 0.8; case PLUS - 0.9; default - 1.0; }; return originalPrice * discount; }}2.3 创建 Agent基础 Agentimport dev.langchain4j.memory.ChatMemory;import dev.langchain4j.memory.chat.MessageWindowChatMemory;import dev.langchain4j.model.chat.ChatLanguageModel;import dev.langchain4j.model.openai.OpenAiChatModel;import dev.langchain4j.service.AiServices;public class CustomerServiceAgent { interface Assistant { String chat(String userMessage); } public static void main(String[] args) { // 1. 初始化模型 ChatLanguageModel model OpenAiChatModel.builder() .apiKey(System.getenv(OPENAI_API_KEY)) .modelName(gpt-4o) .build(); // 2. 初始化工具 BusinessTools tools new BusinessTools(); // 3. 初始化记忆 ChatMemory memory MessageWindowChatMemory.withMaxMessages(20); // 4. 创建 Agent Assistant agent AiServices.builder(Assistant.class) .chatLanguageModel(model) .tools(tools) .chatMemory(memory) .build(); // 5. 与 Agent 对话 String response agent.chat(帮我查一下订单 ORD123456 的状态); System.out.println(response); }}2.4 多工具协作Agent 自动选择调用哪个工具public class MultiToolAgent { public static void main(String[] args) { ChatLanguageModel model OpenAiChatModel.builder() .apiKey(System.getenv(OPENAI_API_KEY)) .modelName(gpt-4o) // 需要支持 Function Calling .build(); BusinessTools tools new BusinessTools(); Assistant agent AiServices.builder(Assistant.class) .chatLanguageModel(model) .tools(tools) .build(); // 场景 1查询订单 String response1 agent.chat(我的订单 ORD123456 发货了吗); // AI 会自动调用 queryOrder 工具 // 场景 2查询用户 计算折扣 String response2 agent.chat( 我是 VIP 用户买 299 元的东西能便宜多少 ); // AI 会先调用 queryUser再调用 calculateDiscount // 场景 3完整流程 String response3 agent.chat( 帮我查一下用户 U001 的信息然后告诉他订单 ORD123 的状态 ); // AI 会依次调用 queryUser 和 queryOrder }}3. 高级 Agent 模式3.1 任务规划 Agent能够分解复杂任务public class PlanningAgent { private final ChatLanguageModel model; private final BusinessTools tools; public PlanningAgent() { this.model OpenAiChatModel.builder() .apiKey(System.getenv(OPENAI_API_KEY)) .modelName(gpt-4o) .build(); this.tools new BusinessTools(); } /** * 执行复杂任务 */ public String executeTask(String taskDescription) { // 1. 让 AI 规划任务步骤 String planningPrompt 请分析以下任务并分解为具体的执行步骤 任务%s 可用工具 1. queryOrder(orderId) - 查询订单 2. queryUser(userId) - 查询用户 3. sendNotification(userId, message) - 发送通知 4. calculateDiscount(price, level) - 计算折扣 请按顺序列出需要调用的工具和参数。 .formatted(taskDescription); String plan model.generate(planningPrompt); System.out.println(任务规划 plan); // 2. 执行规划 Assistant agent AiServices.builder(Assistant.class) .chatLanguageModel(model) .tools(tools) .build(); return agent.chat(taskDescription); }}3.2 反思 Agent能够检查结果并纠正错误public class ReflectiveAgent { private final ChatLanguageModel model; private final BusinessTools tools; public ReflectiveAgent() { this.model OpenAiChatModel.builder() .apiKey(System.getenv(OPENAI_API_KEY)) .modelName(gpt-4o) .build(); this.tools new BusinessTools(); } /** * 带反思的执行 */ public String executeWithReflection(String task) { int maxRetries 3; String lastResult null; for (int i 0; i maxRetries; i) { // 执行任务 Assistant agent AiServices.builder(Assistant.class) .chatLanguageModel(model) .tools(tools) .build(); String result agent.chat(task); // 反思检查结果 String reflectionPrompt 请检查以下执行结果是否合理 任务%s 结果%s 如果结果有问题请指出并说明如何改进。 如果结果合理请回复OK。 .formatted(task, result); String reflection model.generate(reflectionPrompt); if (reflection.contains(OK)) { return result; } lastResult result; System.out.println(第 (i 1) 次尝试需要改进 reflection); } return 执行失败最后结果 lastResult; }}3.3 多 Agent 协作多个 Agent 协作完成复杂任务public class MultiAgentSystem { // 客服 Agent private final Assistant customerServiceAgent; // 技术 Agent private final Assistant technicalAgent; // 路由 Agent private final Assistant routerAgent; public MultiAgentSystem() { ChatLanguageModel model OpenAiChatModel.builder() .apiKey(System.getenv(OPENAI_API_KEY)) .modelName(gpt-4o) .build(); BusinessTools tools new BusinessTools(); // 客服 Agent处理业务问题 this.customerServiceAgent AiServices.builder(Assistant.class) .chatLanguageModel(model) .tools(tools) .build(); // 技术 Agent处理技术问题 this.technicalAgent AiServices.builder(Assistant.class) .chatLanguageModel(model) .build(); // 路由 Agent判断问题类型 this.routerAgent AiServices.builder(Assistant.class) .chatLanguageModel(model) .build(); } /** * 路由到合适的 Agent */ public String handleRequest(String userMessage) { // 1. 路由 Agent 判断问题类型 String routePrompt 请判断以下问题属于哪一类 问题%s 回复customer表示业务问题回复technical表示技术问题。 只回复一个单词。 .formatted(userMessage); String route routerAgent.chat(routePrompt).trim().toLowerCase(); // 2. 路由到对应 Agent if (route.contains(customer)) { return customerServiceAgent.chat(userMessage); } else { return technicalAgent.chat(userMessage); } }}4. 实战项目4.1 智能客服 Agent完整实现RestControllerRequestMapping(/api/agent)public class AgentController { Autowired private ChatLanguageModel chatModel; Autowired private BusinessTools businessTools; /** * 客服 Agent 对话 */ PostMapping(/chat) public ResponseEntityAgentResponse chat( RequestBody AgentRequest request ) { // 创建记忆按会话 ChatMemory memory getSessionMemory(request.getSessionId()); // 创建 Agent Assistant agent AiServices.builder(Assistant.class) .chatLanguageModel(chatModel) .tools(businessTools) .chatMemory(memory) .build(); // 系统提示词 String systemPrompt 你是一位专业的客服助手负责帮助用户查询订单、解答问题。 要求 1. 态度友好、专业 2. 使用简洁清晰的语言 3. 必要时主动询问补充信息 4. 不知道的事情不要编造 ; // 执行对话 String response agent.chat(systemPrompt \n\n用户 request.getMessage()); return ResponseEntity.ok(new AgentResponse(response)); } /** * 获取会话记忆 */ private ChatMemory getSessionMemory(String sessionId) { // 实际项目中应该持久化存储 return MessageWindowChatMemory.withMaxMessages(20); }}// 请求/响应类public class AgentRequest { private String message; private String sessionId; // Getter 和 Setter}public class AgentResponse { private String reply; public AgentResponse(String reply) { this.reply reply; } // Getter 和 Setter}4.2 数据分析 Agent能够查询数据并生成报告Servicepublic class DataAnalysisAgent { Autowired private ChatLanguageModel chatModel; /** * 数据查询工具 */ Component public static class DataTools { Tool(查询销售数据) public String querySales( P(日期范围如2024-01) String dateRange ) { // 实际项目中查询数据库 return 2024 年 1 月销售额150 万元环比增长 15%; } Tool(查询用户数据) public String queryUsers( P(用户类型如VIP、普通) String userType ) { // 实际项目中查询数据库 return VIP 用户数5000占比 10%; } Tool(生成数据报表) public String generateReport( P(报表类型) String reportType, P(数据内容) String data ) { // 生成格式化报表 return reportType \n data; } } /** * 分析数据并生成报告 */ public String analyzeAndReport(String request) { DataTools tools new DataTools(); Assistant agent AiServices.builder(Assistant.class) .chatLanguageModel(chatModel) .tools(tools) .build(); String prompt 请根据用户需求查询数据并生成分析报告。 用户需求%s 要求 1. 先查询相关数据 2. 分析数据趋势 3. 生成简洁的总结报告 .formatted(request); return agent.chat(prompt); }}4.3 工作流自动化 Agent能够执行多步骤工作流Servicepublic class WorkflowAgent { Autowired private ChatLanguageModel chatModel; /** * 工作流工具集 */ Component public static class WorkflowTools { Tool(创建任务) public String createTask( P(任务描述) String description, P(负责人) String assignee ) { return 任务已创建IDTASK001, 描述 description; } Tool(发送邮件) public boolean sendEmail( P(收件人) String to, P(主题) String subject, P(内容) String body ) { System.out.println(发送邮件给 to); return true; } Tool(更新数据库) public boolean updateDatabase( P(表名) String table, P(数据) String data ) { System.out.println(更新表 table : data); return true; } } /** * 执行工作流 */ public String executeWorkflow(String workflowDescription) { WorkflowTools tools new WorkflowTools(); Assistant agent AiServices.builder(Assistant.class) .chatLanguageModel(chatModel) .tools(tools) .build(); String prompt 请执行以下工作流程 %s 要求 1. 按顺序执行每个步骤 2. 每步执行后确认结果 3. 如有错误及时报告 .formatted(workflowDescription); return agent.chat(prompt); }}5. Agent 优化技巧5.1 Prompt 优化好的 System Prompt 能显著提升 Agent 表现String optimizedPrompt 你是一位专业的客服助手名叫小智。 【能力范围】 - 查询订单状态 - 查询用户信息 - 发送通知 - 计算折扣 【行为规范】 1. 态度友好、专业 2. 使用简洁清晰的语言 3. 不知道的事情不要编造如实告知 4. 必要时主动询问补充信息 【回复格式】 - 查询结果直接呈现关键信息 - 操作步骤分步骤说明 - 复杂内容使用列表或表格 【限制】 - 不处理与业务无关的问题 - 不透露内部技术细节 - 不承诺无法确定的事情 ;5.2 工具设计原则好的工具设计让 Agent 更强大单一职责- 每个工具只做一件事清晰命名- 工具名称表达功能详细文档- 描述和参数说明完整错误处理- 返回明确的错误信息// 好的工具示例Tool(根据订单 ID 查询订单状态返回订单详细信息)public String getOrderStatus( P(订单 ID格式ORD 开头 数字) String orderId) { if (!orderId.startsWith(ORD)) { return 错误订单 ID 格式不正确应以 ORD 开头; } // ...}5.3 记忆管理有效管理对话记忆// 根据场景选择记忆大小ChatMemory shortMemory MessageWindowChatMemory.withMaxMessages(5); // 简单问答ChatMemory mediumMemory MessageWindowChatMemory.withMaxMessages(20); // 一般对话ChatMemory longMemory MessageWindowChatMemory.withMaxMessages(50); // 复杂任务// 持久化记忆ChatMemory persistentMemory new PersistentChatMemory( sessionId - loadFromFile(sessionId), (sessionId, messages) - saveToFile(sessionId, messages));6. 常见问题6.1 Agent 调用错误工具解决方案优化工具描述更清晰在 System Prompt 中说明工具使用场景提供使用示例6.2 多轮对话丢失上下文解决方案增加记忆大小使用持久化存储关键信息显式传递6.3 复杂任务执行失败解决方案添加任务规划步骤实现反思和重试机制分解为多个子任务学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

更多文章