提示工程(学习笔记)
概念
Prompt template
是生成语言模型提示词的预定义方案。模板包括说明、少量示例以及给定任务的特定上下文和问题。PromptTemplate
创建字符串提示的模板。支持任意数量的变量,包括无变量。一般使用在单轮对话中ChatPromptTemplate
聊天消息列表,每条聊天消息都有内容以及附加参数相关联 role
高质量 prompt 核心要点
具体、丰富、少歧义
Prompt 的典型构成(把AI当人看)
- 角色:给 AI 定义一个最匹配任务的角色,比如:「你是一位软件工程师」「你是一位小学老师」。通过角色定义,在开头收紧问题域,减少二义性。
- 指示:对任务进行描述
- 上下文:给出与任务相关的其它背景信息(尤其在多轮交互中)
- 例子:必要时给出举例,学术中称为 one-shot learning, few-shot learning 或 in-context learning;实践证明其对输出正确性有很大帮助
- 输入:任务的输入信息;在提示词中明确的标识出输入
- 输出:输出的格式描述,以便后继模块自动解析模型的输出结果,比如(JSON、XML)
大模型对 prompt 开头和结尾的内容更敏感。
改变习惯,优先用Prompt解决问题,可以减轻预处理和后处理的工作量和复杂度。
Prompt多轮对话案例
python
1 | import json |
Prompt进阶技巧
思维链。
Chain of Thoughts, CoT
以「Let’s think step by step」开头, AI 会把问题分解成多个步骤,然后逐步解决,使得输出的结果更加准确。
让 AI 生成更多相关的内容,构成更丰富的「上文」,从而提升「下文」正确的概率
对涉及计算和逻辑推理等复杂问题,尤为有效
自洽性
Self-Consistency
对抗「幻觉」,多次验算
思维树
Tree-of-thought, ToT
在思维链的每一步,采样多个分支,展开成一棵思维树
判断每个分支的任务完成度,以便进行启发式搜索
设计搜索算法,判断叶子节点的任务完成的正确性
一些好用的 Prompt 共享网站
- https://github.com/linexjlin/GPTs - 泄露出来的高级 GPTs 的 prompt
- https://promptbase.com/
- https://github.com/f/awesome-chatgpt-prompts
- https://smith.langchain.com/hub
- https://www.promptingguide.ai/zh
上述内容主要摘抄自知乎知学堂 AI 大模型全栈工程师培养计划
评论