提示词的基本结构:指令、上下文、输入、输出指示器

11.1 提示词的重要性

11.1.1 什么是提示词?

提示词(Prompt)是用户提供给大语言模型的文本输入,用于指导模型生成特定的响应。在智能体开发中,提示词是智能体行为的核心指导,直接影响智能体的性能和输出质量。

11.1.2 提示词的作用

  • 引导模型理解任务:明确告诉模型需要做什么
  • 提供必要的上下文:给模型提供相关的背景信息
  • 控制输出格式:指定模型输出的结构和格式
  • 影响输出质量:好的提示词可以显著提高输出质量
  • 减少幻觉:提供足够的信息减少模型的猜测

11.2 提示词的基本结构

11.2.1 标准提示词结构

一个完整的提示词通常包含以下几个部分:

  1. 指令(Instruction):明确告诉模型要做什么
  2. 上下文(Context):提供相关的背景信息
  3. 输入(Input):具体的输入数据或问题
  4. 输出指示器(Output Indicator):指定输出的格式和开始标记

11.2.2 结构示例

# 指令
你是一个专业的{角色},请完成以下任务:

# 上下文
{相关背景信息}

# 输入
{具体问题或数据}

# 输出指示器
请按照以下格式输出:
{输出格式说明}

输出:

11.3 指令部分

11.3.1 指令的重要性

指令是提示词的核心部分,它直接告诉模型要执行什么任务。一个好的指令应该:

  • 清晰明确:避免模糊和歧义
  • 具体详细:提供足够的细节指导
  • 目标明确:明确任务的最终目标
  • 语言简洁:使用简洁明了的语言

11.3.2 指令的类型

  1. 任务型指令:要求模型完成特定任务

    请总结以下文章的主要内容。
  2. 角色型指令:指定模型扮演的角色

    你是一位专业的法律顾问,请回答以下法律问题。
  3. 格式型指令:要求模型按照特定格式输出

    请将以下文本翻译成英文,并保持原有的段落结构。
  4. 约束型指令:对模型的输出施加约束

    请回答以下问题,不要使用任何专业术语,保持回答通俗易懂。

11.3.3 指令编写技巧

  1. 使用祈使句:直接明确地告诉模型要做什么

    分析以下数据并生成一份详细的报告。
  2. 提供步骤指导:对于复杂任务,分解为多个步骤

    请按照以下步骤处理:
    1. 阅读并理解问题
    2. 分析相关信息
    3. 生成详细的解决方案
    4. 检查解决方案的可行性
  3. 使用强调词:强调重要的要求

    请务必确保回答的准确性,对于不确定的信息要明确说明。
  4. 设定边界:明确任务的范围和限制

    请只回答与主题相关的内容,不要涉及其他领域。

11.4 上下文部分

11.4.1 上下文的作用

上下文为模型提供执行任务所需的背景信息,帮助模型更好地理解任务和生成相关的输出。上下文可以包括:

  • 背景信息:任务的相关背景
  • 参考资料:模型可以参考的资料
  • 历史对话:之前的对话历史
  • 领域知识:特定领域的知识

11.4.2 上下文的类型

  1. 对话历史

    以下是用户和助手之前的对话:
    用户:我想学习Python编程。
    助手:Python是一种流行的编程语言,适合初学者。
    用户:如何安装Python?
  2. 参考文档

    参考以下文档内容回答问题:
    [文档内容]
  3. 场景描述

    场景:用户正在计划一次去日本的旅行,需要了解当地的旅游景点。
  4. 数据信息

    以下是销售数据:
    月份 | 销售额
    1月 | 10000
    2月 | 15000
    3月 | 12000

11.4.3 上下文管理技巧

  1. 相关性:只包含与任务相关的信息
  2. 完整性:提供足够的信息让模型理解任务
  3. 组织性:清晰组织上下文信息,使用标题和分隔符
  4. 长度控制:注意上下文长度,避免超出模型的上下文窗口
  5. 优先级:将重要信息放在上下文的前面

11.5 输入部分

11.5.1 输入的定义

