deepseek 官方 api 竟然隐藏支持 搜索功能。
太长不看版: deepseek 提供的 anthropic api, 内置了在线搜索功能。如果使用claudecode接入deepseek的,可以考虑通过中转服务把请求中的toolchoice去掉以实现搜索功能支持。
目前不清楚是专门兼容claudecode(但是他又没兼容cc的toolchoice,实际正常调用不了)特殊提供还是后续可能提供联网搜索服务。
一直以来deepseek的api的都比较纯粹,只提供单纯api的服务,联网搜索服务都没有提供,只有自家客户端支持。
最近研究claudecode的工具设计时,发现subagent调用 web_search会失败,截取请求体测试发现是 deepseek好像不支持指定tool调用,比如:"tool_choice": {"type": "tool", "name": "web_search"}
换成通用的:"tool_choice": {"type": "auto"}后或者,不指定工具调用,就可以跑通,并使用deepseek服务端的在线搜索了。
搜索结果是加密返回的,最后模型处理后返回结果,所以说应该不可以把deepseek当免费的搜索引擎薅羊毛。
复现请求体:
{
"model": "deepseek-v4-flash",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Perform a web search for the query: 最新科技新闻"
}
]
}
],
"system": [
{
"type": "text",
"text": "You are Claude Code, Anthropic's official CLI for Claude."
},
{
"type": "text",
"text": "You are an assistant for performing a web search tool use"
}
],
"tools": [
{
"type": "web_search_20250305",
"name": "web_search",
"max_uses": 8
}
],
// "tool_choice": {
// "type": "tool"
// ,
// "name": "web_search"
// },
"tool_choice": {"type": "auto"},
"max_tokens": 32000,
"output_config": {
"effort": "max"
},
"stream": false
}