第 3 课

接入 Claude Code,再用 Search / Fetch 做带引用的联网问答

用环境变量把 DeepSeek 接进 Claude Code,用 Anthropic SDK 调用,再用官方 Search / Fetch 接口写出先搜索、再带编号引用作答的脚本。

图文22 分钟DeepSeek 官方文档 ↗

课程目录第 3 / 3 课

学习位置仅保存在当前浏览器,有效期 180 天。

01 / 图文教材

图文教材

本课按 DeepSeek 官方 接入 Claude Code、Anthropic API、网页搜索与抓取 与 V4.1-Flash-1017 发布公告 整理(2026-10-22 核对);Anthropic SDK 与 Search 接口的报错输出为 2026-10-22 实测(anthropic 2.0.0)。 目标:用 DeepSeek 驱动 Claude Code 写代码;用 Anthropic SDK 调 DeepSeek;再用官方 Search / Fetch 接口给自己的应用加上「先搜索、再回答、附来源」的能力。

你将得到什么

  • 一组可直接粘贴的 Claude Code 环境变量(Linux / macOS 与 Windows 各一份)
  • anthropic_call.py:用 Anthropic SDK 调 deepseek-flash
  • search_answer.py:调 Search 接口拿结果,再让 deepseek-flash 带编号引用作答
  • 一张 Search / Fetch 计费与限速速查表

先修:已完成第 1 课;本机有 Node.js 18+(Windows 还需 Git for Windows)。

一、把 DeepSeek 接进 Claude Code

DeepSeek 提供 Anthropic 兼容地址 https://api.deepseek.com/anthropic,Claude Code 只要改环境变量就能用 DeepSeek 模型。

1. 安装 Claude Code(已安装可跳过):

npm install -g @anthropic-ai/claude-code
claude --version

对照结果:打印出版本号即安装成功。

2. 配置环境变量(官方推荐配置,<your DeepSeek API Key> 换成你的 key)。Linux / macOS:

export ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic
export ANTHROPIC_AUTH_TOKEN=<your DeepSeek API Key>
export ANTHROPIC_MODEL=deepseek-flash[1m]
export ANTHROPIC_DEFAULT_OPUS_MODEL=deepseek-flash[1m]
export ANTHROPIC_DEFAULT_SONNET_MODEL=deepseek-flash[1m]
export ANTHROPIC_DEFAULT_HAIKU_MODEL=deepseek-flash
export CLAUDE_CODE_SUBAGENT_MODEL=deepseek-flash
export CLAUDE_CODE_EFFORT_LEVEL=max
export CLAUDE_CODE_AUTO_COMPACT_WINDOW=786432

Windows PowerShell:

$env:ANTHROPIC_BASE_URL="https://api.deepseek.com/anthropic"
$env:ANTHROPIC_AUTH_TOKEN="<your DeepSeek API Key>"
$env:ANTHROPIC_MODEL="deepseek-flash[1m]"
$env:ANTHROPIC_DEFAULT_OPUS_MODEL="deepseek-flash[1m]"
$env:ANTHROPIC_DEFAULT_SONNET_MODEL="deepseek-flash[1m]"
$env:ANTHROPIC_DEFAULT_HAIKU_MODEL="deepseek-flash"
$env:CLAUDE_CODE_SUBAGENT_MODEL="deepseek-flash"
$env:CLAUDE_CODE_EFFORT_LEVEL="max"
$env:CLAUDE_CODE_AUTO_COMPACT_WINDOW="786432"

每一行的作用:

变量作用
ANTHROPIC_BASE_URL / ANTHROPIC_AUTH_TOKEN请求改发到 DeepSeek,并用 DeepSeek 的 key 鉴权
ANTHROPIC_MODEL 与三个 DEFAULT_*_MODEL主模型和 Opus / Sonnet / Haiku 档位都用 deepseek-flash;[1m] 表示使用 1M 上下文
CLAUDE_CODE_SUBAGENT_MODEL子智能体也用 deepseek-flash
CLAUDE_CODE_EFFORT_LEVEL思考强度设为 max
CLAUDE_CODE_AUTO_COMPACT_WINDOW自动压缩对话所参照的上下文窗口(786432 = 768K token)

这些 export 只对当前终端有效;想长期使用,把它们写进 ~/.bashrc 或 ~/.zshrc。

3. 进入项目启动:

cd /path/to/my-project
claude

进入后可以先让它做一件只读的小事验证连通,例如输入:

