AI 伴学笔记3 提示模板

88 阅读2分钟

提示模板通过 PromptTemplate 创建,支持字符串模板占位符,通过 format 生成查询文本。

LangChain 提供如下提示模板封装:

Pasted image 20241110012509.png

提示工程:Prompt Engineering,如何构造大语言模型的提示词

  • 给予模型清晰明确的知识
  • 让模型慢慢地思考

(吴恩达)

提示工程

gpt 提示策略

  • 写清晰的指示
  • 给模型提供参考(也就是示例)
  • 将复杂任务拆分成子任务
  • 给 GPT 时间思考
  • 使用外部工具
  • 反复迭代问题

提示框架

Pasted image 20241110005635.png

一个提示词自上而下通常包含如下几个部分:

  • 指令 Instruction,描述任务大概是什么,怎么做。如定义角色(你是一个 xxx),如何查询,如何使用外部信息等
  • 上下文 Context,模型额外的知识来源,通常来自于矢量数据库,详见嵌入
  • 提示输入 Prompt Input,描述问题具体是什么,也可以与指令部分合并
  • 输出指示器 Output Indicator,标记要生成文本的开头,引导大模型输出给定类型的文本(可选)

Few-Shot 示例

FewShotPromptTemplate 可以添加几个示例,为模型提供生成答案的思路和样本

示例通常位于指令部分之后

  • One-Shot 是最常见的一种 Few-Shot
  • Zero-Shot 指在没有任何示例的情况下,只根据任务描述生成响应

先准备示例列表,这里使用字典存储示例,方便后面按模板生成示例 PromptTemplate

Pasted image 20241110014953.png

示例模板也是一个 PromptTemplate,这里字符串模板中的变量与前面示例列表一一对应。

Pasted image 20241110015500.png

最后,将示例列表和示例模板传递给 FewShotPromptTemplate 即可

Pasted image 20241110020022.png

示例选择器

示例选择器用于在多个示例中选择合适的示例样本。该功能也是基于向量相似度实现,可在有大量示例时节省请求 Token

Pasted image 20241110020546.png

  • samples:示例样本
  • OpenAIEmbeddings:用于将示例样本转化为向量存储
  • Chroma:指定向量数据库类型

思维链

思维链是对 Few-Shot 的扩展,用于提高示例引导的有效性

思维链:CoT(Chain of Thought),在示例中提供中间推导过程以提高大语言的复杂推导能力 Zero-Shot CoT:直接提示 think step by step 也能显著提升准确性

使用 CoT 提示,需要在示例中描述足够详细的中间步骤

Pasted image 20241110022010.png

思维树

思维树(ToT,Tree of Thoughts)是对思维链的扩展,引导语言将每个步骤划分为多个候选方案,根据要求选出最佳选择。

GitHub - kyegomez/tree-of-thoughts

输出解析

输出解析 StructuredOutputParser 可以产生结构化的回应,原理是在提示词末尾追加描述输出样式的文本,由 AI 按格式生成

Pasted image 20241110001650.png