在火山引擎调用DeepSeek API时,system prompt必须作为messages数组首项,role严格为"system",content填入指令;错放位置、错写role或混入user消息将导致系统指令失效。
在火山引擎调用DeepSeek API时,系统提示词(system prompt)必须通过请求体中的messages数组首项传入,且role字段严格设为"system"——漏填、错填role值或把system内容塞进user消息里,API会直接忽略该提示。
第一步:确保messages数组第一个元素是字典对象,且仅包含两个键:"role"和"content"。
第二步:"role"的值必须是字符串"system",大小写敏感,不能写成"System"或"SYSTEM"。
第三步:"content"填入你的系统级指令,例如"你是一位资深Python工程师,只回答技术问题,不闲聊"。这行内容将锚定模型行为基调,后续所有user消息都在此约束下响应。
【必须把system消息放在messages数组最前面】——如果把它插在user消息后面,DeepSeek-R1会视作普通对话轮次,完全不执行系统级约束。
方法一:使用官方OpenAI兼容SDK(推荐)
安装依赖:pip install openai
调用时按如下结构组织messages:
from openai import OpenAI
client = OpenAI(
api_key="your_api_key",
base_url="https://ark.cn-beijing.volces.com/api/v3"
)
response = client.chat.completions.create(
model="deepseek-r1-online",
messages=[
{"role": "system", "content": "请用中文回答,每段不超过50字"},
{"role": "user", "content": "解释梯度下降"}
],
stream=False
)
注意:base_url必须用火山引擎提供的域名,不是DeepSeek官方地址;model名需与你在火山引擎开通的推理接入点ID完全一致(如deepseek-r1-online或deepseek-chat)。
错误1:用system_prompt参数单独传入——火山引擎API不支持该字段,会报错Unknown parameter。
错误2:把system内容写进prompt字符串再整体传给messages[0]["content"]——这会导致模型误判为用户提问,系统指令失效。
错误3:在Dify或Coze等平台配置时,误把system内容填到“用户输入预设”栏——这类平台有独立的system prompt配置入口,必须在Bot设置页的“系统提示词”文本框中填写,而非混在对话示例里。