Python 实战:用 Search & Fetch API 搭一个轻量联网问答
DeepSeek 新开放的 Search & Fetch API 让几十行 Python 就能搭出联网问答。本文给出三步完整流程,环境只需一个 API Key 与 requests 库。
第一步:搜索
import requests
HEADERS = {"Authorization": "Bearer <你的API Key>",
"Content-Type": "application/json"}
r = requests.post("https://api.deepseek.com/v1/tools/search",
headers=HEADERS,
json={"query": "DeepSeek V4.1-Flash-1017 发布",
"count": 5, "need_content": False})
for hit in r.json()["results"]:
print(hit["title"], hit["url"])
print(hit["summary"])
query 限 1–128 个字符,count 默认 10、最大 50;如果想知道某条结果的细节,就把 URL 交给 Fetch。
第二步:抓取网页正文
r = requests.post("https://api.deepseek.com/v1/tools/fetch",
headers=HEADERS,
json={"url": hit["url"]})
markdown = r.json()["content"] # 单页正文,Markdown 格式
Fetch 返回的 Markdown 可直接截取前若干段落作为上下文,避免整页塞入。
第三步:拼进对话模型
context = "\n".join(f"[{h['title']}] {h['summary']}" for h in hits)
r = requests.post("https://api.deepseek.com/chat/completions",
headers=HEADERS,
json={"model": "deepseek-flash",
"messages": [
{"role": "system", "content": "依据资料回答,注明来源链接。\n" + context},
{"role": "user", "content": "V4.1-Flash-1017 有哪些更新?"}
]})
print(r.json()["choices"][0]["message"]["content"])
更进阶的做法是把搜索做成工具调用(tool calls)交给模型自主决定何时联网,思路与RAG 教程一致;对话 API 基础见Python 快速上手。
成本估算
一次典型问答(1 次 Search + 2 次 Fetch + 一次对话)工具侧约 0.002 美元出头,模型侧按 token 另计。若改在 DeepSeek Harness、Claude Code 或 Codex 内通过服务端工具触发,截至 10 月 31 日 16:00(UTC)免费。参数细节见Search & Fetch API 详解。
大模型网摘