DeepSeek 原生联网搜索实测:只有 Anthropic 端点能用,chat/completions 那条路是假的

AI 速览

还没总结过 —— 过一会儿再看。

DeepSeek 原生联网搜索(Anthropic 兼容端点)#

结论:DeepSeek 官方 API 的 chat/completions 没有联网能力,但 Anthropic 兼容端点 /anthropic/v1/messages 支持原生 web_search 服务端工具(web_search_20250305),返回结构化检索结果。 实测:2026-09-26 于本机 103.217.201.96,用 deepseek-harness/data/.credentials.yaml 里同一把 DEEPSEEK_API_KEY。 关联:AI知识速览网-开发方案、coze-search、Claude Code三路径对比

调用方式#

POST https://api.deepseek.com/anthropic/v1/messages
headers: x-api-key: $DEEPSEEK_API_KEY
         anthropic-version: 2023-06-01
         content-type: application/json

{
  "model": "deepseek-v4-flash",          // 或 deepseek-v4-pro
  "max_tokens": 8000,
  "messages": [{"role": "user", "content": "..."}],
  "tools": [{"type": "web_search_20250305", "name": "web_search", "max_uses": 5}]
}
  • 模型名:anthropic 端点用 deepseek-v4-flash / deepseek-v4-pro(与 /models 返回的 deepseek-flash 命名不完全一致,两者都可用)。

  • 返回结构:content[] 依次为 thinking → server_tool_use(web_search) → web_search_tool_result(内含 web_search_result 列表,字段 title / url / page_age)→ text(模型总结)。

  • 搜索次数:usage.server_tool_use.web_search_requests。

实测对比(2026-09-26,任务「安史之乱」抽取结构化历史事件)#

模型耗时搜索抽出事件input / output tokensthinking 字数
deepseek-v4-flash18s2 次 / 20 源1125.8k / 4.0k415
deepseek-v4-pro42s2 次 / 20 源911.7k / 4.9k3986
  • 质量:来源以百度百科、学习强国、学术 PDF 为主,日期精确到「日」,可直接结构化成 {title, date_start, date_precision, summary, detail, category, confidence, sources[]} JSON。

  • 杂源:偶有 IP 直连的 PDF 缓存页、韩语版 CRI 页面等低质结果,需在提示词里要求优先中文权威源。

坑#

  1. max_tokens 必须给足(建议 ≥8000):deepseek-v4-pro 的 thinking 能吃掉几千 token,给 2500 时 stop_reason=max_tokens 且 content 里的 text 块为空 → JSON 完全没输出(不是报错,是"成功返回空")。

  2. 一次搜索 = 一次完整 model turn:延迟与 token 都按模型调用计费,不是纯检索接口(对比 Coze 1.2–2.5s 纯检索)。

  3. 只走 Anthropic 格式:chat/completions 传 web_search_options 会被静默忽略,模型自称"没有实时联网能力"。

  4. 搜索未触发要显式报错:若响应里没有 web_search_tool_result 块,不要退化成让模型凭记忆答题(dsh 官方插件的 strict 模式就是这么做的)。

接进 pi:自定义工具 web_search(2026-09-27)#

pi 本身没有内置服务端 web_search,但不需要改 pi 本体——包成一个自定义工具(extension)即可,pi 里所有模型(含不支持联网的模型)都能用:

  • 文件:~/.pi/agent/extensions/web-search.ts(放这里即自动发现,/reload 可热重载,无需写 settings、无需 -e)

  • 背后调用:POST https://new-api.hsfp.cn/v1/messages(Anthropic 协议),header x-api-key + anthropic-version: 2023-06-01,body 里 tools:[{type:"web_search_20250305",name:"web_search",max_uses:N}]

  • key/model/URL 可用 WEB_SEARCH_API_KEY / WEB_SEARCH_MODEL(默认 deepseek-flash)/ WEB_SEARCH_URL 覆盖,默认从 ~/.pi/agent/models.json 的 new-api-half 里读 apiKey,不硬编码

  • 返回值:模型总结 + --- 来源(N 次搜索 / M 条)--- 编号列表(title + url)

  • 工具参数:query(必填)、maxUses(默认 3)、model

  • strict 行为:usage.server_tool_use.web_search_requests == 0 或没有 web_search_tool_result 块时直接抛错(工具报 isError),不让模型退化成凭记忆答题

  • max_tokens 固定给 8000:给少会 stop_reason=max_tokens 且 text 块为空(见上文坑 1)

实测(2026-09-27,本机):

  1. 原始 HTTP:deepseek-flash + /v1/messages + web_search → 200 / 5.3s,触发 2 次搜索,返回真实 sources(Reuters、搜狐、DeepSeek 官方文档等)与总结。

  2. chat/completions 两种写法都是假的:传 tools:[web_search_20250305] 模型回「我无法联网查询」;传 web_search_options:{} 不报错但直接编造日期(回「2026年4月26日」,实际 9-27)——静默无效比报错更危险,别用。

  3. pi 端到端:pi -nt -t web_search -p "..." 触发 4 次搜索 / 28 条来源 / 总耗时 ~19s,pi 把来源原样引用进答案(in 6.9k / out 289 token,约 ¥0.004)。

  4. 自动发现验证:不传 -e 也在 --mode json 输出里看到 "toolName":"web_search" 被调用 7 次 → ~/.pi/agent/extensions/ 自动加载生效。注:-t 白名单里写不存在的工具名 pi 不会报错,所以「没报错」不能当作工具已加载的证据,要用调用日志验证。

<!-- project: path:/root/.pi/agent/extensions -->

与 Coze 搜索的取舍#

维度DeepSeek 原生 web_searchcoze-search
形态检索 + 生成一次完成,返回结构化 sources纯检索,返回标题 + 摘要 + URL + 时间
延迟18–42s1.2–2.5s
来源倾向百度百科、学术 PDF 等(偏国际索引)抖音百科、学习强国、博物馆官网(偏中文权威)
集成成本一个 HTTP 调用,无额外依赖需宿主 shim,token 在 openclaw-gateway 进程里
成本按模型 token 计费(含搜索结果进上下文)近免费(网关额度内)

建议:主用 DeepSeek 原生(一体化、sources 结构化、无需 token shim);Coze 作双源交叉验证,尤其在「事实复核 / 纠错」场景,两源结论不一致时判 low confidence 并提示人工。

讨论 0

还没有人说话。

    登录登录后可以参与讨论