在人工智能快速发展的今天,如何有效利用大型语言模型(LLMs)成为了一个普遍关注的话题。这是9月份的一篇论文,提出了LangGPT结构化提示框架和Minstrel多代理提示生成系统,为非AI专家使用LLMs提供了强大支持。
对于非人工智能专家来说,构建高质量的提示以充分利用LLMs的能力仍然是一个巨大的挑战。现有的提示工程研究主要集中在总结设计技巧和设计自动优化方法上,但这些方法往往缺乏系统性的设计,导致学习成本高昂,且不利于提示的迭代更新。
为了解决这些问题,论文的作者提出了LangGPT,一个结构化的提示设计框架,以及Minstrel,一个基于多代理协作的结构化提示生成工具。研究的主要目的包括:
- 提高提示的泛化能力和可重用性,降低提示设计的学习成本。
- 通过多代理协作自动生成高质量的结构化提示。
- 验证结构化提示在指导LLMs执行任务时的优越性。
LangGPT: 结构化提示设计框架
整体双层结构
LangGPT借鉴了面向对象编程语言的设计思想,提出了一个双层结构的提示设计框架:
- 模块(Modules):类似于编程语言中的类,每个模块代表对LLMs的一个方面的要求。
- 元素(Elements):类似于编程语言中的函数和属性,代表对LLMs的直接具体指令的内容。
模块设计
LangGPT定义了以下基本模块:
- 角色(Role):提示的名称和为LLMs设置的角色。
- 配置文件(Profile):包含提示的基本信息,如作者、版本、描述、语言等。
- 约束(Constraints):LLMs在生成响应时不能违反的禁令和必须满足的要求。
- 目标(Goals):用户想要达到的最终目标。
- 初始化(Initialization):通知LLMs开始对话的标志。
- 示例(Examples):给LLMs提供输入-输出对作为学习实例。
- 工作流程(Workflow):指导LLMs执行任务的过程。
- 技能(Skills):激活LLMs与任务相关的知识和能力。
- 建议(Suggestion):为LLMs在执行任务时遇到的分支情况提供建议和行为规划。
- 背景(Background):LLMs执行任务时必须具备的上下文信息和记忆。
- 风格(Style):规定LLMs响应的风格、语气和情感特征。
- 输出格式(Output format):指定LLMs响应的格式。
- 命令(Command):防止基于LLMs的助手局限于单一行为。
元素设计
LangGPT设计了三种基本元素类型:
- 模拟赋值的模板:
The ⟨PROPERTY⟩ is ⟨VALUE⟩.
- 指定输入信息、任务和输出的模板(输入和输出可选)
- 模拟函数的形式:
For the given ⟨PROPERTY⟩ of ⟨VALUE⟩, please execute the following actions: ⟨ACTIONS⟩; Return the ⟨RESULT⟩
论文中提供了一个示例表格,展示了不同模块中基本元素的示例:
Minstrel: 基于多代理协调的结构化提示生成
Minstrel是一个通过多个生成代理协作来生成结构化提示的工具。它引入了工作组的概念,将提示生成任务分解为低耦合且灵活的子任务。
工作组设计
Minstrel包含三个主要的工作组:
- 分析组(Analysis Group,A):负责分析用户需求、反馈和测试结果。
- 设计组(Design Group,D):负责生成不同模块的主要内容。
- 测试组(Test Group,T):对生成的结构化提示进行系统测试。
论文中提供了一个图表,展示了Minstrel的整体框架:
代理设计
每个工作组中包含不同的代理:
- 分析组(A):- 分析器A(m):分析用户的任务需求并激活相应的模块设计代理。- 反思器A(r):总结测试反馈和用户反馈,并将其反馈给相应的模块设计代理。
- 设计组(D):- 包含多个对应LangGPT模块的专门代理,如D(cons.)负责生成约束内容,D(bkgd.)负责生成背景内容等。
- 测试组(T):- 模拟器T(s):按照生成的提示充当助手。- 提问者T(q):与模拟器进行对话,产生测试对话。- 评论员T(c):评估助手的表现,并能相互辩论。
多代理协作与反思机制
Minstrel的工作流程包括设计和反思两个主要阶段:
- 设计阶段:
Sa = Am(t), M[k] = D(k)(t) for k in Sa,
其中Sa表示模块激活状态,M表示存储生成的LangGPT模块内容的列表。 - 反思阶段:
Ct = T(c)(T(s)(∑M), T(q)(t)), Sr = A(r)(Ct + Cu), M[k] = M[k] + Am(Sr),
其中Ct表示测试组得出的评论,Cu表示用户的评论,Sr表示基于评论生成的模块激活状态。
通过这种设计,Minstrel能够不断优化生成的提示,以更好地满足用户需求和任务要求。
实验设置
为了验证LangGPT和Minstrel的有效性,论文作者进行了一系列实验。以下是实验设置的主要内容:
大型语言模型选择
- Minstrel使用的模型:GPT-4-turbo
- 用于评估提示效果的模型:- Gemma-2-9b-it- Qwen2-7B-Instruct- Meta-Llama-3.1-8B-Instruct- Mistral-7B-Instruct-v0.2- GPT-4o-mini- Claude3-haiku
评估任务
为了全面评估提示的质量,作者选择了以下任务:
- EQ-Bench:情感智能基准测试
- GPQA:研究生级别的问答任务
- GSM8k:数学问题求解
- IFEval:指令遵循评估
- TruthfulQA:真实性问答任务
这些任务涵盖了LLMs常用的多个领域,包括专业知识问答、数学问题、指令遵循和虚假信息检测。
基线方法
作者设计了基于COSTAR和CRISPE原则的基线提示,用于与LangGPT和Minstrel生成的结构化提示进行比较。
主要结果和分析
LLMs性能比较
论文中提供了一个详细的表格,展示了不同提示方法对各种LLMs在不同任务上的性能影响:
从这个表格中可以观察到以下主要结果:
- LangGPT提示(无论是手动编写还是由Minstrel生成)在大多数情况下都能显著提升LLMs的性能。
- Minstrel自动生成的提示在某些任务上甚至超过了人类专家手动编写的LangGPT提示。
- 不同模型和任务对提示的敏感度有所不同,特别是在困难的GPQA任务上表现明显。
模型规模对提示效果的影响
为了进一步研究模型规模对提示效果的影响,作者邀请普通用户为不同规模的Qwen1.5模型设计提示,并在Open LLM Leaderboard的任务上进行测试。结果如下图所示:
这些结果揭示了以下insights:
- LangGPT提示对较大规模的模型有更显著的性能提升。
- 对于较小规模的模型(如0.5B参数的Qwen),结构化提示可能反而会降低性能。
- 在某些任务上(如ARC-Challenge和MMLU),LangGPT提示的效果特别明显。
易用性评估
为了评估LangGPT和Minstrel的易用性,作者在其在线社区中进行了用户调查。主要结果包括:
- 89.66%的用户给出了3分或更高的评分(5分制),表明用户认可LangGPT的易用性。
- LangGPT的整体满意度得分为8.55分(满分10分)。
这些结果证明了LangGPT框架对非AI专家也具有很好的可用性。
案例研究
为了直观地展示结构化提示的效果,论文作者提供了一个具体案例。他们指导LLMs扮演一个奉承者的角色,分别使用LangGPT提示、CRISPE提示和仅指令提示。结果如下图所示:
这个案例研究揭示了以下几点:
- 使用仅指令提示和CRISPE提示的ChatGPT没有明确的角色特征,回应主要是对用户输入的简单重复。
- 使用LangGPT提示的ChatGPT表现出更丰富的角色特征,能够从多个角度表达赞美,展现出更高的语言能力和创造性。
总结
通过这些实验和分析,论文作者得出以下主要结论:
- LangGPT作为一个结构化的提示设计框架,具有良好的系统性和可重用性,易于学习和使用。
- Minstrel能够通过多代理协作自动生成高质量的结构化提示,在某些情况下甚至超过人类专家的表现。
- 结构化提示(无论是Minstrel生成还是手动编写)在指导LLMs执行任务时表现更好,特别是对于较大规模的模型。
然而,研究也发现了一些局限性,特别是结构化提示对低性能LLMs的适应性较差。因此作者提出了未来的研究方向:
- 进一步优化提示设计,特别是针对低性能LLMs的优化。
- 探索如何更好地平衡提示的复杂性和模型的能力,以适应不同规模和能力的LLMs。
- 研究如何自动调整提示的复杂度,以适应不同的任务和模型组合。
总的来说,这项研究为提示工程领域提供了新的思路和工具,有望推动大型语言模型在更广泛的应用场景中的有效使用。
论文链接:
https://avoid.overfit.cn/post/8645e12d18e84e26a54d603d9ce388400