输入是模型需要处理的具体数据或问题,是任务的核心内容。输入的质量直接影响模型的输出质量。

11.5.2 输入的类型

  1. 问题

    问题:什么是人工智能?
  2. 文本

    文本:人工智能是指由人制造出来的系统所表现出来的智能。
  3. 数据

    数据:[1, 2, 3, 4, 5]
  4. 指令

    指令:计算1+1的结果。

11.5.3 输入优化技巧

  1. 明确具体:输入要清晰明确,避免模糊
  2. 格式一致:保持输入格式的一致性
  3. 提供示例:对于复杂输入,提供示例
  4. 避免歧义:消除输入中的歧义
  5. 结构化输入:对于复杂数据,使用结构化格式

11.6 输出指示器部分

11.6.1 输出指示器的作用

输出指示器告诉模型应该如何组织和格式化输出,确保输出符合预期的结构和格式。

11.6.2 输出指示器的类型

  1. 格式指定

    请以JSON格式输出:
    {
      "answer": "",
      "confidence": 0
    }
  2. 结构指定

    请按照以下结构输出:
    1. 问题分析
    2. 解决方案
    3. 实施步骤
  3. 长度指定

    请用不超过100字的篇幅回答。
  4. 风格指定

    请用专业、正式的语言回答。

11.6.3 输出指示器优化技巧

  1. 具体明确:明确指定输出的格式和结构
  2. 使用示例:提供输出示例
  3. 保持一致性:与任务要求保持一致
  4. 简洁明了:避免复杂的格式要求
  5. 测试调整:根据模型的输出调整格式要求

11.7 提示词结构的最佳实践

11.7.1 结构组织

  1. 逻辑顺序:按照指令 → 上下文 → 输入 → 输出指示器的顺序组织
  2. 清晰分隔:使用标题、分隔符等清晰分隔不同部分
  3. 层次结构:对于复杂任务,使用层次结构组织信息
  4. 一致性:保持提示词结构的一致性

11.7.2 长度控制

  1. 平衡长度:提示词既要有足够的信息,又要避免过长
  2. 上下文窗口:考虑模型的上下文窗口限制
  3. 重要信息优先:重要信息放在前面
  4. 冗余信息:避免包含冗余信息

11.7.3 语言使用

  1. 简洁明了:使用简洁明了的语言
  2. 避免歧义:避免使用模糊和有歧义的语言
  3. 专业术语:根据任务需要使用适当的专业术语
  4. 一致性:保持语言风格的一致性

11.8 提示词结构的应用示例

11.8.1 问答场景

# 指令
你是一个专业的AI助手,请回答用户的问题。

# 上下文
用户正在学习人工智能的基础知识。

# 输入
什么是机器学习?

# 输出指示器
请用通俗易懂的语言回答,不超过200字。

输出:

11.8.2 总结场景

# 指令
请总结以下文章的主要内容。

# 上下文
文章标题:《人工智能的发展趋势》
文章内容:人工智能技术近年来取得了显著进展,特别是在自然语言处理和计算机视觉领域。大语言模型的出现使得AI系统能够理解和生成人类语言,而计算机视觉技术的进步则使得AI能够识别和分析图像。未来,人工智能将在医疗、教育、金融等领域发挥更重要的作用,但同时也需要关注伦理和安全问题。

# 输入
[文章内容已在上下文提供]

# 输出指示器
请以要点形式输出,每个要点不超过一句话。

输出:

11.8.3 创意写作场景

# 指令
你是一个创意写作助手,请根据提供的场景创作一个短篇故事。

# 上下文
场景:一个年轻人在旧书店发现了一本神奇的书,这本书能够预测未来。

# 输入
请创作一个100-150字的短篇故事。

# 输出指示器
请包含以下元素:
1. 书店的环境描写
2. 年轻人发现书的过程
3. 书的神奇之处
4. 故事的结尾

输出:

11.8.4 代码生成场景

# 指令
你是一个专业的Python程序员,请根据用户的需求生成Python代码。

# 上下文
用户需要一个函数来计算斐波那契数列的第n项。

