Skip to content

添加 [DeepSeek 联网搜索] 工具 - #135

Merged
hao65103940 merged 1 commit into
1Panel-dev:mainfrom
gzzwp:feat/tool-deepseek-search
Oct 19, 2026
Merged

hao65103940 merged 1 commit into
1Panel-dev:mainfrom
gzzwp:feat/tool-deepseek-search

Conversation

@gzzwp

@gzzwp gzzwp commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

添加 [DeepSeek 联网搜索] 工具

工具的功能和用途

基于 DeepSeek 官方 Search API(https://api.deepseek.com/v1/tools/search)封装的联网搜索工具,为 MaxKB 智能体提供实时网页检索能力:

  • 实时检索:返回标题、链接、短摘要、长摘要、站点名、发布时间、权威性(authority 04)与重排分数(rerank_score 03)
  • 搜索语法:支持 site: / -site: / "精确短语" / -关键词 / lang: / after: / before:,可组合使用
  • 可选正文:need_content=true 时返回网页正文,默认关闭以节省上下文
  • 双形态返回:结构化 results 数组 + 拼装好的 markdown(带链接与来源标注),模型可直接引用出处
  • 降级友好:所有失败统一返回 success: false 而非抛异常,工作流可据此退化为"不联网回答"

与现有 tool_tavily_search、tool_duckduckgo_search、tool_bochaai_search、tool_langsearch_search 互补:面向已使用 DeepSeek 开放平台的用户,无需再注册第三方搜索服务;DeepSeek 账户余额即可直接使用(5 元/1000 次成功请求,无结果不计费)。

目录结构

tools/tool_deepseek_search/
├── data.yaml                        # 工具配置(name/tags/title/description)
├── logo.png                         # 50x50 图标
├── README.md                        # 功能、参数、调用示例、错误处理、计费限速
├── deepseek_search.py               # 工具源码(可读版本,便于审核)
└── 1.0.0/
    └── DeepSeek联网搜索.tool        # 可直接导入 MaxKB 的工具文件

实现要点(符合 MaxKB 工具开发规范)

  1. 入口函数 main(api_key, query, count=10, need_content="false", ori_question=""),形参名与工具面板参数名逐字一致,且 main 位于代码末尾
  2. api_key 作为启动参数(密码框组件)与输入参数分离,避免 Key 在编排界面暴露;query/need_content/ori_question 支持引用参数,count 支持自定义参数
  3. requests 缺失时自动回退标准库 urllib,无需额外安装依赖
  4. 参数归一化:模型传入的 "5"/5.0/true 等字符串值自动转换为正确类型,count 自动夹逼到 1~50
  5. 分级错误处理:400/401/402/429/500/504 各返回对应的 error 与中文 hint 排查建议

.tool 文件按 MaxKB 导出格式生成:pickle.dumps(ToolInstance(tool_dict, "v2")),仅引用白名单类 tools.serializers.tool.ToolInstance,已通过 RestrictedUnpickler 白名单规则的自测验证。

测试情况

  • 参数校验分支:空 api_key、空 query 均返回结构化错误而非异常
  • 真实接口调用:使用无效 Key 请求线上 API,确认 401 分支返回 success:false + error + hint,HTTP 与 JSON 解析路径无误
  • .tool 文件:按 MaxKB RestrictedUnpickler 白名单反序列化验证通过,字段与 ToolExportModelSerializer 导出字段集一致
  • 真实 Key 全链路测试:需持有有效 DeepSeek API Key(提交者本地已规划,Reviewer 如需可复测)

相关依赖

仅依赖 requests(MaxKB 镜像已内置;代码内置 urllib 回退,缺失时无需 pip 安装)。

审核标准自查(对照"如何提交工具.md")

  • 功能性:单入口、参数归一、分级错误处理、结果结构化
  • 文档:README 含功能/参数/示例/错误处理/计费限速/版本记录
  • 代码质量:类型归一辅助函数、超时控制(30s)、正文截断防上下文爆炸
  • 合规性:调用 DeepSeek 官方公开 API;代码中不含任何 Key 或敏感信息;用户需自备 Key

更新(追加第二个工具:DeepSeek 网页抓取)

按"增量提交"的讨论结果,在同一个分支上追加了配套的 tools/tool_deepseek_fetch/:

  • 功能:调用 DeepSeek Fetch API(/v1/tools/fetch)抓取单个网页,返回标题与 Markdown 正文
  • 与搜索工具组成"搜索 → 抓正文 → 生成回答"的完整链路
  • max_chars 控制正文上限(默认 8000,超长截断并标注)
  • 403/404 等按业务失败处理(success=false + 中文 hint),编排中可据此跳过链接继续
  • 同样通过 RestrictedUnpickler 白名单自测,入口 main 位于代码末尾

若维护者认为应拆分独立 PR,告知即可,我会立即拆出。

基于 DeepSeek 官方 Search API(https://api.deepseek.com/v1/tools/search)
封装的联网搜索工具,为 MaxKB 智能体提供实时网页检索能力。

- 支持 site:/lang:/after:/before:/-关键词 等搜索语法
- 可选返回网页正文(need_content)
- 同时返回结构化 results 与带引用的 markdown
- 分级错误处理(400/401/402/429/5xx)并给出排查提示
- api_key 作为启动参数(密码框),与输入参数分离
@github-actions

Copy link
Copy Markdown

✅ PR 自动校验结果

状态: 校验通过

本次 PR 涉及 1 个工具目录:

🔍 校验: tools/tool_deepseek_search

==================================================
✅ 所有校验通过!

@hao65103940
hao65103940 merged commit 63fb2ee into 1Panel-dev:main Oct 19, 2026
1 check passed
gzzwp added a commit to gzzwp/MaxKB-toolstore that referenced this pull request Oct 19, 2026
与 1Panel-dev#135 的联网搜索工具配套:Search 负责检索,
Fetch 负责抓取单个网页并转换为 Markdown 正文。

- POST https://api.deepseek.com/v1/tools/fetch
- max_chars 控制正文上限,超长自动截断并标注
- 403/404 等按业务失败处理(success=false + 中文 hint),不抛异常
- api_key 作为启动参数(密码框),与输入参数分离
gzzwp added a commit to gzzwp/MaxKB-toolstore that referenced this pull request Oct 19, 2026
Tool.desc 在数据库中是 varchar(128),1Panel-dev#135 中的描述为 168 字符,
导入时抛 StringDataRightTruncation: value too long for type character varying(128)。
将描述压缩至 108 字符并重新生成 .tool,其余文件与 1Panel-dev#135 一致。
hao65103940 pushed a commit that referenced this pull request Oct 19, 2026
配套 DeepSeek 联网搜索工具(#135):Search 负责检索,Fetch 负责抓正文。

- POST https://api.deepseek.com/v1/tools/fetch
- max_chars 控制正文上限(默认 8000),超长截断并标注
- 403/404 等按业务失败处理(success=false + 中文 hint),不抛异常
- 描述压缩至 89 字符,避免 Tool.desc 的 varchar(128) 溢出
hao65103940 added a commit that referenced this pull request Oct 19, 2026
添加 [DeepSeek 网页抓取] 工具(Fetch,配套 #135)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants