如果说LLM是一台强大的超级计算机,那么提示就是操作系统和用户界面。一个精心设计的提示可以将LLM的能力发挥到极致,而一个拙劣的提示则可能让它束手无策。然而,手写Prompt总有那么些遗憾,有没有什么好的方法?除了DSPy,(我有大量的文章介绍这个话题,在此不再赘述。)也能自动生成Prompt?
手工编写高质量的提示既耗时又需要专业知识,而且也绝不会因为你是手写的,就一定会比机器生成的质量更高。这就引出了一个问题:AI能否自己来优化提示呢?这正是南加州大学的研究团队探索的方向。他们提出了一种名为REPROMPT的新方法,旨在通过"梯度下降"来自动优化LLM智能体的提示。"梯度下降"之前也有介绍,若有兴趣您可以翻一下之前的文章。
我的的思路是用REPROMPT去生成并优化一段APPL生成代码的SYSTEM PROMPT,然后用这段APPL的SYSTEM PROMPT去生成能写出Prompt的代码。
运行结果是下面这样:
Slide left and right to see more
01
REPROMPT:新的提示优化
REPROMPT的核心思想是将提示优化视为一个机器学习问题。就像我们通过梯度下降来优化神经网络的权重一样,REPROMPT通过"梯度下降"来优化提示中的指令。
这个过程可以分为以下几个关键步骤:
1. 训练数据输入:系统接收用户的旅行计划请求作为训练数据点。
2. LLM生成响应:大语言模型(LLM)根据当前的提示生成一个初步的旅行计划响应。
3. 反馈生成:反馈生成器分析LLM的响应,并提供反馈。在这个例子中,反馈指出了航班价格过高的问题。
4. 批量聚合:系统收集多个类似的交互结果。
5. LLM总结:另一个LLM对收集到的反馈进行总结,提炼出关键的优化方向。在上图的例子中,总结指出了应该优先考虑交通费用。
6. 提示优化:基于总结的结果,提示优化器生成改进后的提示。
7. 更新提示:最后,系统用优化后的提示替换原有提示,完成一次迭代。
这个循环过程不断重复,使得提示能够逐步优化,从而提高LLM在特定任务上的表现。
02
深入REPROMPT的工作原理
我们更详细地探讨一下REPROMPT是如何工作的:
1. 对话历史分析
REPROMPT首先收集一批使用当前提示与LLM交互的对话历史。这些历史记录了LLM的表现,包括它的成功和失败。
然后,系统使用另一个LLM来分析这些历史。这个分析LLM的任务是识别出导致性能不佳的主要原因,或者找出特别有帮助的思路。例如,它可能会发现:“LLM经常忽视预算限制"或"详细的步骤分解对解决问题特别有帮助”。
这个步骤相当于计算"损失函数",指出了当前提示需要改进的方向。
2. 生成改进方案
基于上一步的分析,系统会生成几个可能的改进方案。这些方案可能包括:
- 添加新的指令,如"在开始规划之前,请先进行预算分析"
- 修改现有指令,如将"考虑预算限制"改为"为每个类别设置具体的预算限额"
- 调整指令的顺序,如将预算分析步骤移到最前面
系统会评估这些方案,选择最有可能解决当前问题的一个。
3. 整合改进方案
最后,系统会将选定的改进方案整合到原始提示中。这个过程并不是简单的文本拼接,而是需要仔细考虑新指令应该插入到哪里,是否需要替换现有指令,以及如何保持提示的连贯性。
REPROMPT的一个关键特点是,它会保留提示中的关键元素,如输出格式要求和示例。这确保了优化后的提示仍然符合任务的基本要求。
4. 迭代优化
这个过程会不断重复,每次迭代都会产生一个稍微改进的提示。随着迭代次数的增加,提示的质量会逐步提升,直到达到一个稳定状态。
值得注意的是,REPROMPT并不是盲目地添加越来越多的指令。它会权衡新指令的价值和提示的复杂度,确保提示保持简洁有效。
03
REPROMPT的实战表现
理论听起来很美好,但REPROMPT在实际应用中表现如何呢?研究团队在两个具有挑战性的任务上测试了REPROMPT:PDDL(规划领域定义语言)生成和旅行规划。
PDDL生成任务
PDDL是一种用于描述规划问题的标准化语言。在这个任务中,LLM需要根据自然语言描述生成PDDL格式的动作定义,包括前提条件和效果。
研究团队使用REPROMPT对初始提示进行了一轮优化。结果令人印象深刻:
- 在Tyreworld域(用于训练的域),错误数量从6个减少到4个。
- 在Logistics域(未见过的新域),错误数量从1个减少到0。
- 在Household域(另一个新域),错误数量从52个大幅减少到23个。
这些结果表明,REPROMPT不仅能够改善LLM在训练域的性能,还能提高其在新域的泛化能力。更重要的是,优化后的提示产生的错误是原始错误的一个子集,这意味着REPROMPT确实抓住了问题的本质,而不是简单地增加复杂度。
旅行规划任务
在这个任务中,LLM需要根据给定的预算和偏好制定详细的旅行计划,包括航班、酒店、餐厅和景点。这个任务特别具有挑战性,因为它需要考虑多个约束条件,并进行复杂的推理。
研究团队使用REPROMPT对提示进行了5轮优化。结果同样令人振奋:
- 最终通过率从37.39%提高到48.81%,提升幅度超过40%。
- 交付率(生成完整计划的能力)从76.67%大幅提升到99.44%。
- 常识通过率(计划是否符合常识)从56.39%提高到80.00%。
特别值得注意的是,REPROMPT显著提高了LLM在"合理城市路线"这一常识约束上的表现。这表明,优化后的提示不仅改善了LLM的推理能力,还增强了其对任务关键约束的理解。
04
REPROMPT的技术亮点
现在让我们深入探讨REPROMPT的一些技术细节,这些细节展示了该方法的独特之处和技术创新:
1. 基于摘要的损失计算
传统的提示优化方法往往依赖于人工定义的评分函数或基于任务的评估指标。REPROMPT采用了一种更灵活、更通用的方法:它使用LLM来总结对话历史,提取出需要改进的关键点。
这种方法有几个优点:
- 适应性强:它可以自动适应不同的任务和领域,无需为每个任务设计特定的评估指标。
- 洞察力深:LLM的总结能力使其能够捕捉到人类可能忽视的细微模式和问题。
- 可解释性好:总结提供了清晰的优化方向,使整个过程更加透明。
2. 结构化的提示更新
REPROMPT不是简单地在提示末尾添加新指令,而是采用了一种结构化的更新方法:
- 它会分析原始提示的每个步骤,决定新指令应该插入到哪里,或者是否应该替换现有指令。
- 它会考虑新指令与现有指令的关系,确保更新后的提示保持连贯性。
- 它会保留关键元素,如输出格式要求和示例,确保优化不会破坏提示的基本结构。
这种方法确保了优化是有针对性的,而不是简单的累加。
3. 批量优化
与一些基于单个样本进行优化的方法不同,REPROMPT采用了批量优化的策略:
- 它会收集一批对话历史进行分析,而不是基于单个交互进行优化。
- 这种方法可以识别出普遍存在的问题,而不是过度拟合于特定的边缘情况。
- 它还允许系统权衡不同类型的改进,选择最有价值的优化方向。
4. 自适应的优化策略
REPROMPT的优化策略会根据任务的特点和当前提示的状态进行自适应调整:
- 在早期阶段,它可能会倾向于添加新的指令,以扩展LLM的理解范围。
- 随着优化的进行,它可能会更多地关注于细化和调整现有指令,而不是简单地增加复杂度。
- 它会权衡指令的具体性和通用性,避免过度特化于特定场景。
5. 多轮优化与早停
REPROMPT支持多轮优化,但它也实现了一种早停机制(之前有介绍):
- 系统会监控每轮优化后的性能改善。
- 当性能提升不再显著时,优化过程会自动停止。
- 这确保了最终的提示既有效又简洁,避免了过度优化的风险。
05
REPROMPT的潜在应用
REPROMPT的出现为AI应用开发带来了新的可能性。让我们探讨一下这项技术可能的应用场景:
1. 自适应AI助手
想象一个能够根据用户的使用模式自动调整其交互方式的AI助手。通过REPROMPT,助手可以分析与用户的对话历史,识别出常见的误解或低效模式,然后优化其内部提示以提供更好的服务。
例如,如果系统发现用户经常需要多次澄清才能得到满意的答案,它可能会自动调整提示,使助手在回答时提供更多上下文信息或主动询问更多细节。
2. 领域特定的AI工具
对于特定领域的AI工具,如法律文档分析或医疗诊断辅助系统,REPROMPT可以帮助这些系统更好地适应领域特定的需求和术语。
通过分析专家用户的使用模式,系统可以逐步完善其提示,加入更多领域特定的知识和推理步骤,从而提供更专业、更准确的服务。
3. 教育和培训系统
在教育领域,REPROMPT可以用来开发更智能的tutoring系统。这些系统可以分析学生的回答和错误模式,然后优化其提示以更好地引导学生思考和学习。
例如,如果系统发现许多学生在某个特定概念上存在误解,它可以自动调整其解释方式或增加更多相关的例子。
4. 代码生成和程序设计辅助
在软件开发领域,REPROMPT可以用来优化代码生成AI的提示。通过分析程序员的反馈和修改模式,系统可以学会生成更符合特定项目风格和需求的代码。
它还可以帮助系统更好地理解复杂的编程任务,生成更详细、更有结构的伪代码或设计文档。
5. 自动化客户服务
在客户服务领域,REPROMPT可以帮助优化聊天机器人的响应策略。通过分析大量客户交互,系统可以识别出常见的沟通障碍和满意度低的模式,然后调整其提示以提供更有效、更贴心的服务。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。