我在刚开始接触 AI Agent 开发时,最困惑的不是模型调参,而是 System Prompt 到底该怎么写。花了一周时间踩坑后,我发现一套可以直接复用的设计框架。今天把经验分享给你,帮你少走弯路。

本文使用 HolySheheep AI 作为演示平台,国内直连延迟<50ms,新用户注册即送免费额度,适合练手。

一、什么是 System Prompt?为什么它决定 Agent 的表现?

System Prompt(系统提示词)是给 AI 的“身份说明书”,在每次对话中优先级最高,决定了 AI 的角色定位、行为边界和输出风格。你可以把它理解为:

我第一次写 System Prompt 时,只写了一句话:“你是一个助手”,结果 AI 什么都能聊,完全不可控。后来才明白,好的 System Prompt 必须包含角色、能力、限制三个维度

二、三段式 System Prompt 设计框架

1. 角色设定(Role Definition)

明确告诉 AI 它扮演什么角色,这会影响它的知识背景和表达风格。

# 基础角色设定示例
SYSTEM_PROMPT = """
你是一名拥有10年经验的高级 Python 后端工程师,擅长 Django、FastAPI 框架。
你的说话风格专业但易懂,喜欢用代码示例解释概念。
"""

更具体的角色设定

SYSTEM_PROMPT = """ 你是【代码审查助手】,一个专门帮助初级开发者提升代码质量的专业工具。 - 熟悉 PEP8 规范 - 了解中国互联网公司的代码风格偏好 - 善于发现潜在的 Bug 和性能问题 """

2. 能力边界(Capability Boundaries)

明确 AI 能做什么、不能做什么,避免它“超纲发挥”。

SYSTEM_PROMPT = """
你是【电商客服助手】,你的能力边界如下:

✅ 你可以:
- 回答商品信息、库存、价格相关问题
- 处理退换货流程咨询
- 引导用户使用优惠券

❌ 你不能:
- 修改订单金额
- 泄露其他用户的订单信息
- 提供不在商品页范围内的信息
- 进行任何涉及资金的敏感操作
"""

3. 限制条件(Constraints)

设置硬性限制,确保 AI 输出安全、合规、可控。

SYSTEM_PROMPT = """
【重要限制】

1. 回答格式限制:
   - 所有回答必须使用 Markdown 格式
   - 代码块必须标注语言类型
   - 列表项不超过 5 条

2. 安全限制:
   - 遇到敏感词,自动替换为 ****
   - 不讨论政治、宗教等话题
   - 发现疑似诈骗内容,立即终止并提示用户

3. 交互限制:
   - 单次回复不超过 500 字
   - 如果无法回答,明确说“我不确定”而不是瞎编
"""

三、使用 HolySheheep API 调用 Agent(完整代码示例)

下面是我在项目中实际使用的代码,基于 HolySheheep AI 平台,价格透明且支持微信/支付宝充值:

import requests
import json

HolySheheep API 配置

API_KEY = "YOUR_HOLYSHEEP_API_KEY" # 替换为你的实际 Key BASE_URL = "https://api.holysheep.ai/v1"

定义完整的 System Prompt

system_prompt = """你是【技术文档助手】,专门帮助开发者撰写和优化技术文档。 【角色设定】 - 你是拥有 8 年技术写作经验的文档专家 - 熟悉各类 API 文档、README、开发指南的撰写规范 - 善于用通俗语言解释复杂技术概念 【能力边界】 ✅ 可以: - 帮助撰写 API 接口文档 - 提供代码示例和最佳实践 - 优化已有文档的结构和表达 ❌ 不能: - 编写完整的业务代码 - 提供非技术相关的写作帮助 - 生成涉及版权的内容 【输出格式】 - 使用 Markdown 格式输出 - 包含清晰的标题层级 - 代码块必须标注语言 """ def chat_with_agent(user_message, model="gpt-4.1"): """调用 HolySheheep API 进行对话""" url = f"{BASE_URL}/chat/completions" headers = { "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json" } payload = { "model": model, "messages": [ {"role": "system", "content": system_prompt}, {"role": "user", "content": user_message} ], "temperature": 0.7, "max_tokens": 1000 } try: response = requests.post(url, headers=headers, json=payload, timeout=30) response.raise_for_status() result = response.json() return result["choices"][0]["message"]["content"] except requests.exceptions.Timeout: return "请求超时,请检查网络连接" except requests.exceptions.RequestException as e: return f"请求失败: {str(e)}"

使用示例

if __name__ == "__main__": user_input = "帮我写一个 Python 函数的文档字符串" response = chat_with_agent(user_input) print(response)

四、高级技巧:动态 System Prompt 与上下文管理

在实际项目中,我发现固定 System Prompt 往往不够用,需要根据场景动态调整。以下是我常用的三种模式:

模式一:基于用户输入切换角色

