发布时间:2026/7/18 10:02:44
工具调用核心循环逻辑分段逐行详细代码讲解
分段逐行详细代码讲解这段是工具调用核心循环逻辑当大模型想要调用工具时解析工具参数、本地执行工具、把工具结果塞回对话上下文再二次请求大模型生成最终回答不需要调用工具就直接输出模型原文。完整代码分段拆分python运行# 判断模型是否返回了工具调用请求 if finish_reason tool_calls: # 1. 取出模型返回的助手消息里面携带tool_calls工具调用信息 assistant_message response.choices[0].message # 把模型这条带工具调用的消息加入对话历史保存上下文 messages.append(assistant_message) # 遍历本次所有要调用的工具支持一次调用多个工具 for tool_call in assistant_message.tool_calls: # 获取要调用的工具名称比如 check_calendar name tool_call.function.name # 工具参数是JSON字符串转成Python字典 args json.loads(tool_call.function.arguments) # 执行本地工具函数拿到工具返回结果 result execute_tool(name, args) # 将工具执行结果封装成标准tool角色消息追加到对话列表 messages.append({ role: tool, # 角色固定为tool代表工具返回内容 tool_call_id: tool_call.id,# 绑定本次工具调用唯一ID让模型对应上哪次调用的结果 content: result, # 工具运行得到的文本结果 }) # 2. 携带完整上下文用户提问模型工具请求工具返回数据再次请求大模型 final_response client.chat.completions.create( modelopenai/gpt-4.1-mini, messagesmessages, toolstools, ) # 打印模型整合工具数据后生成的最终自然语言回答 print(final_response.choices[0].message.content) # 模型不需要调用任何工具直接输出模型回答即可 else: print(response.choices[0].message.content)逐块深度拆解1. 条件判断if finish_reason tool_calls:finish_reason是大模型返回的结束标识只有两种核心值tool_calls模型判断需要调用工具不会直接给答案stop模型不需要工具直接输出完整回答。 本行是整个工具流程的开关。2. 保存模型的工具调用消息python运行assistant_message response.choices[0].message messages.append(assistant_message)response.choices[0].message模型输出的助手消息对象里面包含.tool_calls数组必须把这条消息存入messages对话列表后续大模型才能看到是它自己发起了工具调用上下文不能断裂。3. 循环遍历所有工具调用python运行for tool_call in assistant_message.tool_calls:模型支持一次性请求多个工具所以用循环批量处理单次提问一般只会生成 1 个 tool_call。3.1 提取工具名 解析参数python运行name tool_call.function.name args json.loads(tool_call.function.arguments)tool_call.function.name工具名称匹配你定义的check_calendartool_call.function.arguments是一段 JSON 字符串不能直接当字典用json.loads()把 JSON 文本转为 Python 字典才能解包传给工具函数。3.2 本地执行工具python运行result execute_tool(name, args)调用分发函数根据工具名执行对应本地逻辑查询日历、发邮件等拿到工具返回的文本结果。3.3 把工具结果写入对话上下文python运行messages.append({ role: tool, tool_call_id: tool_call.id, content: result, })这是接口强制规范三个字段缺一不可role: tool标记这条消息是工具返回的数据区分用户 / 助手消息tool_call_id每个工具调用自带唯一 id用来绑定 “哪次工具调用产出的这条结果”多工具并发时防止模型混淆content工具返回的原始文本内容。4. 二次请求模型生成最终回答python运行final_response client.chat.completions.create( modelopenai/gpt-4.1-mini, messagesmessages, toolstools, ) print(final_response.choices[0].message.content)此时messages完整链路 系统提示 → 用户问题 → 模型发起工具调用 → 工具返回数据 大模型读取工具拿到的真实数据整理成通顺自然的最终回答并打印。5. else 分支无需工具python运行else: print(response.choices[0].message.content)当finish_reasonstop代表模型不需要查询任何工具直接打印模型原始回答即可不用走工具执行流程。完整执行流程举例用户输入我今天有什么日程第一次调用 qwen-turbo模型识别需要查日历返回finish_reasontool_calls代码解析出工具check_calendar和日期参数本地运行模拟日历函数得到日程文本将工具结果加入对话列表携带全部对话再次请求通义千问模型结合日程数据输出自然回答你今天上午10点有团队晨会下午2点要看牙医。补充关键注意点每次工具结果必须追加进messages不能丢弃否则模型看不到工具数据tool_call_id必须和本次循环的tool_call.id保持一致否则接口会报错工具参数一定用json.loads解析直接使用会报类型错误代码中import json建议放到文件头部不要写在循环内部示例仅演示功能工程代码需调整。

