上周帮一个朋友排查接口,他照着某篇去年的博客抄了四行代码,模型名写的是 deepseek-v4-pro,跑一次报 400,换 deepseek-chat 又能通。问题不在代码,在他抄的那个型号根本不存在——多半是某个中转平台自己起的名,或者把版本号记混了。DeepSeek 官方目前的模型就两个主力:deepseek-chat 和 deepseek-reasoner。前者是通用对话模型,快、便宜、支持 function calling;后者带思维链,回答前会先推理一段,适合数学、逻辑、复杂代码这类任务,但慢、贵、且部分采样参数不生效。选型其实不复杂:日常问答、抽取、改写走 chat;需要它“想清楚再答”的走 reasoner。看到什么 flash、pro 之类的后缀,先去官方文档的模型列表页对一遍,别信博客。
注册 platform.deepseek.com,充点钱(几十块够测很久),在 API Keys 页面建一个 key。注意 key 只在创建时显示一次,存到环境变量里别写进代码:
SDK 不用装新的,DeepSeek 接口兼容 OpenAI 格式,直接用现成的 openai 包就行。
client = OpenAI( api_key=os.environ["DEEPSEEK_API_KEY"], base_url="https://api.deepseek.com", )
resp = client.chat.completions.create(
model="deepseek-chat",
messages=[{"role": "user", "content": "用一句话解释什么是幂等"}],
)
print(resp.choices[0].message.content)
`
base_url 结尾不加 /v1 也能用,加了也行,两种官方都兼容。先跑通这一条,再谈别的。
坑一:reasoning_content 是独立字段,不在 content 里,只解析 content 会以为模型没思考。坑二:temperature、top_p 这类参数对它无效,传了不报错但被忽略,别指望靠调参改风格。
reasoner 单次可能跑几十秒,默认超时容易断。生产环境务必显式设置 timeout,外层套 2~3 次指数退避重试,只对 429 和 5xx 重试,4xx 直接抛出来看报错信息。
先用 chat 把链路跑通,确实遇到推理类任务再切 reasoner,按任务分流比无脑上最强的省钱得多。模型名永远以官方文档为准,第三方教程里的型号隔几个月就可能失效。最后建议把模型名、超时、重试次数都抽成配置,换模型时改一个字符串就够了。
如果你也想试试一个Key调多个模型的方便,可以看看充站——¥50起步,额度永久有效,用支付宝/微信就能付款。