DeepSeek-kit联网搜索:零配置一键在线检索
项目背景
对于熟悉 DeepSeek 生态的开发者来说,deepseek-kit 并不陌生——它是一款专为 DeepSeek API 设计的轻量级 Agent 框架。与 LangChain、AI SDK 等通用框架不同,它深度针对 DeepSeek 在"思考模式"下的痛点:reasoning_content 的管控、缓存命中率的提升、结构化输出的兼容等问题,都做了针对性优化。
最新发布的 v0.1.4 版本中,我们新增了一个内置工具:webSearch。它本质上是一个开箱即用的联网搜索模块,无需额外配置即可集成。
为什么需要内置 Web Search
Agent 的能力上限,取决于它能获取信息的广度与时效性。DeepSeek 的训练数据存在截止日期,面对实时新闻、最新文档、当前行情等需求,模型自身无法直接应对。
过去要实现联网搜索,开发者必须自行对接搜索 API(Google、Bing、Ta vily 等),编写工具定义、处理返回结果、再格式化输出——这些样板代码在每个项目中重复出现,极其繁琐。
webSearch 将整个流程封装成一个即插即用的内置工具。它基于 DeepSeek 的 Anthropic 兼容端点实现,无需申请第三方搜索 API,直接使用现有 DeepSeek API Key 即可运行。
使用方式
用法极其简洁——一行代码创建工具,传递给 Agent 即可:
复制代码import { createAgent, createModel, webSearch } from 'deepseek-kit'const model = createModel({ model: 'deepseek-v4-flash' })const agent = createAgent({
model,
tools: [webSearch()],
})const result = await agent.generate({
prompt: 'deepseek-kit是什么东西?',
})console.log(result.text)
仅此而已。无需额外配置,无需注册搜索服务。
配置选项
若需微调行为,webSearch() 也接受一个可选的配置对象:
复制代码const searchTool = webSearch({
thinking: 'enabled', // 是否启用思考模式,默认 enabled
maxTokens: 32768, // 搜索响应的最大 token 数,默认 32768
})
thinking:启用后,模型会在搜索前进行"思考"——优化搜索关键词,提升结果质量。默认开启,与 deepseek-kit 整体的思考模式适配逻辑一致。maxTokens:控制搜索响应返回的最大 token 数,可根据实际需求调整。
这两个参数覆盖了绝大多数场景,大多数情况下保持默认即可。
工作原理
为了更直观地理解,这里梳理一下 webSearch 的完整工作流程:
- 将用户查询发送至 DeepSeek Anthropic 兼容端点(
) - 调用 Anthropic 的
web_search_20250305工具执行实际的搜索 - 模型获取搜索结果后,生成一个摘要式回答
- 返回格式化的搜索结果,包含摘要和来源链接
返回结果包含两部分:
- 搜索结果摘要——模型基于搜索结果生成的综合回答,相当于自动阅读网页并提炼要点
- 来源列表——搜索到的网页标题、链接及页面日期,方便核验原文
简而言之:你提问,它自动联网搜索,并将结果整理清晰后返回。
与其他工具组合
webSearch 并非孤立存在,它可以与任意其他工具协同工作。模型会根据上下文自主判断何时搜索、何时执行其他操作:
复制代码import { createAgent, createModel, tool, webSearch } from 'deepseek-kit'
import { z } from 'zod'const calculatorTool = tool({
name: 'calculator',
description: '执行数学计算',
schema: z.object({ expression: z.string().describe('数学表达式') }),
execute: async (input) => evaluate(input.expression),
})const agent = createAgent({
model,
tools: [webSearch(), calculatorTool],
})const result = await agent.generate({
prompt: '2026年世界杯在哪里举办?另外帮我算一下 123 * 456。',
})
上例中,同时涉及事实查询和数学计算,模型会自动选择调用搜索工具或计算器工具,无需手动调度。
取消支持
另一个实用的特性:搜索请求支持通过 AbortSignal 取消。当用户等待时间过长,或你设置了超时机制时,可直接中断搜索:
复制代码const controller = new AbortController()const result = await agent.generate({
prompt: '搜索最新的 AI 新闻',
signal: controller.signal,
})// 5 秒后取消搜索
setTimeout(() => controller.abort(), 5000)
在网络不稳定或用户取消操作时,此功能极为有用,避免无谓的资源消耗。
总结
webSearch 的设计哲学与 deepseek-kit 一脉相承:不重复造轮子,充分利用 DeepSeek 现有能力,做好适配与封装。无需额外搜索 API Key,无需手写工具定义,一行代码即可让 Agent 接入实时信息。
如果你已在用 deepseek-kit,升级到 v0.1.4 后,只需添加 webSearch()——你的 Agent 将彻底摆脱离线局限。
