加载中

系统提示是自定义 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 响应转变为专业化、符合角色的交互。