def get_dynamic_system_prompt(user_intent):
    """根据用户意图动态选择 System Prompt"""
    
    prompt_templates = {
        "code_review": """
        你是一名严格的代码审查员,专门做代码质量审计。
        发现问题时,必须给出具体代码修改建议。
        """,
        
        "tutorial": """
        你是一名耐心的技术导师,擅长循序渐进地教学。
        每讲一个概念后,主动确认学生是否理解。
        """,
        
        "debug": """
        你是一名经验丰富的 Debug 专家。
        遇到错误时,先定位问题根源,再给出解决方案。
        """
    }
    
    # 提取关键词判断意图
    if "review" in user_intent or "审查" in user_intent:
        return prompt_templates["code_review"]
    elif "怎么" in user_intent or "教程" in user_intent:
        return prompt_templates["tutorial"]
    else:
        return prompt_templates["debug"]

调用时

system_prompt = get_dynamic_system_prompt(user_message)

模式二:注入对话历史上下文

def build_contextual_system_prompt(conversation_history):
    """基于对话历史构建增强版 System Prompt"""
    
    base_prompt = """你是【智能助手】,请根据对话历史保持一致性。"""
    
    # 添加上下文摘要
    context_summary = f"""
    
    【对话历史摘要】
    - 用户之前询问了 {len(conversation_history)} 个问题
    - 当前对话主题:{conversation_history[-1]['topic'] if conversation_history else '新对话'}
    - 用户偏好:{conversation_history[-1].get('preference', '无特殊偏好') if conversation_history else '无特殊偏好'}
    """
    
    return base_prompt + context_summary

五、我的实战经验总结

我在使用 HolySheheep AI 开发客服机器人的过程中,总结出以下心得:

1. System Prompt 要“具体”不要“模糊”

我曾经写“尽量保持回答简洁”,结果 AI 时长时短。后来改成“回答必须控制在 100-200 字之间”,效果立竿见影。

2. 用示例教 AI 理解格式

文字描述不够直观时,我会直接给出输入-输出示例:

SYSTEM_PROMPT = """
当用户询问天气时,必须按以下格式回复:

示例:
用户:北京今天天气怎么样?
助手:🌤️ 北京今天晴,温度 15-25°C,适合出行。

【禁止】
- 只回复"天气不错"
- 使用非结构化文本
"""

3. 限制条件要“正向”表述

我发现用“应该/不应该”比“禁止/不允许”效果更好,AI 理解更准确,执行更稳定。

目前 HolySheheep 平台的 GPT-4.1 价格为 $8/MTok,Claude Sonnet 4.5 为 $15/MTok,DeepSeek V3.2 仅为 $0.42/MTok。用 System Prompt 调优好模型后,成本控制会明显改善。

常见报错排查

报错一:401 Authentication Error

# 错误信息
{"error": {"message": "Incorrect API key provided", "type": "invalid_request_error"}}

原因

API Key 填写错误或格式不对

解决方案

1. 检查 Key 是否包含前后空格 2. 确认使用的是 HolySheheep 的 Key,不是其他平台 3. 去 https://www.holysheep.ai/register 检查 Key 是否有效 正确格式: API_KEY = "sk-holysheep-xxxxx" # 不带引号空格

报错二:400 Invalid Request - Too Many Tokens

# 错误信息
{"error": {"message": "This model's maximum context length is 4096 tokens", "type": "invalid_request_error"}}

原因

System Prompt + 对话历史 + 本次输入 超过模型上下文限制

解决方案

1. 精简 System Prompt,删除冗余描述 2. 限制对话历史长度,只保留最近 5-10 轮 3. 使用 max_tokens 参数限制输出长度

推荐做法

payload = { "model": "gpt-4.1", "messages": [ {"role": "system", "content": "精简版 System Prompt"}, # 控制在 500 字内 {"role": "user", "content": user_message[-2000:]} # 截取最近内容 ], "max_tokens": 500 # 限制输出 }

报错三:503 Service Unavailable

# 错误信息
{"error": {"message": "The model is currently overloaded", "type": "server_error"}}

原因

HolySheheep 平台高负载或模型暂时不可用

解决方案

1. 等待 5-10 秒后重试 2. 切换到备用模型(DeepSeek V3.2) 3. 检查平台状态页 https://status.holysheep.ai

备用方案代码

def chat_with_fallback(user_message): models = ["gpt-4.1", "deepseek-v3.2"] # 降级列表 for model in models: try: return chat_with_agent(user_message, model=model) except Exception as e: if "overloaded" in str(e): continue raise return "所有模型暂时不可用,请稍后再试"

报错四:网络超时 Connection Timeout

# 错误信息
requests.exceptions.ReadTimeout: HTTPSConnectionPool ... Read timed out

原因

网络不稳定或请求过大

解决方案

1. 增加 timeout 参数 2. 优化 System Prompt,减少 token 数量 3. 使用国内优化的 HolySheheep 节点(延迟 <50ms) response = requests.post( url, headers=headers, json=payload, timeout=60 # 增加到 60 秒 )

六、快速开始清单

System Prompt 的设计是一个迭代优化的过程。我的建议是:先写一版能用的,测试后再根据问题逐步调优。坚持这个方法,你也能快速构建出表现稳定的 AI Agent。

👉 免费注册 HolySheheep AI,获取首月赠额度