上个月把文档摘要接进内部工具,跑了两周才发现账单不对劲:一个只做分类的小接口,居然占了大头。查日志才想起来,当初为了“效果稳一点”,把 model 写死成了 deepseek-reasoner,几十万次请求全在烧思考链。改成 deepseek-chat 之后,成本掉了一个数量级,准确率也没明显变化。
这类问题不少见。模型选错、参数配错,跑起来都能出结果,只是钱和延迟在悄悄漏。下面把选择和调用一次讲清楚。
一个已充值的 DeepSeek 账号,控制台里生成的 API Key,Python 3.8+ 和 openai 这个 SDK——接口是 OpenAI 兼容的,不用装别的包。Key 记得放环境变量,别硬编码进仓库。
模型名会随版本更新变化,别照抄博客里的。直接问接口:
返回的列表就是当前可用的全部模型,下面的选型都以这个列表为准。
- v4-flash:延迟和单价最低的一档。分类、意图识别、字段抽取、简单改写这类结构化、量大的活交给它,绝大多数场景够用。 - deepseek-chat:通用对话的默认选项。指令跟随和多轮上下文都稳,做客服、摘要、写作、代码补全这类没有硬推理要求的任务,从它起步最省心。 - v4-pro:旗舰档。长文档理解、复杂多步指令、格式要求苛刻的输出,用它更稳,但单价和延迟都上一个台阶。 - deepseek-reasoner:输出前会先生成思考链,数学、算法、逻辑推理题明显更强。代价是慢,且思考 token 也计费,别拿它做高并发的轻任务。
一个实用的判断法:先全用 flash 跑一遍,效果不够就升 chat,再不够升 pro;只有任务本身需要“想清楚再答”时,才切 reasoner。
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": "把下面这段需求压成一句话:..."}],
temperature=0.3,
)
print(resp.choices[0].message.content)
print(resp.usage) # 上线前先看这个字段估成本
`
base_url 一定要显式传,否则 SDK 会打到 OpenAI 的域名上。
切到 deepseek-reasoner 时,有两件事和 chat 不一样:一是 temperature、top_p 这些采样参数不支持,传了会报错,得从代码里摘掉;二是返回体里多了 reasoning_content,多轮对话时不要把它塞回 messages,只保留 content 就行。
在配置里给模型名留一个
如果你也想试试一个Key调多个模型的方便,可以看看充站——¥50起步,额度永久有效,用支付宝/微信就能付款。