提示词工程与应用实践

目录

一、什么是提示词工程

二、提示词工程常用技术

2.1 基础技术

2.1.1 零样本提示

2.1.2 单样本提示

2.1.3 少样本提示

2.2 进阶方法

2.2.1 思维链(CoT)

2.2.2 检索增强生成(RAG)

三、LLM与提示词指南

3.1 如何得到好的提示

3.2 使用明确直接的语言

3.4 为LLM留出思考的时间

3.5 分配角色(或角色提示)

3.6 使用XML标签划分各个部分

四、生成式AI应用实践

4.1 生成式AI-落地参考流程

4.2 生成式AI-用例构建与初始提示词构建

4.2.1 用例构建

4.2.2 初始提示词构建

4.3 生成式AI-评测标准

4.3.1 提示词关注

4.3.2 样张数据库

4.3.3 大语言模型评测

4.4 生成式AI-前沿探索工具

4.4.1 LangChain

4.4.2 PromptFlow

4.4.3 AutoGPT

最后


一、什么是提示词工程

提示是指输入到大型语言模型中用于触发响应的信息,可以理解为知道说明。其中包括:

  • 任务背景
  • 数据
  • 对话/操作历史
  • 指令
  • 示例
  • 或者是其他内容

二、提示词工程常用技术

2.1 基础技术

2.1.1 零样本提示

Human:请帮我将下面内容翻译成英文:“你吃饭了吗?

Assistant:...

2.1.2 单样本提示

Human:”我想从洛杉矶飞往迈阿密“

Assistant:机场代码[LAX, MIA]

Human:”我想从达拉斯飞往旧金山“

