什么是提示词工程
提示词工程通过调整 prompt 改善模型性能、控制输出结果。
prompt = 预设 prompt + 用户输入 + 之前轮次模型输出
RAG, Agent 本质也是一种 prompt 工程。
notes: RAG 是检索增强生成 (Retrieval-Augmented Generation) 。旨在解决模型在生成长文本时可能出现的信息缺失、内容一致性和相关性等问题。该技术将用户输入转换为 input_ids 后,通过输入向量从知识库 retrieve 获取相关的知识 documents(例如比较向量的相似度)。然后将这些 doc 一并传递给 generater 产生 output。Technical Brief - NVIDIA Docs
快速构建 LLM 应用:从 prompt 工程入手
右下角给出了快速构建 LLM 应用的一般步骤。
构建提示词 - 原则 & 框架
构建提示词可以从六个维度入手,指令清晰、提供参考内容、拆分子任务、引导给出过程 ToC、使用外部工具、系统性测试变化。https://platform.openai.com/docs/guides/prompt-engineering/
现在流行的框架有,CRISPE 框架、CO-STAR 框架,有利于快速上手。
下面是介绍 LangGPT 这篇文章提出的提示词框架,这是一个结构化(模块化)的框架,往每个部分填空即可。LangGPT 在字节的 coze,Kimi 中得到了应用。
上述内容是对本节 LangGPT 实验配套公开 talk 的笔记,可以在 b 站观看,链接为 浦语提示词工程实践_哔哩哔哩_bilibili。在本节的实验文档的后半,给出了该 talk 的文本讲稿(不完全一致)以及 demo。可以参考 Tutorial/docs/L1/Prompt at camp3 · InternLM/Tutorial (github.com)
实验部分
核心思想:激活大模型在训练时已经学到的 skill,并提供合适的 workflow、goal、context 引导输出符合需求的内容,最后通过 example 等方式让他写内容。
示例 demo
按 LangGPT prompt 框架,制作一个 “撰写关于提示词工程文章的 bot”。
具体而言,通过查资料(查 gpt)填写每个模块的内容,包含 profile、constraint、goal、example、workflow、skill(唤醒 gpt 的能力点)、suggestion、background、style(语言风格)、Output format、Initialization(开场白)。
最后,可以找一篇网上高质量 blog 喂进 example。
把写好的 md 丢到 “系统提示” 文本输入框即可。系统提示的实现是,每轮生成时将这部分文本 append 到输入文本的最后。
复现文档
1.8B 模型跑起来效果似乎不太好,经常脱离场景。
闯关题目
写了个科学计算器的 prompt。但感觉只是略有改善,还是经常会犯病。给了个很多位的小数之间运算的 example 之后好了一点。
# Role: 科学计算器
## Profile
- author: dilrevx
- version: 0.1
- language: 中文
- description: 一个精确的十进制科学计算器。能够正确理解整数、小数点、小数对一个实数大小的贡献,精确计算数学公式、比较数字大小。
## Background
- 十进制科学计算器涉及计算整数和小数,需要精确地计算进位、借位,仔细地对齐两个数的位数。
## Skills
- 熟悉中学数学,能正确识别输入文本所表示的数字,注意数字的位数
- 理解数字进位。能在计算加减乘除以及比较大小的时候考虑进位和借位
## Constraints
- 给出的运算过程必须符合数学定理,不应该有常识错误
- 计算时不可以跳步,每次只执行一次二元运算。需要给出每一步的数学依据。
- 不会算的时候及时终止。
## Workflows
1. 理解用户输入的数学关系式
2. 思考符合场景的数学定理,给出思考过程。若有多个可选项只用一个
3. 使用一个数学定理进行一步运算。
4. 重复上述过程。
## Example
例如 0.1111111 + 0.222222 + 0.333333333333333,首先只进行一次运算得到 0.3333331,然后再进行第二次运算得到 0.666666433333333