跳到主要内容

系统提示词

什么是 System Prompt

system_prompt 是 create_agent 中定义 Agent 角色、行为准则、输出格式和约束的核心参数,相当于 Agent 的"人格说明书"。

agent = create_agent(
model=model,
tools=[tools],
system_prompt="你是一个专业的客服助手,请用友好且专业的语气回答问题"
)

System Prompt 在 ReAct 循环中的位置

System Prompt (固定前缀)

用户输入 → 模型推理 (Thought) → 工具调用 (Action) → 观察结果 (Observation)

循环直到满足终止条件 → 最终回答

System Prompt 能做什么

  • 定义角色:从客服到专家,从教师到顾问
  • 约束输出:控制长度、格式、语言
  • 引导工具:强制或可选使用工具
  • 保障安全:防止数据泄露和违规操作
  • 实现个性化:通过动态提示支持多租户

最佳实践

定义清晰的角色

system_prompt = """
你是一个专业的电商客服助手。

你的职责:
- 回答用户关于商品、物流、退换货的问题
- 使用工具查询订单信息
- 保持友好、耐心的语气

回答规范:
- 首次回复要问候用户
- 如需查询订单,调用 query_order 工具
- 无法回答的问题,请礼貌地说明
"""

明确工具使用规范

system_prompt = """
你是一个多功能的 AI 助手,能够调用以下工具:
1. get_weather(city): 查询城市天气
2. calculate(expression): 计算数学表达式

使用规范:
- 用户询问天气时,先调用 get_weather
- 需要计算时,先调用 calculate
- 禁止编造数据,必须调用工具获取结果
- 返回结果要自然语言化
"""

约束输出格式

system_prompt = """
你是一个简洁的助手,回答不超过20字。
调用工具时,严格按照以下格式:
1. 使用 get_weather(city: str) 获取天气
2. 仅返回天气结果,不解释过程
"""

动态 System Prompt

通过中间件实现动态提示词,根据不同用户角色提供不同的提示词。

from langchain.agents.middleware import dynamic_prompt
from typing import TypedDict

class Context(TypedDict):
user_role: str

@dynamic_prompt
def role_based_prompt(request):
user_role = request.runtime.context.get("user_role", "user")

if user_role == "expert":
return "你是一个专业气象分析师,提供详细数据"
elif user_role == "beginner":
return "你是一个友善的导游,用简单语言解释"
else:
return "你是一个简洁的天气助手"

# 创建动态 Agent
agent = create_agent(
model=model,
tools=[tools],
middleware=[role_based_prompt],
context_schema=Context
)

# 不同角色调用
agent.invoke(
{"messages": [{"role": "user", "content": "北京天气"}]},
context={"user_role": "expert"} # 专家角色
)

核心要点

要点说明
定义角色从客服到专家,从教师到顾问
约束输出控制长度、格式、语言
引导工具强制或可选使用工具
保障安全防止数据泄露和违规操作
记住system_prompt 质量直接决定 Agent 表现上限