加载中

系统提示是自定义 Claude 如何响应用户输入的强大方式。您可以塑造 Claude 的语气、风格和处理方式以匹配您的特定用例,而不是得到通用的答案。

为什么系统提示很重要

设想构建一个数学辅导聊天机器人。当学生问"我该如何求解 5x + 2 = 3 中的 x?"时,您希望 Claude 表现得像一位真正的辅导老师,而不仅仅是给出答案。一位好的数学辅导老师应该:

  • 最初给出提示而不是完整的解答
  • 耐心地逐步引导学生解决问题
  • 展示类似问题的解答作为示例

您绝对不希望 Claude:

  • 立即给出直接答案
  • 告诉学生直接用计算器

系统提示的工作原理

系统提示为 Claude 提供关于如何响应的指导。您将它们定义为纯字符串,并将其传递到 create 函数调用中。主要优势包括:

  • 系统提示为 Claude 提供关于如何响应的指导
  • Claude 会尝试以指定角色中的人会做出的方式来响应
  • 有助于让 Claude 保持在任务上

以下是基本结构:

python
system_prompt = """
You are a patient math tutor.
Do not directly answer a student's questions.
Guide them to a solution step by step.
"""

client.messages.create(
    model=model,
    messages=messages,
    max_tokens=1000,
    system=system_prompt
)

观察差异

如果没有系统提示,Claude 会立即给出完整的逐步解答。这可能有帮助,但它不会鼓励学生自己思考问题。

使用数学辅导系统提示后,Claude 的响应发生了显著变化。Claude 不再提供完整的解答,而是提出引导性问题,例如"您认为孤立 x 的一个好的第一步是什么?考虑一下我们可能需要对等式两边执行什么运算来开始移动项。"

构建灵活的聊天函数

您可以通过接受系统提示作为参数,使聊天函数更具可重用性,而不是硬编码系统提示:

python
def chat(messages, system=None):
    params = {
        "model": model,
        "max_tokens": 1000,
        "messages": messages,
    }
    
    if system:
        params["system"] = system
    
    message = client.messages.create(**params)
    return message.content[0].text

这种方法处理了一个重要细节:Claude 的 API 不接受 system=None,因此您需要仅在提供系统参数时才有条件地包含它。

现在您可以调用聊天函数,无论是否带有系统提示:

python
# 无系统提示
answer = chat(messages)

# 有系统提示
system = """
You are a patient math tutor.
Do not directly answer a student's questions.
Guide them to a solution step by step.
"""
answer = chat(messages, system=system)

系统提示对于创建行为一致且适合其预期用途的 AI 应用程序至关重要。它们将通用的 AI 响应转变为专门的、符合角色的交互。