Assistant:机场代码[

2.1.3 少样本提示

Human:”我非常讨厌手机没有点“

Assistant:情感(负面)

Human:”今天很开心“

Assistant:情感(正面)

Human:”这是一个文章的链接“

Assistant:情感(中性)

Human:{{您的输入}}

Assistant:情感(

2.2 进阶方法

2.2.1 思维链(CoT)

  • 通过中间推理步骤实现步骤实现复杂推理
  • 引入示例来改进推理任务的结果
  • 提供模型输入过程透明度

2.2.2 检索增强生成(RAG)

  • 丰富内部知识库中提示的上下文
  • 使用提示定位减少幻觉所带来的影响
  • 最使用于封闭式回答和聊天机器人的用例

三、LLM与提示词指南

3.1 如何得到好的提示

在为评估测试构建测试用例时,尽量综合考虑多有的特殊用例。常见的特殊用例包括:

  • 信息不总所导致的答案质量不佳
  • 用户输入不当(拼写错误、有害内容、偏离主题的请求、无意义的内容等)
  • 用户输入过于复杂
  • 用户未输入

3.2 使用明确直接的语言

LLM对于明确直接的指令响应最佳,如果不太确定,可以使用这条用于判断指令是否明确的黄金法则:

  • 向同事展示您的指示,看看他们是否能按照指令给出您想要的答案。
人类:写一首有关机器人的俳句

助手:一下时有关机器人的俳句

金属身体活动

电路计算着任务

机器模仿生命



人类:写一首有关机器人的俳句。不要导言,直接给出诗句

助手:

金属身体活动

电路计算着任务

机器模仿生命

3.3 使用示例

示例是帮助LLM表现出理想行为的最简单有效的工具

  • 提供给LLM的示例必须包含边缘用例
  • 一般情况下,更多的示例=以延时和Token数的代价换取更可靠的响应
人类:我会给你提供一些引文,请你给出该引文的作者。

以下为示例:

<example>

引文:

”当理性不得不一次又一次地面对不可能的事情时,除了顺从,别无他法。”- N.K Jemisin《第五季》 作者:N.K.Jemisin

</example>

引文:“一些人类认为,智慧物种在扩散到外太空之前就已经灭绝了。如果他们是对的,那么寂静的夜空就是沉寂的墓地。”- Ted Chiang《呼吸》 作者:

助手:Ted Chiang

3.4 为LLM留出思考的时间

有助于排查LLM的逻辑错误,了解提示指令没有表述清除的地方。

人类:[提示的其他内容]回答前请使用<thinking></thinking>XML标签给出问题的思考过程。接着使用<answer></answer>XML标签给出答案。

助手:<thinking>[...思考过程]</thinking>

<answer>[回答]</answer>

3.5 分配角色(或角色提示)

LLM有时需要了解所需扮演的角色背景。分配角色可以从以下两个方面提示LLM的响应:

  • 提高LLM在某些情境(如解决数据问题)下的准确性
  • 使得LLM的言行举止更贴近角色
人类:解决这个复杂的逻辑问题。{{PUZZLE}}

助手:[错误响应]



人类:你是一个专业的逻辑机器人,专门用来解决复杂的逻辑问题。请解决这个复杂的逻辑问题。{{PUZZLE}}

助手:[正确响应]

3.6 使用XML标签划分各个部分

LLM很难理解没有条理的提示。正如章节标题及其他标题可以帮助人类梳理信息,XML标签<> </>也可以帮助LLM理解提示的结构。

人类:你好,Lebron。请在早上6点到达,我定在了这个时间。修改这封电子邮件,让语气更礼貌些。

助手:亲爱的Lebron,希望你能收到这个消息...



人类:你好,Lebron。<email>请在早上6点到达,我定在了这个时间。</email>修改这封电子邮件,让语气更礼貌些。

助手:团队成员早上好,希望你们度过了一个轻松的周末...

3.7 给出输出格式,站在LLM的角度进行回答

可以通过以下方式让LLM以预期给是进行回答:

  • 明确给出你期望的输出格式
  • 站在LLM的角度进行回答,给出LLM响应的开头部分(“助手:”之后的内容)
人类:写一首有关{{ANIMAL}}的俳句。使用JSON格式,键分别为"first_line"、"second_line"、"third_line"。

助手:{"first_line":"睡在太阳下","second_line":"蓬松的皮毛温暖柔和","third_line":"慵懒的小猫在做白日梦"}

四、生成式AI应用实践

4.1 生成式AI-落地参考流程

实证方法:经常对提示进行测试和迭代!

4.2 生成式AI-用例构建与初始提示词构建

4.2.1 用例构建

  • 专业标注团队:通过专门的数据标注团队,为用例构建提供保障;

4.2.2 初始提示词构建

  • 业务需求指导:根据产品团队对功能的规划,编写符合产品需求的prompt。
  • 工程经验辅助:结合提示词工程师的经验,对prompt进行工程化(例如:输入输出格式控制)。

4.3 生成式AI-评测标准

矢量标准是一种创新的模型评估方法,引入了不同的数据维度,并对其进行量化打分。

通过综合考虑维度的得分,矢量评测标准能够更全面地反映模型/PE的真实水平,帮助研究者发现模型/PE的优势和不足,进而有针对性地进行优化。

  • 正向维度关注模型的优化结果
  • 负向维度着眼于防止模型劣化
  • 元数据维度关注token消耗,响应速度等因素

4.3.1 提示词关注

  • 正向最大化
  • 引导负向
  • 影响最小化

4.3.2 样张数据库

  • 正向样张
  • 负向样张
  • 梯度样张
  • 模糊样张

4.3.3 大语言模型评测

  • 根据梯度标准,分维度进行打分

4.4 生成式AI-前沿探索工具

4.4.1 LangChain

简化大语言模型应用开发流程的开源库

  • 提供了一系列可组合的组件,帮助开发者搭建LLM应用
  • 支持连接各种数据源,计算资源和API服务
  • 配套教程、文档和社区资源,方便开发者学习和使用

4.4.2 PromptFlow

协助prompt工程师管理工作流程的平台

  • 可视化的prompt编程界面,支持模块化设计理念
  • 提供版本管理和团队协作功能,便于支持沉淀和共享
  • 支持私有化部署,可集成到企业现有的工作流程中

4.4.3 AutoGPT

探索通用人工智能路线的开源项目

  • 尝试融合多种认知能力,如语言、规划、检索等
  • 可连接外部工具实现信息搜集、应用操作等复杂任务
  • 具备主动提问和持续学习的能力,可根据反馈优化策略
  • 代码完全开源,鼓励社区参与与共建,加速相关研究进展

最后

提示工程指南 | Prompt Engineering Guide

  • 27
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Studio是一个基于IntelliJ IDEA开发的专门针对Android平台的集成开发环境(IDE)。它提供了强大的代码编辑器和开发者工具,使Android应用的构建更加高效。Android Studio使用Gradle作为灵活的构建系统,具有以下特点和功能: - 提供快速且功能丰富的模拟器,包括视图预览功能。 - 提供统一的开发环境,可以针对所有Android设备进行开发。 - Instant Run功能可以将变更直接推送到正在运行的应用中,无需构建新的APK。 - 提供丰富的代码模板和GitHub集成,可以帮助您构建常用应用功能和导入示例代码。 - 提供了各种测试工具和框架,以及Lint工具来帮助您捕捉性能、易用性、版本兼容性和其他问题。 - 支持C和NDK开发,在Android Studio中进行NDK开发更加便捷,同时提供断点调试功能。 与Eclipse相比,Android Studio具有以下不同之处: - Android Studio是基于IntelliJ IDEA开发的,而ADT是作为Eclipse的Android开发插件存在的。 - Android Studio使用基于Gradle的编译系统,而ADT使用基于Ant的编译系统。 - Android Studio的视图布局UI预览功能是实时的,而ADT的UI预览是非实时的。 - Android Studio的工程目录结构是基于功能逻辑的,而ADT划分工程目录是以构建、代码逻辑等为基础,只有project和Modules两个目录。 - Android Studio提供了更方便进行NDK开发以及断点调试的支持。 总结来说,Android Studio是一个功能强大且针对Android应用开发的专用开发工具,它基于IntelliJ IDEA,并使用Gradle作为构建系统,提供了丰富的功能和工具来提高开发效率和便利性。与Eclipse相比,Android Studio具有更智能和方便的Java开发提示、实时UI预览、基于功能逻辑的工程目录结构等优势,同时对于NDK开发也提供了更好的支持。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值