动态修改 Agent SDK 中的系统提示——调整代理的行为、角色和输出风格。
系统提示的作用
系统提示定义了代理的基本行为:
- 角色定义(你是代码审查专家)
- 行为规范(只回答代码相关问题)
- 输出格式(以 JSON 格式回复)
- 约束条件(不要执行危险命令)
基础系统提示
SYSTEM_PROMPT = """你是一个编程助手。
你的职责:
1. 帮助用户理解代码
2. 提供代码改进建议
3. 回答技术问题
不要:
1. 执行删除操作
2. 泄露敏感信息
3. 运行不确定的命令"""
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=2048,
system=SYSTEM_PROMPT,
messages=[{"role": "user", "content": "你好"}]
)
动态修改
def build_system_prompt(context):
"""根据上下文动态构建系统提示。"""
parts = [BASE_SYSTEM_PROMPT]
if context.get("task") == "review":
parts.append(REVIEW_INSTRUCTIONS)
elif context.get("task") == "debug":
parts.append(DEBUG_INSTRUCTIONS)
if context.get("language"):
parts.append(f"使用 {context['language']} 回答。")
return "\n\n".join(parts)
# 使用
context = {"task": "review", "language": "中文"}
system = build_system_prompt(context)
response = client.messages.create(
model="claude-sonnet-4-20250514",
system=system,
messages=[{"role": "user", "content": "审查这段代码"}]
)
缓存系统提示
系统提示会占用输入 token。使用 prompt caching 可以降低成本:
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=2048,
system=[
{
"type": "text",
"text": SYSTEM_PROMPT,
"cache_control": {"type": "ephemeral"}
}
],
messages=messages
)
下一步
- Agent SDK 流式输出
- 记忆系统:持久化指令