背景:DeepSeek R1和V3分别是什么?
红烁AI 培训,红烁 AI 中转站为您整理:DeepSeek在2024年底到2025年初连续发布了两款引发全球关注的模型——DeepSeek-V3和DeepSeek-R1。两者都开放了API调用,但定位完全不同,直接决定了调用方式和参数配置的差异。
DeepSeek-V3 是一款通用型大语言模型,采用MoE(混合专家)架构,激活参数约37B,总参数671B。它的强项是快速响应、多轮对话、代码生成和文本处理,适合对延迟敏感的生产环境。
DeepSeek-R1 是一款推理增强型模型,内置Chain-of-Thought(思维链)推理机制。模型在回答之前会先进行”思考”,输出一段推理过程,再给出最终答案。它在数学、逻辑推断、复杂代码调试等任务上表现显著优于V3,但响应延迟也更高。
理解这个根本差异,是正确调用两者API的前提。
核心区别:API调用方法对比
1. 模型名称(model参数)
调用DeepSeek官方API时,最直接的区别就是model字段的值不同:
- DeepSeek-V3:
"model": "deepseek-chat" - DeepSeek-R1:
"model": "deepseek-reasoner"
这是两者API调用最基础的区分点。如果你用错了模型名,要么报错,要么调用了错误的模型却浑然不知。
2. 响应结构的差异
V3的响应结构和标准OpenAI格式完全兼容,choices[0].message.content直接就是模型的回答内容,简洁直接。
R1的响应结构多了一个关键字段——reasoning_content,用于存放模型的推理过程。完整结构如下:
choices[0].message.reasoning_content:模型的思考过程(可能很长)choices[0].message.content:最终答案
如果你的代码只读content字段,调用R1也能正常工作,但你会错过推理过程。如果你需要展示或记录推理链,就必须额外处理reasoning_content。
3. 系统提示词(system prompt)的处理
这是一个容易踩坑的地方。
DeepSeek-V3 完整支持system角色的消息,你可以像使用GPT-4一样自由设置系统提示词来控制模型行为、角色设定、输出格式等。
DeepSeek-R1 官方明确建议不要使用system prompt,或者只传入非常简短的系统提示。原因是R1的推理机制依赖模型自身的思考流程,复杂的system prompt会干扰推理质量,甚至导致输出不稳定。如果需要给R1 “设定角色”,建议把指令放在user消息里。
4. Temperature等采样参数
对于V3,temperature、top_p等采样参数可以正常调节,用于控制输出的创意性和随机性,适合需要多样化输出的场景。
对于R1,官方建议将temperature设置为1(默认值),不建议修改。R1的推理过程本身已经内置了探索机制,人为调低temperature反而可能压缩推理空间,影响效果。
5. 流式输出(Streaming)
两者都支持流式输出("stream": true),但R1的流式响应有额外注意事项:
- 流式模式下,
reasoning_content和content会分段交替出现在delta字段中 - 需要在客户端代码里分别拼接两个字段,不能简单地把所有
delta.content拼在一起 - 推理阶段结束、答案阶段开始时,
reasoning_content会变为null,以此作为切换信号
实际调用示例
调用DeepSeek-V3(Python)
from openai import OpenAI
client = OpenAI(
api_key="your_api_key",
base_url="https://api.deepseek.com"
)
response = client.chat.completions.create(
model="deepseek-chat",
messages=[
{"role": "system", "content": "你是一个专业的代码助手"},
{"role": "user", "content": "用Python写一个快速排序"}
],
temperature=0.7
)
print(response.choices[0].message.content)
调用DeepSeek-R1(Python)
from openai import OpenAI
client = OpenAI(
api_key="your_api_key",
base_url="https://api.deepseek.com"
)
response = client.chat.completions.create(
model="deepseek-reasoner",
messages=[
# R1不建议使用system prompt
{"role": "user", "content": "证明根号2是无理数"}
],
temperature=1 # 保持默认值
)
# 获取推理过程
print("推理过程:", response.choices[0].message.reasoning_content)
# 获取最终答案
print("最终答案:", response.choices[0].message.content)
费用与性能对比
选择模型不只是技术问题,费用和延迟也是生产环境的关键考量:
- DeepSeek-V3:输入约¥2/百万tokens,输出约¥8/百万tokens,响应速度快,适合高并发场景
- DeepSeek-R1:输入约¥4/百万tokens,输出约¥16/百万tokens,因为推理过程会产生大量额外tokens,实际费用通常是V3的3-5倍
R1的推理token(reasoning_content部分)也会计入输出费用,这是很多开发者没预料到的成本来源。
常见问题 FAQ
Q:第三方平台(如硅基流动、火山引擎)调用R1,模型名一样吗?
不一定。不同平台对模型的命名有差异,例如硅基流动使用deepseek-ai/DeepSeek-R1,火山引擎有自己的endpoint ID。调用前务必查阅对应平台的文档,模型名写错是最常见的报错原因。
Q:R1的reasoning_content可以关闭吗?
目前官方API不支持关闭推理过程的输出。如果你只需要最终答案,直接忽略reasoning_content字段即可,但费用仍然会按推理token计算。
Q:多轮对话时,R1的推理内容需要放进历史消息吗?
不需要,也不建议。官方文档明确说明,在构建多轮对话的messages数组时,不要把上一轮的reasoning_content放进去,只保留content部分即可。放入推理内容会增加无效token消耗,还可能干扰后续推理。
Q:什么任务用V3,什么任务用R1?
- 用V3:日常对话、文案生成、简单代码补全、RAG检索增强、对延迟和成本敏感的应用
- 用R1:数学证明、复杂算法设计、逻辑推理题、需要展示解题步骤的教育场景、高难度代码调试
Q:可以用LangChain或LlamaIndex调用这两个模型吗?
可以。两者都兼容OpenAI SDK接口,LangChain和LlamaIndex通过设置base_url和对应的model名称即可接入。但R1的reasoning_content字段目前在部分框架的封装层里会被丢弃,如果需要推理过程,建议直接用OpenAI SDK调用。
总结
DeepSeek R1和V3的API调用方法区别,核心可以归纳为四点:模型名不同、响应结构不同、system prompt处理策略不同、采样参数建议不同。V3是高性价比的通用选手,R1是专为复杂推理打造的重型工具。
实际项目中,很多团队会同时接入两个模型,用V3处理日常请求,遇到需要深度推理的任务再路由到R1,兼顾成本和效果。搞清楚这些调用细节,能帮你少走很多弯路。
想了解更多AI工具和技巧?欢迎访问红烁AI 培训,红烁 AI 中转站,获取最新AI资讯和实用教程。
