发布时间:2026/8/25 13:31:38
深入浅出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字段能直接看到命中量好奇就打出来、历史裁剪、小任务用小模型。

相关新闻

2026/8/25 13:31:38

渲染管线噔噔噔

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

2026/8/25 15:52:07

轻松玩转Python文件操作:移动、删除

哈喽,大家好,我是木头左!文件操作基础处理计算机文件之际, 时常得去执行诸如移动以及删除这般的基本操作, 提供了好些内置的库用以协助做成这些任务, 其中最为常用的尽皆是os模块与模块, 这两个模块涵盖着好多跟文件与目录操作有关联的函数。…

2026/8/25 15:52:07

导师反复要求补图?用AI把毕业设计逻辑整理成清晰结构

你好,我是小索奇。 本文围绕“导师反复要求补图?用AI把毕业设计逻辑整理成清晰结构”展开,重点说明如何用流程图、结构图和数据图提升内容表达效率。本文重点:明确问题、拆分逻辑、选择图表类型,并用清晰段落帮助读者快…

2026/8/25 15:52:07

Python 封装利器 —— @property 深度详解

1.. 引言:封装 ≠ 复杂面向对象三大特性:封装、继承、多态。封装的核心是隐藏内部数据,对外提供受控的访问接口。在 Python 中,实现封装最常见的武器就是 property 装饰器。它让你既能像访问普通属性一样自然(obj.attr…

2026/8/25 15:52:07

企业文件协作三大痛点:版本冲突、权限失控、集成难题的技术解析

企业文件协作三大痛点:版本冲突、权限失控、集成难题的技术解析 在企业级文件管理场景中,「版本混乱」「协作冲突」「权限失控」是三个高频痛点。无论是研发团队的多人并行开发,还是设计部门的文件来回批注,传统的网盘工具往往只解…

2026/8/25 15:52:07

opencode免费模型是“数据换额度”?

答案是会,根据opencode.ai官方文档,免费模型除了Ox Alpha不会拿数据用于训练,其他免费模型都会。 原文链接:opencode免费模型是“数据换额度”? 1. 官方写的免费原因,是“限时收集反馈” opencode.ai/doc…

2026/8/25 15:47:06

rocketMQ proxy 延迟队列

Proxy 本身不做延迟队列的存储和调度 (那是 Broker 端 ScheduleMessageService / TimerMessageStore 的职责),Proxy 只负责 延迟消息的「发送端属性填充 延迟级别换算」以及消费端识别 。相关实现集中在 gRPC 发送链路和配置里。 发送端&…

2026/8/25 1:04:19

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

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

2026/8/25 11:48:27

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

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

2026/8/24 8:17:29

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

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

2026/8/25 0:04:14

三步把QQ空间历史说说导出到本地:GetQzonehistory 极简指南

三步把QQ空间历史说说导出到本地:GetQzonehistory 极简指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory Meta Description:GetQzonehistory 是一个QQ空间历史说…

2026/8/25 0:04:14

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

【题目来源】 https://www.luogu.com.cn/problem/P7912 【题目描述】 小熊的水果店里摆放着一排 n 个水果。每个水果只可能是苹果或桔子,从左到右依次用正整数 1,2,…,n 编号。连续排在一起的同一种水果称为一个“块”。小熊要把这一排水果挑到若干个果篮里&#x…

2026/8/24 13:42:17

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/24 18:13:48

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/25 1:08:14

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…