相关新闻

3分钟上手hospitalmanagement:从安装到创建第一个患者档案
2026/7/18 10:02:44

3分钟上手hospitalmanagement:从安装到创建第一个患者档案

3分钟上手hospitalmanagement:从安装到创建第一个患者档案 【免费下载链接】hospitalmanagement Hospital Management System || Python Django 项目地址: https://gitcode.com/gh_mirrors/ho/hospitalmanagement hospitalmanagement是一款基于Python Django…

阅读更多
Atlas机器人进化:从动态平衡到工地应用的技术解析
2026/7/18 9:02:44

Atlas机器人进化:从动态平衡到工地应用的技术解析

1. 从“后空翻”到“工地搬砖”:Atlas的进化之路 如果你关注机器人领域,那么“波士顿动力”这个名字,几乎就是“黑科技”的代名词。而Atlas,则是这家公司皇冠上最璀璨的明珠。从2013年那个需要拖着电缆、步履蹒跚的初代机&#xf…

阅读更多
:周星驰是英雄,作品是证据,周星驰的作品:小人物的尊严喜剧背后的悲剧,笑中带泪的关怀
2026/7/18 9:02:44

:周星驰是英雄,作品是证据,周星驰的作品:小人物的尊严喜剧背后的悲剧,笑中带泪的关怀

A版:周星驰是英雄,作品是证据。作者:龍芯北辰 | UID9622 DNA锚定:#ZHUGEXIN⚡️2025-🇨🇳🐉⚖️♠️🧚🏼‍♀️❤️♾️-DEVICE-BIND-SOUL 确认码:#CONFIRM&a…

阅读更多
GigaAM Multilingual未来roadmap:探索下一代多语言语音识别的终极升级计划
2026/7/18 11:02:45

GigaAM Multilingual未来roadmap:探索下一代多语言语音识别的终极升级计划

GigaAM Multilingual未来roadmap:探索下一代多语言语音识别的终极升级计划 【免费下载链接】GigaAM-Multilingual 项目地址: https://ai.gitcode.com/hf_mirrors/ai-sage/GigaAM-Multilingual GigaAM Multilingual作为领先的多语言语音识别模型,…

阅读更多
如何扩展@nuxt/components插件:自定义组件目录和扫描规则开发指南
2026/7/18 11:02:45

如何扩展@nuxt/components插件:自定义组件目录和扫描规则开发指南

如何扩展nuxt/components插件:自定义组件目录和扫描规则开发指南 【免费下载链接】components Scan and auto import components for Nuxt.js 2.13 项目地址: https://gitcode.com/gh_mirrors/compo/components 在Nuxt.js项目中,nuxt/components插…

阅读更多
CANN/asc-devkit half转uint函数
2026/7/18 11:02:45

CANN/asc-devkit half转uint函数

__half2uint_rn 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode…

阅读更多
如何5分钟快速恢复QQ空间历史数据:GetQzonehistory终极指南
2026/7/18 11:02:45

如何5分钟快速恢复QQ空间历史数据:GetQzonehistory终极指南

如何5分钟快速恢复QQ空间历史数据:GetQzonehistory终极指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾因QQ空间数据丢失而烦恼?那些珍贵的说说、留…

阅读更多
视频处理新标杆:Agents-A1-6bit temporal patch技术解析
2026/7/18 11:02:45

视频处理新标杆:Agents-A1-6bit temporal patch技术解析

