2026/4/6 7:56:32
网站建设
项目流程
关于建立网站的申请,建立网站备案的法律依据,如何拥有自己的专属域名,中小企业网站制作价格文章目录 前言一、先搞懂#xff1a;Agent为什么需要“工具”#xff1f;二、工具调用的核心流程#xff08;4步走#xff0c;记牢#xff01;#xff09;1. 理解用户意图#xff08;Think#xff09;2. 选择合适的工具#xff08;Select Tool#xff09;3. 执行工具…文章目录前言一、先搞懂Agent为什么需要“工具”二、工具调用的核心流程4步走记牢1. 理解用户意图Think2. 选择合适的工具Select Tool3. 执行工具Execute4. 把结果返回给用户Feedback三、工具调用的 3 种核心模式最新主流方案模式1函数调用Function Calling—— 最常用、最稳定模式2ReActReason Act—— 边思考边行动模式3计划执行Plan Execute—— 先规划再干活四、动手实现极简Agent 工具调用Python可运行1. 项目结构超简单2. 第一步写工具库tools.py—— Agent的“手脚”3. 第二步写Agent核心逻辑agent.py—— 指挥系统4. 第三步写启动入口main.py—— 一键运行5. 第四步配置 .env 文件和之前一样6. 安装依赖极简只装必要的五、运行效果演示看一遍就懂六、核心知识点总结敲黑板目前国内还是很缺AI人才的希望更多人能真正加入到AI行业共同促进行业进步。想要系统学习AI知识的朋友可以看看我的教程http://blog.csdn.net/jiangjunshow教程通俗易懂风趣幽默从深度学习基础原理到各领域实战应用都有讲解。前言各位小伙伴上一篇咱们把代码注释生成Agent从0到1跑通了能自动解析代码、调用大模型生成注释。但你有没有想过Agent怎么知道“什么时候该用什么工具”比如遇到数学计算、查资料、调接口、写文件这些事它不是瞎猜而是有一套完整的“决策执行反馈”逻辑。这篇就用最口语、最接地气的方式把Agent工具调用的核心逻辑讲透再用Python写一个可运行的极简示例让你一看就懂、一跑就会一、先搞懂Agent为什么需要“工具”先打个比方大模型就像**“大脑”会思考、会说话、会推理但不会真的“动手”**比如算 12345×67890、查今天北京天气、写文件到本地工具就像**“手和脚”**计算器、搜索引擎、API、文件读写、代码执行器……专门干“脏活累活”。Agent 大脑大模型 手脚工具 指挥系统工具调用逻辑没有工具的Agent只能“纸上谈兵”有了工具才能真正落地解决问题二、工具调用的核心流程4步走记牢不管多复杂的Agent工具调用都逃不过这 4 步我叫它**“思考-选工具-执行-反馈”闭环**1. 理解用户意图ThinkAgent先把用户的问题“翻译”成自己能懂的指令用户问“帮我算 12345 × 67890 等于多少再把结果存到 result.txt 里”Agent理解需要计算写文件两个动作2. 选择合适的工具Select ToolAgent根据意图从“工具库”里挑出能用的工具工具库可能有计算器、文件读写、搜索引擎、代码执行器、API调用器……上面的问题 → 选calculatorfile_writer3. 执行工具ExecuteAgent把参数传给工具让工具“干活”给calculator传12345 * 67890给file_writer传文件名result.txt内容是计算结果4. 把结果返回给用户Feedback工具执行完把结果返回给AgentAgent再整理成自然语言回答用户“计算结果是838102050已保存到 result.txt 文件中。”关键这 4 步可能循环 N 次比如用户问“帮我查今天北京天气然后写个天气总结存到文件里”→ 先调用search查天气 → 拿到结果 → 再调用file_writer写文件 → 最后回答用户。三、工具调用的 3 种核心模式最新主流方案现在业界主流就 3 种从简单到复杂我给你讲人话版模式1函数调用Function Calling—— 最常用、最稳定原理大模型直接输出“工具名参数”的结构化数据比如JSONAgent解析后调用对应工具。代表OpenAI Function Calling、通义千问 Function Call、Anthropic Tool Use优点准确率高、速度快、易实现缺点依赖大模型支持工具不能太复杂模式2ReActReason Act—— 边思考边行动原理大模型先输出“思考过程”再输出“行动工具参数”循环直到问题解决。代表LangChain ReAct、AutoGPT、BabyAGI优点可解释性强适合复杂多步任务缺点速度慢容易“想太多”或“卡循环”模式3计划执行Plan Execute—— 先规划再干活原理Agent先制定完整“执行计划”比如步骤1、步骤2、步骤3再按计划依次调用工具。代表Plan-and-Solve、GPT-4 Planner、LangChain PlanExecute优点适合长流程、多工具协作任务缺点计划可能出错需要“重规划”能力日常开发首选模式1Function Calling简单、稳定、好落地下面咱们就用它写示例。四、动手实现极简Agent 工具调用Python可运行咱们做一个极简但完整的Agent支持 3 个工具calculator计算器加减乘除file_writer写文件到本地web_search模拟搜索引擎这里用假数据真实场景可接SerpAPI/百度API1. 项目结构超简单agent_tool_demo/ ├── agent.py # Agent核心逻辑 ├── tools.py # 工具库 └── main.py # 启动入口2. 第一步写工具库tools.py—— Agent的“手脚”所有工具都在这里每个工具是一个函数有名称、描述、参数方便大模型识别。# tools.pydefcalculator(expression:str)-str: 计算器工具支持加减乘除四则运算 :param expression: 数学表达式比如 123 456、789 * 10 :return: 计算结果字符串 try:# 安全计算真实场景建议用 ast.literal_eval 或第三方库resulteval(expression)returnf计算结果{result}exceptExceptionase:returnf计算失败{str(e)}deffile_writer(filename:str,content:str)-str: 写文件工具将内容写入指定文件 :param filename: 文件名比如 result.txt :param content: 要写入的内容 :return: 执行结果字符串 try:withopen(filename,w,encodingutf-8)asf:f.write(content)returnf文件写入成功{filename}exceptExceptionase:returnf写入失败{str(e)}defweb_search(query:str)-str: 模拟搜索引擎工具返回假数据真实场景接SerpAPI/百度/谷歌API :param query: 搜索关键词 :return: 搜索结果字符串 # 模拟数据mock_results{北京今天天气:北京今天晴15-25℃微风适合出行,Python最新版本:Python最新稳定版是 3.12.0发布于2023-10-02,AI Agent工具调用:主流工具调用模式Function Calling、ReAct、PlanExecute}returnmock_results.get(query,f未找到关于 {query} 的信息)# 工具清单给大模型看的“工具菜单”关键TOOLS[{type:function,function:{name:calculator,description:计算器支持加减乘除四则运算比如计算 123 * 456,parameters:{type:object,properties:{expression:{type:string,description:数学表达式如 123 456、789 * 10}},required:[expression]}}},{type:function,function:{name:file_writer,description:将内容写入指定文件比如把结果存到 result.txt,parameters:{type:object,properties:{filename:{type:string,description:文件名如 result.txt},content:{type:string,description:要写入的文件内容}},required:[filename,content]}}},{type:function,function:{name:web_search,description:搜索引擎查询天气、知识、新闻等信息,parameters:{type:object,properties:{query:{type:string,description:搜索关键词如 北京今天天气、Python最新版本}},required:[query]}}}]# 工具映射工具名 → 函数方便Agent调用TOOL_MAP{calculator:calculator,file_writer:file_writer,web_search:web_search}3. 第二步写Agent核心逻辑agent.py—— 指挥系统核心就是接收用户问题 → 调用大模型判断是否用工具 → 解析工具调用 → 执行工具 → 返回结果。这里用OpenAI Function Calling没有OpenAI也可以用通义千问逻辑几乎一样。# agent.pyimportjsonfromopenaiimportOpenAIfromdotenvimportload_dotenvimportosfromtoolsimportTOOLS,TOOL_MAP# 加载环境变量OPENAI_API_KEYload_dotenv()clientOpenAI(api_keyos.getenv(OPENAI_API_KEY))classToolCallAgent:def__init__(self):# 对话历史保持上下文多轮工具调用需要self.messages[{role:system,content:你是一个专业的AI助手擅长使用工具解决问题。如果需要工具严格按函数调用格式返回如果不需要工具直接回答用户。}]def_call_llm(self,use_tools:boolTrue):调用大模型支持工具调用kwargs{model:gpt-3.5-turbo,messages:self.messages,temperature:0.3}ifuse_tools:kwargs[tools]TOOLS kwargs[tool_choice]auto# 自动选择是否用工具responseclient.chat.completions.create(**kwargs)returnresponse.choices[0].messagedefrun(self,user_query:str)-str: 运行Agent处理用户问题 :param user_query: 用户问题 :return: 最终回答 # 1. 把用户问题加入对话历史self.messages.append({role:user,content:user_query})print(f 用户问题{user_query})# 2. 循环处理工具调用可能多轮whileTrue:# 调用大模型response_msgself._call_llm(use_toolsTrue)# 把大模型回复加入历史self.messages.append(response_msg)# 3. 判断是否需要调用工具tool_callsresponse_msg.tool_callsifnottool_calls:# 没有工具调用直接返回回答returnresponse_msg.content# 4. 有工具调用逐个执行print(f\n️ 准备调用工具{[tc.function.namefortcintool_calls]})tool_responses[]fortcintool_calls:tool_nametc.function.name tool_argsjson.loads(tc.function.arguments)tool_funcTOOL_MAP.get(tool_name)ifnottool_func:tool_respf工具{tool_name}不存在else:print(f 执行工具{tool_name}参数{tool_args})# 执行工具tool_resptool_func(**tool_args)print(f 工具结果{tool_resp})# 把工具执行结果加入对话历史关键大模型需要知道结果tool_responses.append({tool_call_id:tc.id,role:tool,name:tool_name,content:tool_resp})# 5. 把工具结果返回给大模型进入下一轮循环self.messages.extend(tool_responses)# 测试单独运行 agent.pyif__name____main__:agentToolCallAgent()# 测试1计算 写文件# resp agent.run(帮我算 12345 × 67890 等于多少然后把结果存到 result.txt 里)# 测试2查天气 写总结respagent.run(帮我查北京今天天气然后写一个天气总结存到 weather.txt 里)print(f\n 最终回答{resp})4. 第三步写启动入口main.py—— 一键运行# main.pyfromagentimportToolCallAgentdefmain():print( 工具调用Agent已启动输入 exit 退出)agentToolCallAgent()whileTrue:user_inputinput(\n请输入你的问题)ifuser_input.lower()in[exit,quit,q]:print( 再见)break# 运行Agentansweragent.run(user_input)print(f\n✅ Agent回答{answer})if__name____main__:main()5. 第四步配置 .env 文件和之前一样OPENAI_API_KEYsk-你的OpenAI密钥6. 安装依赖极简只装必要的pipinstallopenai python-dotenv五、运行效果演示看一遍就懂运行python main.py输入问题帮我查北京今天天气然后写一个天气总结存到 weather.txt 里输出流程 工具调用Agent已启动输入 exit 退出 请输入你的问题帮我查北京今天天气然后写一个天气总结存到 weather.txt 里 用户问题帮我查北京今天天气然后写一个天气总结存到 weather.txt 里 ️ 准备调用工具[web_search] 执行工具web_search参数{query: 北京今天天气} 工具结果北京今天晴15-25℃微风适合出行 ️ 准备调用工具[file_writer] 执行工具file_writer参数{filename: weather.txt, content: 北京今天天气总结晴15-25℃微风适合出行。} 工具结果文件写入成功weather.txt ✅ Agent回答已为你查询到北京今天天气晴15-25℃微风适合出行并将天气总结写入 weather.txt 文件中。本地会生成weather.txt内容就是天气总结。完美这就是Agent工具调用的完整闭环。六、核心知识点总结敲黑板Agent 大模型大脑 工具手脚 工具调用逻辑指挥核心流程理解意图 → 选工具 → 执行 → 反馈可循环主流模式Function Calling首选、ReAct、PlanExecute关键细节工具必须有清晰的名称、描述、参数大模型才能看懂工具执行结果必须返回给大模型上下文很重要多轮工具调用需要保留对话历史真实场景扩展工具库可以加代码执行器、数据库查询、API调用、浏览器操作Playwright、邮件发送……大模型可以换通义千问、文心一言、Claude、Llama 3本地大模型也支持Function Calling可以加工具权限控制、工具执行失败重试、工具调用日志、用户确认机制目前国内还是很缺AI人才的希望更多人能真正加入到AI行业共同促进行业进步。想要系统学习AI知识的朋友可以看看我的教程http://blog.csdn.net/jiangjunshow教程通俗易懂风趣幽默从深度学习基础原理到各领域实战应用都有讲解。