深入浅出Function Calling③-零基础保姆级教程
第 5 章工程细节 —— 让工具调用达到生产级5.1 工具描述写作军规模型乱调工具时90% 先改这里军规BadGood说清何时用查天气查询城市当前实时天气。用户问天气/气温/穿衣/带伞时使用历史天气不支持参数给格式与示例城市城市中文名如北京。用户未提及城市时先追问不要猜测划清边界无只支持数学表达式不含变量/函数日期计算请改用 date_diff 工具定义返回无返回格式城市: 天气 温度失败时返回以天气查询失败开头的错误说明补一条系统提示词侧的黄金句式你已经在用了涉及 X 的问题必须使用工具禁止凭记忆回答/心算——把该用工具时不用的漏调率打下来。5.2 用 Pydantic 自动生成 Schema少写 30 行样板手写 JSON Schema 又长又易错。Pydantic 的model_json_schema()一键生成class WeatherArgs(BaseModel): 查询指定城市的当前实时天气。用户询问天气/气温/穿衣建议时使用。 city: str Field(..., description城市中文名如北京) def pydantic_to_tool(model_cls) - dict: schema model_cls.model_json_schema() return {type: function, function: { name: schema.get(title, model_cls.__name__).lower(), description: model_cls.__doc__.strip(), parameters: {type: object, properties: schema[properties], required: schema.get(required, [])}}}LangChaintool装饰器把这一步也自动化了读函数签名docstring 直接生成——你现在已看穿它的全部魔法。5.3 敏感操作先申请人来批准绝不允许模型直调退款/转账/删除/群发类函数。生产范式——工具只返回待确认单真执行等人点头def request_refund(order_id: str, amount: float) - str: 发起退款申请。注意本工具只创建待确认的申请单不会直接扣款。 if amount 2000: return f已创建退款申请单 R-{order_id}金额{amount}元超过阈值已转人工审核模型无权继续操作。 return f已创建退款申请单 R-{order_id}{amount}元。请向用户复述金额并获得明确同意后调用 confirm_refund 工具。这就是human-in-the-loop的最小实现。5.4 其余四条速记工具结果限长return result[:2000]或先摘要——工具灌爆上下文是 Agent 变笨主因第 2 批 17.5。工具历史要不要长留本轮任务内必须留模型靠它推理跨任务的旧 tool 消息可在历史裁剪时优先清退信息密度低、体积大。幂等设计查询类随便重试写操作类下单要防重复执行——传入唯一请求号。给工具也加超时requests.get(..., timeout10)你已在做慢工具会卡死整个循环。第 6 章错误处理、重试与成本控制6.1 SDK 异常家族对号入座表import openai try: r client.chat.completions.create(modelMODEL, messagesmessages, timeout30) except openai.AuthenticationError: # 401Key错误/被吊销 → 查 .env不要重试 ... except openai.RateLimitError: # 429限流/欠费 → 指数退避重试见下 ... except openai.BadRequestError as e: # 400参数错/上下文超限 → 修请求别重试 ... # 报错含 context length 字样 → 该裁历史了 except openai.APITimeoutError: # 超时 → 可重试 ... except openai.APIConnectionError: # 网络不通 → 可重试 ... except openai.APIStatusError as e: # 5xx 服务端故障 → 退避重试 print(e.status_code, e.response)分两类记该重试的429/超时/网络/5xx——问题在环境与不该重试的401/400——问题在你重试一百次也一样。6.2 重试双方案方案 A · SDK 自带最省事处理网络类错误client OpenAI(api_key..., base_url..., max_retries2, timeout30.0)方案 B · tenacity 装饰器可精确控制哪些异常、退避曲线01 教程 17.2 装饰器知识变现# pip install tenacity from tenacity import retry, stop_after_attempt, wait_exponential_jitter, retry_if_exception_type retry(retryretry_if_exception_type((openai.RateLimitError, openai.APITimeoutError, openai.APIConnectionError, openai.APIStatusError)), waitwait_exponential_jitter(initial1, max30), # 指数退避随机抖动 stopstop_after_attempt(4)) def safe_chat(messages, **kw): return client.chat.completions.create(modelMODEL, messagesmessages, **kw)为什么要抖动jitter并发的 100 个请求同时 429、又同时在第 2 秒重试 集体二次撞墙各自随机等待错峰重试才是解。这是面试429 怎么处理的满分尾句。6.3 成本记账器挂进综合项目class CostTracker: # 价格随行就市以官网为准单位元/百万token PRICES {deepseek-chat: (2.0, 8.0)} # (输入, 输出) 量级示意 def __init__(self): self.prompt_tokens self.completion_tokens self.calls 0 def record(self, usage, model: str deepseek-chat): self.calls 1 self.prompt_tokens usage.prompt_tokens self.completion_tokens usage.completion_tokens def report(self, model: str deepseek-chat) - str: pin, pout self.PRICES[model] cost self.prompt_tokens/1e6*pin self.completion_tokens/1e6*pout return (f调用{self.calls}次 | 输入{self.prompt_tokens} f输出{self.completion_tokens} tokens | 约 ¥{cost:.4f})省钱三板斧回顾稳定前缀吃缓存DeepSeek 响应里的prompt_cache_hit_tokens字段能直接看到命中量好奇就打出来、历史裁剪、小任务用小模型。