视频处理新标杆:Agents-A1-6bit temporal patch技术解析 【免费下载链接】Agents-A1-6bit 项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/Agents-A1-6bit 在当今AI视频处理领域,Agents-A1-6bit模型以其独特的temporal patch技术重…

阅读更多
动态域名解析神器:3种创新用法让DDNS成为你的网络管家
2026/7/18 10:02:44

动态域名解析神器:3种创新用法让DDNS成为你的网络管家

动态域名解析神器:3种创新用法让DDNS成为你的网络管家 【免费下载链接】DDNS 🌐自动更新域名解析到本机IP(支持dnspod,阿里DNS,CloudFlare,华为云,DNSCOM...) 项目地址: https://gitcode.com/gh_mirrors/dd/DDNS 你是否曾因家庭宽带的动态IP而无法…

阅读更多
智慧树刷课插件:5分钟实现自动化学习的智能助手
2026/7/18 4:01:53

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

阅读更多
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案
2026/7/18 3:51:14

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

阅读更多
办公自动化实战:5个免费工具构建合同处理流水线
2026/7/18 7:47:53

办公自动化实战:5个免费工具构建合同处理流水线

1. 这不是“又一个工具包”,而是一套经过237次真实场景验证的效率组合拳“2026.04.28实用教程工具分享”这个标题乍看平平无奇,像极了你邮箱里被自动归入“促销/订阅”文件夹的那类通知——但如果你真把它当普通更新忽略,接下来半年里&#x…

阅读更多
微信小程序二维码生成深度解析:weapp-qrcode架构设计与最佳实践
2026/7/18 0:02:42

微信小程序二维码生成深度解析:weapp-qrcode架构设计与最佳实践

微信小程序二维码生成深度解析:weapp-qrcode架构设计与最佳实践 【免费下载链接】weapp-qrcode weapp.qrcode.js 在 微信小程序 中,快速生成二维码 项目地址: https://gitcode.com/gh_mirrors/we/weapp-qrcode 在微信小程序开发中,二维…

阅读更多
DolphinDB实时聚合计算:多维度聚合
2026/7/18 0:02:42

DolphinDB实时聚合计算:多维度聚合

目录摘要一、聚合计算概述1.1 聚合类型1.2 聚合函数1.3 聚合维度二、基础聚合2.1 单表聚合2.2 分组聚合2.3 条件聚合三、多维度聚合3.1 多列分组3.2 Cube聚合3.3 Rollup聚合四、层级聚合4.1 组织层级4.2 时间层级4.3 上卷下钻五、实时聚合引擎5.1 时间序列聚合5.2 多度量聚合5.…

阅读更多
终极macOS窗口管理解决方案:Loop让你的桌面工作流效率翻倍
2026/7/18 0:02:42

终极macOS窗口管理解决方案:Loop让你的桌面工作流效率翻倍

终极macOS窗口管理解决方案:Loop让你的桌面工作流效率翻倍 【免费下载链接】Loop Window management made elegant. 项目地址: https://gitcode.com/GitHub_Trending/lo/Loop Loop是一款专为macOS设计的免费开源窗口管理工具,通过创新的径向菜单和…

阅读更多
基于Dify与DeepSeek构建私有知识库问答系统实战指南
2026/7/18 10:52:26

基于Dify与DeepSeek构建私有知识库问答系统实战指南

在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…

阅读更多
FAE放射组学分析工具:医学影像特征探索的完整解决方案
2026/7/17 5:34:11

FAE放射组学分析工具:医学影像特征探索的完整解决方案

FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE 你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…

阅读更多
DesktopNaotu:你的终极离线思维导图解决方案,告别网络依赖!
2026/7/17 7:48:38

DesktopNaotu:你的终极离线思维导图解决方案,告别网络依赖!

DesktopNaotu:你的终极离线思维导图解决方案,告别网络依赖! 【免费下载链接】DesktopNaotu 桌面版脑图 (百度脑图离线版,思维导图) 跨平台支持 Windows/Linux/Mac OS. (A cross-platform multilingual Mind Map Tool) 项目地址:…

阅读更多