GitHub 仓库 :github.com/FliPPeDroun...
官方文档 :deepseek-kit.vercel.app
如果这个项目对你有帮助,欢迎给个 Star ⭐ 支持一下!
背景
deepseek-kit 是一个专为 DeepSeek API 设计的轻量级 Agent 框架,核心解决的是通用框架(如 LangChain、AI SDK)在 DeepSeek 思考模式下的适配问题------reasoning_content 管理、缓存命中率优化、结构化输出兼容等。
在 v0.1.4 版本中,我们新增了一个内置工具:webSearch。
为什么需要内置 Web Search
Agent 的能力边界很大程度上取决于它能获取什么信息。DeepSeek 的训练数据有截止日期,对于实时事件、最新文档、当前数据这类需求,模型本身无法回答。
之前要实现联网搜索,你需要自己对接搜索 API(Google、Bing、Tavily 等),写工具定义、处理返回结果、格式化输出------这些样板代码每个项目都得写一遍。
webSearch 把这些步骤封装成了一个开箱即用的内置工具,基于 DeepSeek 的 Anthropic 兼容端点实现,不需要额外申请第三方搜索 API,用你现有的 DeepSeek API Key 就能直接使用。
使用方式
最简单的用法,一行代码创建工具,传给 Agent 即可:
ts
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() 接受一个可选的配置对象:
ts
const searchTool = webSearch({
thinking: 'enabled', // 是否启用思考模式,默认 enabled
maxTokens: 32768, // 搜索响应的最大 token 数,默认 32768
})
thinking:启用后模型会在搜索前先推理,优化搜索关键词,提高结果质量。默认开启,与 deepseek-kit 的思考模式适配逻辑一致。maxTokens:控制搜索响应的最大 token 数。
工作原理
webSearch 的工作流程:
- 将用户查询发送到 DeepSeek Anthropic 兼容端点(
https://api.deepseek.com/anthropic) - 使用 Anthropic 的
web_search_20250305工具执行搜索 - 模型基于搜索结果生成摘要回答
- 返回格式化的搜索结果,包含摘要和来源链接
返回结果包含两部分:
- 搜索结果摘要------模型基于搜索结果生成的综合回答
- 来源列表------搜索到的网页标题、链接和页面日期
与其他工具组合
webSearch 可以和其他工具一起使用,模型会根据上下文自主决定调用哪个工具:
ts
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 取消:
ts
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 联网。
GitHub :github.com/FliPPeDroun...
觉得有用的话,给个 Star ⭐ 就是最大的支持!