# 输入
请生成一个Python函数,接收一个整数n,返回斐波那契数列的第n项。

# 输出指示器
请包含以下内容:
1. 函数定义
2. 函数文档字符串
3. 代码注释
4. 示例用法

输出:

11.9 提示词结构的评估与优化

11.9.1 评估指标

评估提示词结构的有效性可以从以下几个方面考虑:

  • 任务完成度:模型是否完成了指定的任务
  • 输出质量:输出是否准确、相关、有用
  • 格式符合度:输出是否符合指定的格式
  • 一致性:多次运行的输出是否一致
  • 效率:提示词是否简洁高效

11.9.2 优化方法

  1. A/B测试:测试不同的提示词结构
  2. 迭代改进:根据输出结果迭代改进提示词
  3. 反馈循环:收集用户反馈,持续优化
  4. 模板化:创建提示词模板,提高一致性
  5. 学习最佳实践:学习和应用行业最佳实践

11.9.3 常见问题与解决方案

  1. 输出不符合格式

    • 问题:模型输出不符合指定的格式
    • 解决方案:
      • 更明确地指定格式要求
      • 提供格式示例
      • 使用更严格的格式指示
  2. 输出不相关

    • 问题:模型输出与任务不相关
    • 解决方案:
      • 提供更明确的指令
      • 添加更多相关的上下文
      • 限制输出的范围
  3. 输出质量低

    • 问题:模型输出质量不高
    • 解决方案:
      • 提供更详细的指令
      • 添加更多相关的上下文
      • 调整模型参数
  4. 提示词过长

    • 问题:提示词超过模型的上下文窗口
    • 解决方案:
      • 精简提示词
      • 优先级排序信息
      • 使用摘要技术

11.10 实用案例:构建有效的提示词

11.10.1 案例目标

构建一个用于智能客服的有效提示词,帮助智能体处理客户的产品咨询。

11.10.2 实现步骤

  1. 分析任务

    • 任务:智能客服处理产品咨询
    • 目标:提供准确、有用的产品信息
    • 要求:专业、友好的语气
  2. 构建提示词结构

    # 指令
    你是一个专业的产品客服代表,负责回答客户关于产品的问题。请以友好、专业的语气回答客户的问题,提供准确、有用的信息。
    
    # 上下文
    产品信息:
    - 产品名称:智能音箱X1
    - 价格:999元
    - 主要功能:语音助手、音乐播放、智能家居控制、闹钟
    - 连接方式:WiFi、蓝牙
    - 续航时间:8小时
    -  warranty:1年
    
    # 输入
    客户问题:这个智能音箱支持哪些连接方式?
    
    # 输出指示器
    请以自然、友好的语言回答,直接提供问题的答案,不要添加任何引言或开场白。
    
    输出:
  3. 测试与优化

    • 测试提示词的效果
    • 根据输出结果调整提示词
    • 优化各个部分的内容

11.10.3 案例分析

  • 指令明确:清晰地定义了智能体的角色和任务
  • 上下文完整:提供了产品的详细信息
  • 输入具体:包含了客户的具体问题
  • 输出指示明确:指定了输出的风格和格式
  • 效果评估:可以通过客户满意度评估提示词的效果

11.11 小结与展望

11.11.1 本集要点回顾

  • 介绍了提示词的基本结构:指令、上下文、输入和输出指示器
  • 详细讲解了每个部分的作用和编写技巧
  • 提供了不同场景的提示词结构示例
  • 分享了提示词结构的最佳实践和优化方法
  • 实践了构建有效的智能客服提示词

11.11.2 后续学习方向

  • 学习编写清晰指令的技巧:定角色、用分隔符、给示例
  • 掌握思维链(Chain-of-Thought)引导模型逐步推理
  • 了解少样本学习(Few-Shot)与上下文学习(In-Context Learning)
  • 学习结构化输出:JSON Mode与Pydantic解析
  • 探索复杂任务分解:思维树(Tree of Thoughts)入门
« 上一篇 LangSmith与LangFuse入门:调试与监控智能体 下一篇 » 编写清晰指令的技巧:定角色、用分隔符、给示例