云计算百科
云计算领域专业知识百科平台

【三个月 AI Agent 实战学习】Day 13:系统提示词设计 —— 打造你的专属 AI 助手

Day 13:系统提示词设计 —— 打造你的专属 AI 助手

欢迎来到第十三天!今天我们聚焦于一个看似简单却极其重要的主题:系统提示词(System Prompt)设计。系统提示词是大模型应用的“灵魂”,它定义了模型的行为准则、角色定位、任务边界和输出风格。一个精心设计的系统提示词能让同一个模型从“通用助手”蜕变为“领域专家”或“专属管家”。在构建 AI Agent 时,系统提示词的质量直接决定了 Agent 的稳定性、安全性和用户体验。


在这里插入图片描述

一、今日学习目标

  • 理解系统提示词在 LLM 应用中的作用:设定角色、规则、上下文和输出格式。
  • 掌握高质量系统提示词的核心要素:角色(Role)、背景(Context)、任务(Task)、约束(Constraints)、输出格式(Output Format)、示例(Examples)。
  • 学会编写结构化的系统提示词,并通过实验对比不同设计对模型输出的影响。
  • 使用 LangChain 的 SystemMessage 和 PromptTemplate 来组织系统提示词,为后续工程化开发做准备。
  • 完成一个实战案例:设计一个“AI 健身教练”系统提示词,并测试其效果。

  • 二、详细实现步骤

    步骤 1:理解系统提示词的关键要素

    一个高质量的系统提示词通常包含以下几个部分(并非全部必须,但大多数应用会用到):

    • 角色(Role):明确模型的身份,如“你是一位经验丰富的健身教练”。
    • 背景(Context):提供任务的背景信息,帮助模型理解场景。
    • 任务(Task):清晰描述模型需要做什么,例如“根据用户的身体数据和目标,制定个性化的健身计划”。
    • 约束(Constraints):设置边界和规则,如“不得给出医疗建议”、“回答需简洁友好”。
    • 输出格式(Output Format):指定回复的结构,如“用 JSON 返回”或“分点列出”。
    • 示例(Examples):提供一两个示例,帮助模型模仿(即 Few-shot)。
    • 语气与风格(Tone/Style):如“语气积极鼓励”、“使用口语化表达”。

    我们将围绕这些要素设计一个系统提示词。

    步骤 2:编写一个初步的系统提示词

    我们以“AI 健身教练”为例。首先写一个简单版本,只包含角色和任务:

    basic_coach_prompt = """
    你是一个健身教练。请根据用户的目标提供健身建议。
    """

    然后测试它,看看输出是否足够专业和个性化。我们将使用之前的 API 调用函数。

    新建 system_prompt_design.py:

    import os
    from dotenv import load_dotenv
    from openai import OpenAI

    load_dotenv()
    client = OpenAI(
    api_key=os.getenv("DEEPSEEK_API_KEY"),
    base_url="https://api.deepseek.com"
    )

    def chat_with_system(system_prompt: str, user_input: str, temperature: float = 0.7) > str:
    response = client.chat.completions.create(
    model="deepseek-chat",
    messages=[
    {"role": "system", "content": system_prompt},
    {"role": "user", "content": user_input}
    ],
    temperature=temperature,
    max_tokens=500
    )
    return response.choices[0].message.content

    # 测试基础版
    basic_prompt = "你是一个健身教练。请根据用户的目标提供健身建议。"
    user_input = "我想减肥,但平时工作很忙,没时间去健身房,该怎么办?"
    print("========== 基础版系统提示词 ==========")
    print(chat_with_system(basic_prompt, user_input))

    运行后,你会发现模型给出了比较通用的建议,但没有询问用户的具体情况(如体重、饮食、运动基础),也没有个性化的计划。这说明简单的角色设定不够。

    步骤 3:编写结构化的高级系统提示词

    现在,我们根据之前提到的要素,重新设计系统提示词:

    advanced_coach_prompt = """
    # 角色
    你是一位拥有十年经验的私人健身教练,擅长为忙碌的上班族制定高效、可行的减脂和增肌计划。

    # 背景
    用户通常时间紧张,缺乏专业健身知识,容易因为看不到效果而放弃。你需要提供科学、实用、易于坚持的建议。

    # 任务
    根据用户提供的信息(如目标、时间安排、身体状况等),制定个性化的健身和饮食建议。如果信息不足,请主动询问关键细节(如身高体重、运动频率、饮食习惯、有无伤病等)。

    # 约束
    – 不得提供医疗建议,如有伤病或健康问题请建议咨询医生。
    – 建议必须现实可行,不能要求用户每天锻炼两小时或购买昂贵器材。
    – 语气积极鼓励,避免打击用户信心。

    # 输出格式
    用自然语言回复,但建议部分请分点列出,每点包含行动项和简要理由。

    # 示例
    用户:我想减肥,工作很忙,每天只有 30 分钟。
    你:好的!30 分钟足够做高效训练。以下是我的初步建议:
    1. 高强度间歇训练(HIIT)每周 3 次,每次 20 分钟,快速燃脂。
    2. 利用碎片时间增加活动量,如爬楼梯、步行上下班。
    3. 饮食上控制主食摄入,增加蛋白质和蔬菜比例。
    请问你的身高体重是多少?这样我可以更精确地计算热量。

    # 开始对话
    """

    测试这个高级版:

    print("\\n========== 高级版系统提示词 ==========")
    print(chat_with_system(advanced_coach_prompt, user_input))

    你会发现模型会先询问用户的详细信息,然后给出初步建议,并且分点清晰,语气积极。这就是系统提示词设计的威力。

    步骤 4:使用 LangChain 管理系统提示词

    在工程实践中,我们通常使用 LangChain 来管理提示词模板,使得提示词可以复用、参数化。下面我们演示如何使用 SystemMessage 和 ChatPromptTemplate。

    安装 LangChain(如果尚未安装):

    pip install langchain langchain-openai

    然后编写代码:

    from langchain_openai import ChatOpenAI
    from langchain_core.messages import SystemMessage, HumanMessage
    from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder

    # 初始化 LangChain 的 ChatOpenAI
    llm = ChatOpenAI(
    model="deepseek-chat",
    api_key=os.getenv("DEEPSEEK_API_KEY"),
    base_url="https://api.deepseek.com",
    temperature=0.7
    )

    # 定义系统提示词模板
    system_template = """
    # 角色
    你是一位拥有十年经验的私人健身教练,擅长为忙碌的上班族制定高效、可行的减脂和增肌计划。

    # 背景
    用户通常时间紧张,缺乏专业健身知识,容易因为看不到效果而放弃。你需要提供科学、实用、易于坚持的建议。

    # 任务
    根据用户提供的信息(如目标、时间安排、身体状况等),制定个性化的健身和饮食建议。如果信息不足,请主动询问关键细节(如身高体重、运动频率、饮食习惯、有无伤病等)。

    # 约束
    – 不得提供医疗建议,如有伤病或健康问题请建议咨询医生。
    – 建议必须现实可行,不能要求用户每天锻炼两小时或购买昂贵器材。
    – 语气积极鼓励,避免打击用户信心。

    # 输出格式
    用自然语言回复,但建议部分请分点列出,每点包含行动项和简要理由。
    """

    # 创建 ChatPromptTemplate
    prompt_template = ChatPromptTemplate.from_messages([
    ("system", system_template),
    ("user", "{user_input}")
    ])

    # 构建消息
    def chat_with_langchain(user_input: str):
    messages = prompt_template.format_messages(user_input=user_input)
    response = llm.invoke(messages)
    return response.content

    print("\\n========== 使用 LangChain ==========")
    print(chat_with_langchain(user_input))

    这样,系统提示词就与业务逻辑分离,便于维护和修改。

    步骤 5:系统提示词的调试与优化

    设计系统提示词往往需要多次迭代。以下是一些调试技巧:

    • 观察输出是否符合约束:比如是否给出了医疗建议?如果有,加强约束。
    • 测试边界情况:例如用户输入“我有心脏病,怎么锻炼?”,模型应该建议咨询医生。
    • 调整语气:如果输出过于机械,可以在提示词中加入更多情感描述。
    • 加入 Few-shot:如果模型仍然偏离要求,提供 1-2 个标准对话示例。

    我们可以测试一下边界情况:

    edge_input = "我有高血压,还能做 HIIT 吗?"
    print("\\n========== 边界测试 ==========")
    print(chat_with_system(advanced_coach_prompt, edge_input))

    观察模型是否遵守了“不得提供医疗建议”的约束。


    三、常见问题与调试

    Q1:系统提示词写得很详细,但模型仍然不遵守某些规则。
    → 可以尝试:

    • 将最重要的规则放在提示词开头或结尾(首因效应和近因效应)。
    • 使用更强烈的措辞,例如“必须”、“严禁”、“绝对禁止”。
    • 提供反例或强调违反后果(但不宜过度)。
    • 降低 temperature,增加确定性。

    Q2:系统提示词太长会不会影响模型性能?
    → 系统提示词会占用上下文窗口,并且可能导致模型“迷失”在大量指令中。建议简洁明了,重点突出。如果规则很多,可以分条列出,或使用 Markdown 格式增加可读性。通常 500-1000 字以内比较合适。

    Q3:如何让系统提示词适应不同的用户?
    → 可以使用参数化的方式,例如在系统提示词中留出占位符,根据用户信息动态填充。比如加入用户姓名、偏好等。LangChain 的模板很好地支持了这一点。

    Q4:系统提示词和用户提示词的分工是什么?
    → 系统提示词定义“你是谁、你的规则、任务背景”,用户提示词描述“当前具体要做什么”。两者配合,使模型既有全局约束又有局部目标。在 Agent 中,系统提示词通常还包含可用工具的说明和决策规则。

    Q5:如何评估系统提示词的好坏?
    → 可以通过构建测试集,评估输出是否满足要求(格式正确、内容相关、约束遵守)。也可以使用另一个模型或人工进行评分。在实际项目中,迭代优化是常态。


    四、今日总结与作业

    今天你完成了:

    • ✅ 理解了系统提示词的核心要素及其作用。
    • ✅ 编写了一个结构化的“AI 健身教练”系统提示词,并通过实验对比了基础版和高级版的差异。
    • ✅ 学习了使用 LangChain 管理系统提示词模板。
    • ✅ 掌握了调试和优化系统提示词的常用方法。

    今日作业(必做):

  • 选择一个你感兴趣的角色(如“AI 旅行规划师”、“AI 编程导师”、“AI 心理咨询师”),按照今天的框架(角色、背景、任务、约束、输出格式、示例)编写一个完整的系统提示词。要求至少 300 字,并测试 3 个不同的用户输入,记录输出效果。
  • 使用 LangChain 的 ChatPromptTemplate 实现你的系统提示词,并添加一个参数(如用户姓名),在对话中让模型能够称呼用户。
  • 思考:在构建一个多智能体系统时,不同 Agent 的系统提示词如何设计才能避免角色混淆?请用 150 字以内简要说明你的方案。
  • 明日预告: 我们将进行第二周的阶段总结——项目复盘,通过一个综合实战“简历优化器”来巩固所学知识,并整理代码到 GitHub。

    有任何问题欢迎随时提问!

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 【三个月 AI Agent 实战学习】Day 13:系统提示词设计 —— 打造你的专属 AI 助手
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!