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 tokens | thinking 字数 |
|---|---|---|---|---|---|
deepseek-v4-flash | 18s | 2 次 / 20 源 | 11 | 25.8k / 4.0k | 415 |
deepseek-v4-pro | 42s | 2 次 / 20 源 | 9 | 11.7k / 4.9k | 3986 |
质量:来源以百度百科、学习强国、学术 PDF 为主,日期精确到「日」,可直接结构化成
{title, date_start, date_precision, summary, detail, category, confidence, sources[]}JSON。杂源:偶有 IP 直连的 PDF 缓存页、韩语版 CRI 页面等低质结果,需在提示词里要求优先中文权威源。
坑#
max_tokens必须给足(建议 ≥8000):deepseek-v4-pro的 thinking 能吃掉几千 token,给 2500 时stop_reason=max_tokens且content里的text块为空 → JSON 完全没输出(不是报错,是"成功返回空")。一次搜索 = 一次完整 model turn:延迟与 token 都按模型调用计费,不是纯检索接口(对比 Coze 1.2–2.5s 纯检索)。
只走 Anthropic 格式:
chat/completions传web_search_options会被静默忽略,模型自称"没有实时联网能力"。搜索未触发要显式报错:若响应里没有
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 协议),headerx-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)、modelstrict 行为:
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,本机):
原始 HTTP:
deepseek-flash+/v1/messages+web_search→ 200 / 5.3s,触发 2 次搜索,返回真实 sources(Reuters、搜狐、DeepSeek 官方文档等)与总结。chat/completions两种写法都是假的:传tools:[web_search_20250305]模型回「我无法联网查询」;传web_search_options:{}不报错但直接编造日期(回「2026年4月26日」,实际 9-27)——静默无效比报错更危险,别用。pi 端到端:
pi -nt -t web_search -p "..."触发 4 次搜索 / 28 条来源 / 总耗时 ~19s,pi 把来源原样引用进答案(in 6.9k / out 289 token,约 ¥0.004)。自动发现验证:不传
-e也在--mode json输出里看到"toolName":"web_search"被调用 7 次 →~/.pi/agent/extensions/自动加载生效。注:-t白名单里写不存在的工具名 pi 不会报错,所以「没报错」不能当作工具已加载的证据,要用调用日志验证。
与 Coze 搜索的取舍#
| 维度 | DeepSeek 原生 web_search | coze-search |
|---|---|---|
| 形态 | 检索 + 生成一次完成,返回结构化 sources | 纯检索,返回标题 + 摘要 + URL + 时间 |
| 延迟 | 18–42s | 1.2–2.5s |
| 来源倾向 | 百度百科、学术 PDF 等(偏国际索引) | 抖音百科、学习强国、博物馆官网(偏中文权威) |
| 集成成本 | 一个 HTTP 调用,无额外依赖 | 需宿主 shim,token 在 openclaw-gateway 进程里 |
| 成本 | 按模型 token 计费(含搜索结果进上下文) | 近免费(网关额度内) |
建议:主用 DeepSeek 原生(一体化、sources 结构化、无需 token shim);Coze 作双源交叉验证,尤其在「事实复核 / 纠错」场景,两源结论不一致时判 low confidence 并提示人工。
讨论 0
还没有人说话。
登录登录后可以参与讨论