wordpress站内搜索慢,市场推广方式有哪几种,怎么做网站筛选功能,网站推广花费多少钱本文介绍了AI智能体#xff08;Agent#xff09;的概念和实现方式#xff0c;通过ReAct框架让AI能够主动调用工具解决问题。文章详细讲解了如何使用LangChain4j定义工具、创建Agent接口和实例#xff0c;并通过实战案例展示了全能助手的多工具协作能力。此外#xff0c;还…本文介绍了AI智能体Agent的概念和实现方式通过ReAct框架让AI能够主动调用工具解决问题。文章详细讲解了如何使用LangChain4j定义工具、创建Agent接口和实例并通过实战案例展示了全能助手的多工具协作能力。此外还提供了高级技巧和踩坑经验帮助读者更好地理解和应用Agent智能体让AI从被动回答者转变为主动行动者。前几篇我们讲了模型调用、对话记忆、提示词工程、RAG 检索。但到目前为止AI 还只是个被动回答者你: 今天天气怎么样AI: 抱歉我无法获取实时天气信息。你: 帮我算一下 125 * 37AI: 让我算算…大概是 4625实际是 4625但可能算错你: 查一下用户 ID 12345 的订单AI: 我无法访问数据库…问题在哪AI 只是个语言模型它无法获取实时信息不擅长精确计算不能访问外部系统怎么解决这就是今天要讲的Agent 智能体——让 AI 能调用工具从被动回答变成主动行动。什么是 Agent简单来说Agent 就是能调用工具的 AI。它不仅能说还能做你: 今天北京天气怎么样AI: [调用天气API] 今天北京晴天温度 15-25°C。你: 帮我算 125 * 37AI: [调用计算器工具] 125 * 37 4625你: 查用户 12345 的订单AI: [调用数据库API] 用户 12345 有 3 个订单…Agent vs 普通 AI| 能力 | 普通 AI | Agent | |------|---------|-------| | 回答问题 | ✅ | ✅ | | 获取实时信息 | ❌ | ✅ | | 精确计算 | ❌ | ✅ | | 调用 API | ❌ | ✅ | | 访问数据库 | ❌ | ✅ | | 执行任务 | ❌ | ✅ |核心价值让 AI 成为能干事的助手而不只是聊天的伙伴。Agent 工作原理ReAct 框架Agent 使用ReActReasoning Acting框架用户提问 ↓ 思考Reasoning需要用什么工具 ↓ 行动Act调用工具 ↓ 观察Observation工具返回什么结果 ↓ 循环还需要其他工具吗 ↓ 最终回答综合所有结果给出答案示例流程用户问题“今天北京天气怎么样适合出游吗”第1轮 - 思考需要获取天气信息 → 调用天气工具第1轮 - 行动工具返回北京今天晴天15-25°C微风第2轮 - 思考有了天气信息判断是否适合出游 → 调用出游建议工具第2轮 - 行动工具返回晴朗温暖适合出游第3轮 - 思考信息足够了 → 给出最终回答最终回答根据天气信息北京今天晴天温度 15-25°C非常适合出游。建议穿着轻便注意防晒。定义工具Tool 注解LangChain4j 使用Tool注解定义工具。基础示例import dev.langchain4j.agent.tool.Tool; public class CalculatorTools { Tool(计算两个数的和) public double add(double a,double b) { return a b; } Tool(计算两个数的乘积) public double multiply(double a,double b) { return a * b; } Tool(计算一个数的平方根) public double sqrt(double x) { return Math.sqrt(x); } }工具定义要点1.工具描述要清晰// ❌ 差描述不清楚 Tool(计算) public double calc(double a,double b) { ... } // ✅ 好描述清晰 Tool(计算两个数的和) public double add(double a,double b) { ... }2.参数名要语义化// ❌ 差参数名无意义 public double calc(double x1,double x2) { ... } // ✅ 好参数名清晰 public double add(double number1,double number2) { ... }3.支持复杂类型Tool(创建用户) public String createUser(User user) { // User 可以是自定义 POJO return用户创建成功: user.getName(); }完整工具类示例import dev.langchain4j.agent.tool.Tool; import java.time.LocalDateTime; import java.util.HashMap; import java.util.Map; public class WeatherTools { // 模拟天气数据库 private static final MapString,String WEATHER_DBnewHashMap(); static{ WEATHER_DB.put(北京,晴天15-25°C微风); WEATHER_DB.put(上海,多云18-26°C东风3级); WEATHER_DB.put(深圳,阴天22-29°C南风2级); } Tool(获取指定城市的实时天气信息) public String getWeather(String city) { String weatherWEATHER_DB.get(city); if(weather null) { return抱歉暂无 city 的天气信息; } return city 今天 weather; } Tool(根据天气判断是否适合出游) public String isSuitableForOuting(String city,String weather) { // 简单逻辑包含晴或温度适中就适合 if(weather.contains(晴)) { return天气晴朗非常适合出游; }else if(weather.contains(雨) ||weather.contains(雪)) { return天气不佳不建议出游。; }else{ return天气一般可以考虑出游。; } } Tool(获取当前时间) public String getCurrentTime() { return现在时间LocalDateTime.now(); } }创建 Agent第1步定义 Agent 接口import dev.langchain4j.service.AiServices; import dev.langchain4j.service.system.SystemMessage; import dev.langchain4j.agent.tool.Tool; public interface WeatherAssistant { SystemMessage( 你是一个智能助手能够查询天气信息并给出出游建议。 你可以使用以下工具 - 查询城市天气 - 判断是否适合出游 - 获取当前时间 请根据用户问题主动调用相关工具然后给出友好的回答。 ) String chat(String userMessage); }第2步创建 Agent 实例import dev.langchain4j.model.chat.ChatLanguageModel; import dev.langchain4j.model.qianfan.QianfanChatModel; import dev.langchain4j.service.AiServices; public class AgentDemo{ public static void main(String[]args) { // 1. 创建模型 ChatLanguageModelmodelQianfanChatModel.builder() .apiKey(System.getenv(QIANFAN_API_KEY)) .modelName(qwen-turbo) .build(); // 2. 创建工具实例 WeatherToolstoolsnewWeatherTools(); // 3. 创建 Agent WeatherAssistant assistantAiServices.builder(WeatherAssistant.class) .chatLanguageModel(model) .tools(tools)// 注册工具 .build(); // 4. 测试 String[] questions { 今天北京天气怎么样, 北京适合出游吗, 现在几点了 }; for(String question:questions) { System.out.println(问: question); System.out.println(答: assistant.chat(question)); System.out.println(---); } } }运行效果问: 今天北京天气怎么样答: [调用getWeather工具]根据查询结果北京今天晴天15-25°C微风天气不错问: 北京适合出游吗答: [调用getWeather和isSuitableForOuting工具]北京今天晴天温度15-25度非常适合出游建议穿着轻便注意防晒。问: 现在几点了答: [调用getCurrentTime工具]现在时间2026-01-25T14:30:15实战案例全能助手让我们创建一个更复杂的 Agent整合多种工具。工具类集合// 1. 计算工具 class CalculatorTools { Tool(加法运算) public double add(double a,double b) { return a b; } Tool(乘法运算) public double multiply(double a,double b) { return a * b; } } // 2. 时间工具 class TimeTools { Tool(获取当前日期和时间) public String getCurrentDateTime() { return LocalDateTime.now().toString(); } Tool(获取当前日期) public String getCurrentDate() { return LocalDateTime.now().toLocalDate().toString(); } } // 3. 数据库查询工具模拟 class DatabaseTools { private MapString,User userDBnew HashMap(); public DatabaseTools() { // 模拟数据 userDB.put(001,newUser(001,张三,zhangsanexample.com)); userDB.put(002,newUser(002,李四,lisiexample.com)); } Tool(根据用户ID查询用户信息) public String getUserById(String userId) { User useruserDB.get(userId); if(user null) { return用户不存在: userId; } return String.format(用户信息 - ID:%s, 姓名:%s, 邮箱:%s, user.getId(),user.getName(),user.getEmail()); } } // 用户类 class User { private String id; private String name; private String email; // 构造器、getter/setter 省略 }全能 Agentpublic interface SuperAssistant { SystemMessage( 你是一个全能助手可以使用多种工具 1. 数学计算工具加减乘除 2. 时间查询工具 3. 数据库查询工具 请根据用户问题主动调用合适的工具。 如果需要多个工具可以依次调用。 ) String assist(String userMessage); } // 创建 Agent public class SuperAgentDemo{ public static void main(String[]args) { ChatLanguageModelmodelQianfanChatModel.builder() .apiKey(System.getenv(QIANFAN_API_KEY)) .modelName(qwen-plus)// 用能力更强的模型 .temperature(0.3) .build(); // 注册所有工具 SuperAssistant assistantAiServices.builder(SuperAssistant.class) .chatLanguageModel(model) .tools(newCalculatorTools()) .tools(newTimeTools()) .tools(newDatabaseTools()) .build(); // 测试复杂问题 String question帮我算 125 * 37然后查一下用户 001 的信息最后告诉我现在几点了; String answerassistant.assist(question); System.out.println(answer); } }运行效果AI: 好的我来依次处理您的问题计算 125 * 37[调用 multiply 工具]结果4625查询用户 001[调用 getUserById 工具]用户信息 - ID:001, 姓名:张三, 邮箱:zhangsanexample.com当前时间[调用 getCurrentDateTime 工具]2026-01-25T14:30:15总结125 * 37 4625用户001是张三现在时间是2026年1月25日14:30。高级技巧1. 工具描述优化// ❌ 差描述太简单 Tool(查询用户) public String getUser(String id) { ... } // ✅ 好详细说明 Tool(根据用户ID查询用户信息返回ID、姓名和邮箱) public String getUserById(String userId) { ... }经验描述越详细AI 越能准确选择工具。2. 参数描述Tool(发送邮件) public String sendEmail( Description(收件人邮箱地址)String to, Description(邮件主题)String subject, Description(邮件正文内容)String body ) { // 发送邮件逻辑 return 邮件发送成功; }3. 工具组合策略// 有些任务需要多个工具协作 Tool(计算订单总价) public double calculateOrderTotal( Description(商品单价)doubleunitPrice, Description(商品数量)intquantity, Description(折扣率0-1之间0.9表示9折)doublediscount ) { double subtotal unitPrice * quantity; return subtotal * discount; } Tool(应用优惠券) public double applyCoupon( Description(订单原价)doubletotalPrice, Description(优惠券金额)doublecouponAmount ) { return Math.max(0, totalPrice - couponAmount); }4. 错误处理Tool(查询银行账户余额) public String getBalance(Description(账户ID)String accountId) { try{ // 模拟查询 if(accountId.startsWith(test)) { throw new Exception(测试账户无法查询余额); } return 账户余额10,000.00; }catch(Exception e) { // 返回友好的错误信息 return查询失败e.getMessage(); } }踩坑经验坑 1工具描述不清楚// ❌ 工具描述模糊 Tool(处理数据) public String processData(String data) { ... } // 结果AI 不知道这个工具是做什么的很少调用 // ✅ 工具描述具体 Tool(将文本数据转换为大写格式) public String convertToUpperCase(String text) { ... } // 结果AI 知道何时调用这个工具坑 2参数类型不匹配// ❌ 参数类型过于严格 Tool(搜索用户) public User searchUser(int userId) { ... }// AI 可能传字符串 // ✅ 参数类型灵活 Tool(根据ID搜索用户) public User searchUser(String userId) { // 内部转换类型 return userDB.get(userId.trim()); }坑 3缺少系统提示// ❌ 没有 system message public interface Assistant{ String chat(String message); } // 结果AI 不知道自己有工具可用 // ✅ 添加 system message SystemMessage(你可以使用工具查询天气和计算数据...) public interface SmartAssistant{ String chat(String message); } // 结果AI 主动使用工具坑 4工具执行时间过长// ❌ 同步阻塞调用 Tool(导出大数据) public String exportBigData() { // 可能耗时很久 return heavyOperation();// 阻塞整个流程 } // ✅ 异步或设置超时 Tool(导出数据异步) public String exportDataAsync(String requestId) { // 返回任务ID后台处理 asyncService.export(requestId); return导出任务已创建ID: requestId; }Agent vs 传统编程传统方式// 硬编码逻辑 if(userQuestion.contains(天气)) { return getWeather(city); }else if(userQuestion.contains(计算)) { return calculate(expression); }else if(userQuestion.contains(时间)) { return getCurrentTime(); }else{ return 我不明白; }Agent 方式// AI 自己决定调用哪个工具 String answerassistant.chat(userQuestion);优势-无需手动解析用户意图-自动选择合适工具-支持复杂的多步骤任务-代码更简洁作业时间今天的作业很有趣1.创建一个天气查询 Agent-实现天气查询工具-实现穿衣建议工具-让 AI 主动调用工具给出建议2.创建一个计算 Agent-实现基本运算工具-实现单位转换工具-测试复杂计算问题3.创建一个数据库查询 Agent-实现用户查询工具-实现订单查询工具-让 AI 理解自然语言查询完成后在评论区分享你的 Agent 应用。下一篇预告到目前为止我们已经学习了-✅ 模型调用-✅ 对话记忆-✅ 提示词工程-✅ RAG 检索-✅ Agent 智能体如何学习AI大模型我在一线互联网企业工作十余年里指导过不少同行后辈。帮助很多人得到了学习和成长。我意识到有很多经验和知识值得分享给大家也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限很多互联网行业朋友无法获得正确的资料得到学习提升故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。这份完整版的大模型 AI 学习和面试资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】第一阶段从大模型系统设计入手讲解大模型的主要方法第二阶段在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用第三阶段大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统第四阶段大模型知识库应用开发以LangChain框架为例构建物流行业咨询智能问答系统第五阶段大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型第六阶段以SD多模态大模型为主搭建了文生图小程序案例第七阶段以大模型平台应用与开发为主通过星火大模型文心大模型等成熟大模型构建大模型行业应用。学会后的收获• 基于大模型全栈工程实现前端、后端、产品经理、设计、数据分析等通过这门课可获得不同能力• 能够利用大模型解决相关实际项目需求 大数据时代越来越多的企业和机构需要处理海量数据利用大模型技术可以更好地处理这些数据提高数据分析和决策的准确性。因此掌握大模型应用开发技能可以让程序员更好地应对实际项目需求• 基于大模型和企业数据AI应用开发实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能 学会Fine-tuning垂直训练大模型数据准备、数据蒸馏、大模型部署一站式掌握• 能够完成时下热门大模型垂直领域模型训练能力提高程序员的编码能力 大模型应用开发需要掌握机器学习算法、深度学习框架等技术这些技术的掌握可以提高程序员的编码能力和分析能力让程序员更加熟练地编写高质量的代码。1.AI大模型学习路线图2.100套AI大模型商业化落地方案3.100集大模型视频教程4.200本大模型PDF书籍5.LLM面试题合集6.AI产品经理资源合集获取方式有需要的小伙伴可以保存图片到wx扫描二v码免费领取【保证100%免费】