相关新闻

27届大模型面试准备(五十四):大模型推理成本与吞吐调优实战——从连续批处理到 PD 分离

27届大模型面试准备(五十四):大模型推理成本与吞吐调优实战——从连续批处理到 PD 分离

27届大模型面试准备(五十四):大模型推理成本与吞吐调优实战——从连续批处理到 PD 分离 引言:为什么"能跑"和"跑得划算"是两回事 A25 讲过推理服务化的基础组件(PagedAttention、连续批处理、投机…

2026/8/26 15:55:45 阅读更多 →
口播视频去停顿工具,自动删除空白片段,剪辑效率翻倍,免费下载

口播视频去停顿工具,自动删除空白片段,剪辑效率翻倍,免费下载

做口播视频的朋友应该都有体会,剪视频最烦的不是加字幕也不是调色,而是删气口。上周我剪一条三分钟的口播,光找停顿点就花了两小时,眼睛都快看瞎了。手动逐帧拖音轨,找那些半秒不到的空白,剪吧费事&#xf…

2026/8/26 15:42:48 阅读更多 →
渲染管线噔噔噔

渲染管线噔噔噔

一、前言:这里是随机一次的梦到哪句讲哪句环节二、渲染管线简要描述1.应用阶段:决定并准备要画什么,例如更新场景、摄像机、动画、模型和材质,然后提交绘制命令。(应用阶段决定画什么)2.几何阶段&#xff1…

2026/8/26 16:17:06 阅读更多 →

最新新闻

震惊!芯片推拉力测试机供应商,你必须知道这5家!

震惊!芯片推拉力测试机供应商,你必须知道这5家!

当一颗芯片从晶圆上切割、键合、封装,到最终成为能够驱动智能设备的“心脏”,每一个环节都隐藏着对可靠性的极致要求。而在半导体制造与封装的庞大版图中,芯片推拉力测试机堪称衡量焊接强度与键合质量的“守门员”,是确保芯片长期…

2026/8/26 18:55:34 阅读更多 →
告别手动录题|免费刷题工具,一键导入即刷

告别手动录题|免费刷题工具,一键导入即刷

📚 告别手动录题|免费刷题工具,一键导入即刷备考刷题想要高效提分,一套完整、整洁、规范的专属题库至关重要。但绝大多数考生都会遇到相同难题:网上题库格式杂乱、排版错乱、无法直接使用,手动录入耗时费力…

2026/8/26 18:54:30 阅读更多 →
Final2x:开源免费的多模型图片无损放大工具

Final2x:开源免费的多模型图片无损放大工具

Final2x:开源免费的多模型图片无损放大工具内置 Real-ESRGAN 等几十种 AI 模型,把模糊老照片、低分辨率图片放大变清晰,支持 Windows、macOS、Linux。📖 背景说明 Final2x 是一款开源的图片放大工具,内置了 Real-ESRGA…

2026/8/26 18:53:29 阅读更多 →
企微实战排查之“获取用户信息失败” - 排除后端因素

企微实战排查之“获取用户信息失败” - 排除后端因素

前言 1. 企业微信调试工具快捷键:Ctrl Alt Shift D / Command Shift Control D 2. 不使用开发者工具排查问题。通过 进程->接口->网络->secret->日志 五步定位 一、定位问题 1.1 确认进程和端口 预期:端口处于LISTEN # 进程 ps -…

2026/8/26 18:53:29 阅读更多 →
Linux open 函数 Flag 参数详解

Linux open 函数 Flag 参数详解

一、open 函数原型与核心认知int open(const char *pathname, int flags, mode_t mode);很多新手最大误区:误以为 mode 是文件固定权限、flags 可以随意填写。实际内核执行逻辑非常严格,两个参数分工完全不同。核心规则:flags:控制…

2026/8/26 18:53:29 阅读更多 →
Nacos‑Client 与 Nacos‑Server

Nacos‑Client 与 Nacos‑Server

一句话总结:Nacos‑Server 是独立运行的服务端;Nacos‑Client 是嵌入业务项目里的客户端 SDK,两者配合完成注册中心 配置中心能力。表格对比项Nacos‑ServerNacos‑Client角色服务端(注册 & 配置的中央服务器)客户…

2026/8/26 18:53:29 阅读更多 →

日新闻

Python random 模块常用函数详解:从入门到实战

Python random 模块常用函数详解:从入门到实战

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要: 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数(random()、unifor…

2026/8/26 0:00:40 阅读更多 →
《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》索引目录: 《Microsoft Sql server 2008 Internals》读书笔记--目录索引 在上篇文章中,主要介绍了创建数据库的基本语法和FileGroup的初步知识。需要注意的是: 关于FileGroup 如果你的系统是用Raid设备直接存…

2026/8/26 1:18:18 阅读更多 →
政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体已经从概念试点阶段,转入了政务服务的常态化落地应用;在实际使用过程中,它能自主理解办事需求、辅助完成填报申报、开展材料预审,并联动多个系统协同作业,真正嵌入到政务办理的全流程当中。但在落地推进过…

2026/8/26 1:18:18 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/26 14:45:33 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/26 17:46:43 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/26 14:46:37 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/26 3:50:20 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/26 17:46:39 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/26 1:24:05 阅读更多 →