System Prompt vs User Prompt

系统提示词与用户提示词

System Prompt 定身份和规则,User Prompt 提具体诉求。

详解

System Prompt 和 User Prompt 是写给模型的两条「不同优先级的信」,分工截然不同。System Prompt 由开发者撰写,在对话最开始一次性设定:模型是谁、能做什么、不能做什么、输出格式是什么——它是全局规则,对整个会话始终生效。User Prompt 则是用户每一轮发来的具体请求,如「帮我翻译这段话」或「给我写一首诗」。模型遇到两者冲突时,训练上倾向于优先遵从 System Prompt,但这并不是绝对的铁壁,这也正是提示词注入攻击的切入点。写好 System Prompt 的四要素:①身份(「你是一个专业的法律助手」)②行为约束(「只回答法律相关问题,其他话题礼貌拒绝」)③输出格式(「始终用编号列表回答」)④兜底规则(「不确定时说不确定,不要猜」)。分工原则:稳定不变的写进 System Prompt,每次请求都不同的放在 User Prompt。

一个类比
把 System Prompt 想成公司员工手册:入职第一天就发给你,规定了岗位职责、行为准则和汇报格式,无论遇到哪个客户都要遵守。User Prompt 就是每天收到的具体工单——每次来一张,告诉你今天要做什么。手册不会每次交代任务时重新发一遍,但它的规定优先于任何一张工单。
举个例子
import anthropic

client = anthropic.Anthropic()

# System Prompt:稳定的全局规则(写一次,全会话生效)
# User Prompt:动态的具体请求(每轮不同)
response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=256,
    system=(
        "你是一名专业的代码审查助手。"
        "规则:① 只回答编程相关问题;"
        "② 每次必须分'问题'和'建议'两个部分回答;"
        "③ 不确定时说不确定,不要猜测。"
    ),
    messages=[
        {
            "role": "user",
            "content": "这段代码有什么问题?\ndef div(a, b):\n    return a / b"
        }
    ]
)
print(response.content[0].text)
# 输出会严格遵循 System Prompt 规定的格式,分两段输出
PYTHON 示例
相关概念