ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

DeepSeek-Agent-Harness-2026终极指南-第3章第12节-API协议内幕-DeepSeek API能力全景:工具调用、思考模式与Anthropic格式

DeepSeek-Agent-Harness-2026终极指南-第3章第12节-API协议内幕-DeepSeek API能力全景:工具调用、思考模式与Anthropic格式 DeepSeek API 能力全景工具调用、思考模式与 Anthropic 格式同一个deepseek-flash普通调用、边想边说、点菜调工具是三种完全不同的模式。很多教程只教你第一种然后你一写 Agent 就发现对不上号。这一节把 DeepSeek API 的全部能力一次盘清每种模式什么时候用、怎么开、什么坑。本文导航能力全景一张图能力一Tool Calls——Agent 的命根子能力二思考模式——让模型先想后说能力三Anthropic 格式端点——谁在用能力四FIM 与 JSON Output组合拳能力怎么搭配小结下节预告上一节我们把 messages 四角色和 token 摸透了数据结构的地基打完。今天换个视角——从能力维度看 DeepSeek API。为什么要专门用一节讲这个因为我见过太多人写 Agent 翻车的起点就是拿着普通聊天的认知去写 Agent不知道工具调用要走tools参数、不知道思考模式的输出藏在reasoning_content里、流式解析时对着两个内容字段一脸懵。API 文档是按接口列表组织的但你要的是按使用场景组织的能力地图。这节就是干这个的。能力全景一张图先把家底全摆出来。DeepSeek API以 deepseek-flash 为例对外提供的能力一共五块DeepSeek API 能力全景能力一 Tool Calls工具调用Agent 的命根子能力二 思考模式reasoning_content先想后说能力三 Anthropic 格式Claude 生态客户端直连能力四 FIM代码补全前文后文填中间能力五 JSON Output结构化输出机器可读Agent / 编程智能体DeepPilot 主战场Claude 生态工具复用IDE 补全 / 代码助手下游程序消费解析、入库、自动化五个能力三个用途方向。DeepPilot 主要吃前两个Tool Calls 思考模式第三个是生态兼容红利后两个在特定场景救场。逐个拆。能力一Tool Calls——Agent 的命根子Tool Calls工具调用也叫 Function Calling是 Agent 和聊天机器人的分水岭。还记得第 6 节的没手缺陷吗Tool Calls 就是给模型装手的官方协议。完整链路四步一步都不能少deepseek-flash你的 Harnessdeepseek-flash你的 Harness① 请求带上 tools 参数工具说明书② 返回 tool_calls模型点菜③ 本地执行工具拿到结果④ 结果用 tool 角色回填再次请求模型看到结果继续点菜或给出最终答案对照代码看①②③④长这样tool_calls_demo.py —— Tool Calls 四步全链路需 DEEPSEEK_API_KEY。importjsonimportosfromopenaiimportOpenAI clientOpenAI(base_urlhttps://api.deepseek.com,api_keyos.environ[DEEPSEEK_API_KEY])# ① 第一步把工具说明书发给模型JSON Schema 格式TOOLS[{type:function,function:{name:get_weather,description:查询指定城市当前天气,parameters:{type:object,properties:{city:{type:string,description:城市名如北京},},required:[city],},},}]messages[{role:user,content:北京今天适合跑步吗}]respclient.chat.completions.create(modeldeepseek-flash,messagesmessages,toolsTOOLS,)msgresp.choices[0].message# ② 第二步模型没直接回答而是点菜print(模型决定调用:,msg.tool_calls[0].function.name)print(参数是:,msg.tool_calls[0].function.arguments)messages.append(msg)# 把 assistant 的点菜记录进历史# ③ 第三步本地执行工具这里假装查到了天气argsjson.loads(msg.tool_calls[0].function.arguments)resultjson.dumps({city:args[city],temp:26℃,aqi:42},ensure_asciiFalse)# ④ 第四步结果用 tool 角色回填messages.append({role:tool,tool_call_id:msg.tool_calls[0].id,content:result})finalclient.chat.completions.create(modeldeepseek-flash,messagesmessages)print(最终回答:,final.choices[0].message.content)$ uv run python tool_calls_demo.py 模型决定调用: get_weather 参数是: {city: 北京} 最终回答: 北京今天 26℃、空气质量指数 42非常适合跑步去吧三个协议细节划重点全是实战踩坑点arguments是字符串不是对象返回的是{city: 北京}这样的一坨字符串必须json.loads()一次。忘了解析直接当 dict 用第一次跑必炸点菜消息必须先入史模型返回的msg含 tool_calls 的 assistant 消息要 append 进 messages再回填 tool 结果。漏了这步API 会报tool 消息找不到对应的调用400 错误模型可以一口气点多个菜并行调用msg.tool_calls是列表你要逐个执行、逐个按 ID 回填这套协议你会在第 17 节再深挖一遍 JSON Schema 细节并在第 8 章的 DeepPilot v0.3 里亲手把它跑成完整的 Agent Loop。现在先把四步链路刻进脑子。能力二思考模式——让模型先想后说第二个能力是 DeepSeek 的招牌思考模式。开启后模型回答前会先产出一大段reasoning_content思考过程然后才是content正式答案。怎么开看模型选择不用加魔法参数。以 deepseek-flash 为例通过模型名或开关字段控制不同时期入口略有差异以官方文档为准。开启后响应长这样respclient.chat.completions.create(modeldeepseek-flash,# 思考模式下的调用messages[{role:user,content:9.11 和 9.9 哪个大}],)msgresp.choices[0].messageprint(思考过程:,msg.reasoning_content[:80],...)# 注意这个字段print(正式答案:,msg.content)$ uv run python think_demo.py 思考过程: 比较两个小数的大小先看整数部分都是9。再看小数部分0.11和0.9…… 正式答案: 9.9 更大。关键点在reasoning_content这个字段——思考内容和正式答案分家存放。这个设计对 Agent 工程是巨大利好我给你拆三条成本与上下文分离思考内容很长经常比答案本身还长但它不一定需要进上下文历史。你可以选择只在当前轮展示、不追加进 messages省一大笔 tokenUI 呈现友好把思考折叠展示、答案直接展示就是各家智能体产品的标配交互什么时候开简单任务改个错别字、翻译一句话开思考纯属浪费钱和时间复杂推理调试、规划、数学开了准确率肉眼可见地涨。所以 DeepPilot 会在第 11 章做一个按任务复杂度动态开关思考的策略什么时候思考内容尤其重要Agent 决策时。让模型在点菜前先想清楚我为什么调这个工具、预期拿到什么能显著减少瞎调工具、循环调错工具的毛病。这也是为什么 ReAct 里的 RReason和 AAct要交替——第 16 节见。能力三Anthropic 格式端点——谁在用第三个能力有点冷门但很妙DeepSeek 提供Anthropic 格式的 API 端点。什么意思Claude 生态有一堆现成的客户端和工具各类 Claude Code 兼容客户端、Anthropic SDK 生态的应用它们全按 Anthropic 的消息格式说话。DeepSeek 直接给这类客户端开了个说家乡话的入口——把 Anthropic 格式的请求翻译成自家模型调用。价值在哪生态复用。你手头如果有按 Anthropic 协议写的应用或工具链不用改一行代码把base_url指到 DeepSeek 的 Anthropic 端点大脑就换成了 deepseek-flash。# Anthropic SDK 直连 DeepSeek示意importanthropic clientanthropic.Anthropic(base_urlhttps://api.deepseek.com/anthropic,api_keyos.environ[DEEPSEEK_API_KEY],)msgclient.messages.create(modeldeepseek-flash,max_tokens1024,messages[{role:user,content:你好}],)print(msg.content[0].text)你发现没有这和第 10 节讲的OpenAI 兼容是同一个故事换个主角——DeepSeek 同时兼容两套事实标准等于同时接入两大生态的存量用户。这是事实标准统治世界的又一实证今天不入流的协议没人兼容已成事实标准的协议哪怕竞品也要笑脸相迎。对 DeepPilot 的启示第一层模型接入层如果想同时服务 OpenAI 生态和 Anthropic 生态的客户端DeepSeek 一个后端就够了不用部署两套服务。能力四FIM 与 JSON Output剩下两个能力快速过但别跳过——特定场景它们是杀器。FIMFill In the Middle中间填充普通对话是给你前文续后文FIM 是给你前文和后文填中间。这是为 IDE 代码补全设计的——光标停在代码中间模型要补的是prefix ??? suffix里的那截respclient.completions.create(modeldeepseek-flash,promptfim▁begindef add(a, b):\n fim▁hole\n return resultf▁end,)# 补出中间那行result a b你哪天要给自己的 IDE 写补全工具时行内补全用 FIM 比对话模式又准又省。JSON Output结构化输出强制模型输出合法 JSON把模型说人话变成模型说机器话。一个参数的事respclient.chat.completions.create(modeldeepseek-flash,messages[{role:user,content:用JSON介绍你自己字段name, tagline}],response_format{type:json_object},)# 返回一定是合法 JSON{name: DeepSeek, tagline: ...}为什么单独强调它因为 Agent 的输出经常要被下游程序消费解析、入库、触发自动化裸文本模型偶尔会给你包一层 markdown 代码块、加句好的这是JSON解析就炸了。JSON Output 是官方兜底下一节第 15 节会把它和 pydantic 组合成结构化输出的完整攻防体系。组合拳能力怎么搭配单点能力看完了实战里它们是组合着用的。给你一张场景-能力对照表这张表就是 DeepPilot 各模块的选型依据场景用什么能力组合方式聊天机器人基础对话不开思考省钱快速编程 AgentDeepPilot 主线Tool Calls 思考模式复杂任务开思考决策质量高表单/流水线自动化JSON Output pydantic强校验失败重试第 15 节IDE 行内补全FIMprefixsuffix 填中间Claude 生态客户端复用Anthropic 端点base_url 一换就用注意一个原则能力开得越多token 和延迟越贵。思考模式动辄翻倍输出量工具说明书每轮都占输入 token。DeepPilot 不会无脑全开——第 11 章上下文工程里会讲按需装配简单改写任务用裸对话规划任务才开思考加工具。这也是五条铁律里算清每一分钱的落地。小结Tool Calls 四步链路带说明书→模型点菜→本地执行→tool 角色回填是 Agent 的命根子arguments是字符串要先json.loads点菜消息必须入史。思考模式的输出在reasoning_content字段与content分家复杂任务开提准确率简单任务关省钱省时。Anthropic 格式端点让 Claude 生态客户端零改造换脑 DeepSeek——事实标准的统治力再添一证。FIM 填中间是 IDE 补全专用JSON Output保证输出机器可读是下游自动化的官方兜底。能力组合原则按场景选配无脑全开就是烧钱——这也是后面上下文工程按需装配思想的预演。下节预告能力地图拿到手下一节聊聊钱——峰谷定价与成本模型算清每一分钱的账。闲时和高峰价差 2 倍、缓存命中只要 0.02 元这些数字怎么变成你的省钱策略Prefix Caching 的原理是什么、为什么 Agent 循环天然吃到缓存红利我们直接搭一张成本核算表再用代码跑一个真实 Agent 任务的完整成本推演。看完这节你对烧钱会有完全不同的手感。如果觉得本文对你有帮助欢迎点赞、收藏、关注三连本系列持续更新中80篇硬核实战关注不迷路~
返回列表