用三句话概括这个仓库的文件夹结构,不要修改任何文件。

对照结果:Claude Code 读取项目文件后用中文给出概括。到 DeepSeek 开放平台查看用量,能看到这次会话产生的 deepseek-flash 调用。

两个要知道的细节:

  • 模型映射:如果你不改模型变量、仍传 Claude 模型名,DeepSeek 会自动映射:claude-opus 开头的映射到 deepseek-v4-pro(按 V4 Pro 计价),claude-sonnet / claude-haiku 开头的映射到 deepseek-flash。上面的配置把所有档位都指向 Flash,费用最低。
  • 联网搜索:在 Claude Code 里提问需要联网时,模型会调用 Web Search,由 DeepSeek 的搜索接口完成。官方公告写明:这部分 Search / Fetch 调用目前不计费,北京时间 2026 年 11 月 1 日 00:00 起按次收费(另有总结搜索结果产生的 token 费用)。

二、用 Anthropic SDK 调 DeepSeek

已经在用 Anthropic SDK 的应用,改两个环境变量就能切到 DeepSeek:

pip3 install anthropic
export ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic
export ANTHROPIC_API_KEY=$DEEPSEEK_API_KEY

新建 anthropic_call.py(官方示例):

import anthropic

client = anthropic.Anthropic()
message = client.messages.create(
    model="deepseek-flash",
    max_tokens=1000,
    system="You are a helpful assistant.",
    messages=[
        {
            "role": "user",
            "content": [{"type": "text", "text": "Hi, how are you?"}],
        }
    ],
)
print(message.content)
python3 anthropic_call.py

对照结果:打印一个内容块列表(message.content),其中 type='text' 的 TextBlock 里就是模型的回答。

key 不对时(2026-10-22 实测,最后一行):

anthropic.AuthenticationError: Error code: 401 - {'error': {'message': 'Authentication Fails, Your api key: ****-key is invalid (request_id: 713a720a-be32-4e14-946e-cfb797b2ebb2)', 'type': 'authentication_error', 'param': None, 'code': 'invalid_request_error'}}

注意:model 写不以 claude 开头、又不是 DeepSeek 模型名的值,会直接返回 400。Anthropic 格式下调思考强度用 output_config,例如 {"effort": "high"}。

三、Search 接口:用 DeepSeek 自研搜索引擎搜网页

V4.1-Flash-1017 发布时,DeepSeek 把网页端一直在用的自研搜索引擎开放为 API。鉴权和对话接口相同,都是 Bearer key。

curl https://api.deepseek.com/v1/tools/search \
  -H "Authorization: Bearer $DEEPSEEK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "DeepSeek V4 模型 发布",
    "count": 5,
    "need_content": true
  }'

对照结果(官方文档示例,results 数组每项结构如下;content 只在 need_content 为 true 时有值):

{
  "results": [
    {
      "rerank_score": 2.4,
      "title": "DeepSeek V4 模型发布",
      "url": "https://example.com/deepseek-v4",
      "snippet": "DeepSeek V4 已上线,支持工具调用与长上下文。",
      "summary": "DeepSeek 发布了 V4 模型。此次发布改进了工具调用与长上下文能力,适合 Agent 工作流。",
      "content": "DeepSeek V4 现已正式上线……",
      "site_name": "Example News",
      "site_icon": "https://example.com/favicon.ico",
      "date": "2026-06-01T00:00:00+00:00",
      "authority": 3
    }
  ]
}
字段用法
snippet100–200 字短摘要,适合前端展示
summary600–800 字长摘要,适合直接喂给模型
rerank_score0–3 分,≥1.5 为优质结果
authority0–4(-1 表示未知),≥3 为极权威来源
dateUTC 的 RFC 3339 时间,未知时为 null

请求参数:query 必填(1–128 个字符);count 为 1–50,默认 10;need_content 默认 false。query 里可以直接用搜索语法,常用的有:

DeepSeek site:github.com OR site:huggingface.co
DeepSeek -site:example.com
DeepSeek lang:zh,en
DeepSeek after:2026-01-01
DeepSeek "精确短语"

用假 key 调用的样子(2026-10-22 实测,HTTP 401):

{"error":{"message":"Authentication Fails, Your api key: ****-key is invalid (request_id: eff7c3cb-f7ed-47c7-bff8-d6f7e369d20c)","type":"authentication_error","param":null,"code":"invalid_request_error"}}

四、Fetch 接口:把一个网页抓成 Markdown

curl https://api.deepseek.com/v1/tools/fetch \
  -H "Authorization: Bearer $DEEPSEEK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://api-docs.deepseek.com/zh-cn/guides/search"}'

对照结果(结构同官方示例;下面的 title 与 content 开头按该页面实际内容示意,content 是整页 Markdown 正文):

{
  "title": "网页搜索与抓取 | DeepSeek API Docs",
  "content": "# 网页搜索与抓取\n\nSearch 接口和 Fetch 接口为 Agent 与 RAG 应用提供实时网页内容……"
}

url 必须是含 host 的 http/https 地址,不能带用户名密码。抓不到可用正文时返回 404,被安全策略拒绝时返回 403;这两种属于不改请求就不要重试的错误。

五、组合起来:先搜索,再带引用作答

下面把 Search 接口和第 1 课的对话接口串起来:先搜 5 条结果,把 summary 编号后交给 deepseek-flash,要求回答时用 [1]、[2] 标注来源。新建 search_answer.py:

import os
import sys
import requests
from openai import OpenAI

KEY = os.environ["DEEPSEEK_API_KEY"]
question = sys.argv[1] if len(sys.argv) > 1 else "DeepSeek V4.1 Flash 1017 有哪些更新?"

# 1) 搜索:拿 5 条结果的长摘要
r = requests.post(
    "https://api.deepseek.com/v1/tools/search",
    headers={"Authorization": f"Bearer {KEY}"},
    json={"query": question, "count": 5, "ori_question": question},
    timeout=60,
)
r.raise_for_status()
results = r.json()["results"]
sources = "\n\n".join(
    f"[{i}] {x['title']}\n{x['url']}\n{x['summary']}" for i, x in enumerate(results, 1)
)

# 2) 作答:只依据搜索结果,用编号标注来源
client = OpenAI(api_key=KEY, base_url="https://api.deepseek.com")
resp = client.chat.completions.create(
    model="deepseek-flash",
    messages=[
        {"role": "system", "content": "只根据给出的搜索结果回答,用中文,每个事实后用 [编号] 标注来源;结果里没有的就说不知道。"},
        {"role": "user", "content": f"问题:{question}\n\n搜索结果:\n{sources}"},
    ],
    extra_body={"thinking": {"type": "disabled"}},
)
print(resp.choices[0].message.content)
print("\n来源:")
for i, x in enumerate(results, 1):
    print(f"[{i}] {x['url']}")
pip3 install requests openai
python3 search_answer.py "DeepSeek V4.1 Flash 1017 有哪些更新?"

对照结果(结构如下;具体内容取决于当时的搜索结果):

DeepSeek V4.1 Flash 已更新到 1017 版本,网页端、App 与 API 同步切换 [1]……同时开放了 Search 与 Fetch 接口,价格为 5 元 / 千次 [2]……

来源:
[1] https://api-docs.deepseek.com/zh-cn/news/news261017
[2] (第 2 条搜索结果的网址)

这里用 ori_question 把用户原问题一起传给搜索接口,官方说明这有助于理解搜索意图;作答时关掉思考模式,是因为这一步主要是归纳,不需要长推理。

六、计费与限速速查

项目SearchFetch
价格5 元 / 千次成功请求5 元 / 千次成功请求
账号 QPS 上限10025(另有目标域名限速)
什么时候不计费请求失败、无结果、超时请求失败、无正文、超时
  • 只有 HTTP 200 且有结果的请求计费;count 多少不影响单价。
  • 遇到 408、429、5xx 等待后重试;402 先充值;其他 4xx 不改请求就不要重试。
  • Claude Code / Codex / DeepSeek Harness 里由服务端自动发起的搜索,2026 年 11 月 1 日 00:00(北京时间)起也按上表计费。

本课检查清单

  • Claude Code 用 DeepSeek 完成了一次只读任务
  • anthropic_call.py 打印出了 TextBlock
  • Search curl 返回了 results 数组,并能说出 snippet 与 summary 的区别
  • search_answer.py 输出了带 [编号] 的回答和来源列表

学完三课,你已经能用 DeepSeek 完成「直接调用 → 思考与工具调用 → 接入编码 Agent 与联网搜索」这一整套流程。价格和模型名以后还会变,动手前先看一眼官方「模型 & 价格」页。

本课资料

适用环境

  • 网页
  • API
  • iOS
  • Android

官方文档

DeepSeek ↗