重磅突破:首个自适应LLM的智能提示优化系统MAPS,让用例生成效率提升超30%

AITNT-国内领先的一站式人工智能新闻资讯网站
# 热门搜索 #
AITNT-国内领先的一站式人工智能新闻资讯网站 搜索
重磅突破:首个自适应LLM的智能提示优化系统MAPS,让用例生成效率提升超30%
3822点击    2025-01-13 10:54

当前LLM测试用例生成的困境


在软件开发过程中,测试用例的生成一直是一个既重要又耗时的环节。近年来,大型语言模型(LLM)在这一领域展现出了巨大的潜力。然而,实践表明,即使是同一个提示词(Prompt),在不同的LLM上也会产生截然不同的效果。例如研究者的实验显示,在Defects4J数据集上,同一个提示词在ChatGPT上可以达到24.46%的代码行覆盖率,但在Llama-3.1上的表现却大幅下降。这种差异凸显出了一个关键问题:我们需要为每个LLM量身定制最优的提示词,而不是使用统一的模板。但手动设计和优化提示词不仅耗时,而且难以保证效果。这就需要一个能够自动为不同LLM优化提示词的系统。


重磅突破:首个自适应LLM的智能提示优化系统MAPS,让用例生成效率提升超30%


MAPS系统:自适应提示优化方案


来自香港中文大学、哈尔滨工业大学(深圳)等机构的研究团队提出了一个突破性的解决方案——MAPS(LLM-tAilored Prompt generation method for teSt case generation)。这是首个能够自动为不同LLM优化测试用例生成提示词的系统。MAPS通过三个创新模块解决了现有方法的核心痛点:提示词多样性不足、缺乏错误指导以及领域知识缺失。


重磅突破:首个自适应LLM的智能提示优化系统MAPS,让用例生成效率提升超30%


MAPS系统工作流程概览。 该图展示了MAPS自适应提示优化系统的完整工作流程,采用模块化设计,包含以下核心组件:


1.领域上下文知识提取(左侧蓝框)


  • 融合目标方法、局部上下文和全局上下文信息
  • 通过知识增强机制扩充领域理解
  • 为提示生成提供专业知识基础


2.多样性引导的提示生成(右上红框)


  • 基于覆盖率评估现有提示词效果
  • 应用多样化修改方法优化提示
  • 在搜索空间中探索新的提示变体


3.失败驱动的规则归纳(右下橙框)


  • 通过加权采样选择失败信息
  • 基于错误反思生成优化规则
  • 验证规则的有效性和适用性


4.迭代优化机制(中心环路)


  • 从种子提示开始持续优化
  • 通过生成和反馈进行多轮迭代
  • 动态更新当前提示库


系统通过这三个模块的协同工作,实现了提示词的自动优化过程。初始提示词(Seed Prompts)经过不断迭代优化,最终产生高质量的测试用例。整个过程是自适应的,可以根据不同LLM的特点动态调整优化策略。


多样性引导的提示生成模块


这个模块解决了现有方法中提示词变化不足的问题。传统方法往往产生高度相似的提示词,如"Create unit tests to verify..."、"Create unit tests to validate..."等,这严重限制了优化空间。MAPS采用了创新的多样性度量方法,通过计算提示词之间的语义差异,确保每次生成的候选提示词都能探索不同的表达方式。研究者设计了一个基于编辑距离和语义相似度的混合评分机制,当新生成的提示词与现有提示词过于相似时,系统会自动调整生成策略,确保探索更广阔的可能性。


重磅突破:首个自适应LLM的智能提示优化系统MAPS,让用例生成效率提升超30%


MAPS系统的提示词模板。 该图展示了MAPS系统中使用的三种核心提示词模板,每个模板都针对特定的优化任务,包含以下组成部分:


1.修改提示模板(左图)


  • 系统提示:将LLM定位为辅导者角色
  • 用户提示:要求提供N种不同的修改建议
  • 目标:确保生成的测试用例具有高覆盖率
  • 特点:强调提示词修改的多样性和有效性


2.反思提示模板(中图)


  • 系统提示:将LLM定位为软件工程师角色
  • 用户提示:分析错误样例并提供改进策略
  • 目标:从失败案例中总结经验教训
  • 特点:注重错误分析和解决方案提出


3.转换提示模板(右图)


  • 系统提示:将LLM定位为规则制定者角色
  • 用户提示:基于常见错误提炼优化规则
  • 目标:将经验转化为可复用的规则
  • 特点:强调规则的精确性和通用性


这三个模板共同构成了MAPS系统的提示词优化框架,通过角色定位、任务描述和目标设定的精心设计,确保了系统能够生成高质量、多样化的测试用例。


失败驱动的规则归纳模块


这个模块着眼于解决一个普遍存在但常被忽视的问题:如何从失败的测试用例中学习。研究者发现,即使是优化后的提示词生成的测试用例,往往会重复出现相同类型的错误。MAPS创新性地引入了失败模式分析机制,通过归纳常见错误类型(如抽象类实例化、参数类型不匹配等),自动生成相应的规避策略,并将这些策略融入到提示词优化过程中。这种方法不仅提高了测试用例的质量,还大大加快了优化收敛速度。


领域上下文知识提取模块


这是MAPS最具特色的创新点之一。传统方法往往只关注目标方法本身,而忽略了更广泛的上下文信息。MAPS系统会自动分析目标类的继承关系、成员方法签名以及跨文件的调用关系,构建完整的知识图谱。这些信息被巧妙地整合到提示词中,使LLM能够生成更符合实际场景的测试用例。例如,对于抽象类的测试,系统会自动提供可用的具体实现类信息,有效避免了实例化错误。


重磅突破:首个自适应LLM的智能提示优化系统MAPS,让用例生成效率提升超30%


最终提示词格式与上下文信息提取示例。该图以一个Java类的测试用例生成为例,展示了MAPS系统如何提取和组织代码上下文信息,以及最终优化后的提示词格式。图中以Axis类(实现了Cloneable和Serializable接口)为例,详细展示了以下核心要素:


1.提示词设计(顶部红黄色部分)


  • 优化后的指令部分明确要求"编写多样化的单元测试,覆盖正常场景、边缘场景、失败场景和边界场景"
  • 归纳的具体规则包括"确保所有必要的类在测试文件开始时被导入"和"确保所有类都有匹配所需参数类型的构造函数"
  • 采用结构化的格式确保提示的完整性和可执行性


2.领域知识提取(中部蓝色部分)


  • 提取目标类的完整签名信息:public abstract class Axis implements Cloneable, Serializable
  • 识别关键方法如setTickLabelInsets及其参数类型RectangleInsets
  • 捕获成员方法之间的调用关系,包括setTickLabelInsetsgetTickLabelInsets的实现细节


3.上下文信息整合(底部绿色部分)


  • 识别并提取继承关系信息,如Axis类实现的接口
  • 分析跨文件的方法调用,包括RectangleInsets类的定义和使用
  • 收集相关类的构造函数信息,特别是RectangleInsets类的多个构造函数重载


4.知识组织方式(右侧标注)


  • 清晰标识局部上下文(In-file Context)和全局上下文(Cross-file Context)
  • 突出显示焦点方法(Focal Method)及其相关代码元素
  • 建立方法调用、继承关系等代码元素之间的关联关系,如CategoryAxis类的继承信息


MAPS系统中提示词优化的核心算法


重磅突破:首个自适应LLM的智能提示优化系统MAPS,让用例生成效率提升超30%


MAPS提示词优化算法。 该算法展示了MAPS系统如何通过迭代优化来生成高质量的提示词。算法接收现有提示词集合(P)、已有规则(ER)、处理过的失败案例(H)等作为输入,通过以下步骤进行优化:


1.多样性引导的提示生成(第2-7行)


  • 从现有提示词中选择表现最好的K个
  • 使用不同的修改方法生成新的提示词变体
  • 将新生成的提示词加入优化集合


2.失败驱动的规则归纳(第8-11行)


  • 使用DBSCAN算法对失败信息进行聚类
  • 采样具有代表性的失败案例
  • 通过LLM反思失败原因并总结规则


3.规则验证与选择(第12-15行)


  • 评估新生成规则的有效性
  • 选择最佳规则加入规则集
  • 更新已处理的失败案例集合


这个算法展示了MAPS如何将多样性探索和失败经验学习相结合,实现提示词的持续优化。通过这种方式,系统能够不断提升测试用例的生成质量。


实验结果:显著优于现有方法


研究团队在Defects4J基准数据集上进行了全面的实验评估,结果令人振奋:


1.相比现有最先进的提示词优化方法,MAPS在代码行覆盖率上平均提升了6.19%,分支覆盖率提升了5.03%。


2.在不同LLM上的表现都实现了显著提升:


  • ChatGPT:行覆盖率从24.46%提升到29.87%
  • Llama-3.1:行覆盖率从21.92%提升到27.56%
  • Qwen2:行覆盖率从23.15%提升到28.94%


为了深入理解MAPS系统各个组件的贡献,研究团队进行了详细的消融实验:


重磅突破:首个自适应LLM的智能提示优化系统MAPS,让用例生成效率提升超30%


MAPS系统的消融实验结果。 通过移除不同的关键组件,分析它们对系统性能的影响:


1.完整MAPS系统


  • 在所有模型上都达到了最佳性能
  • ChatGPT上实现了53.80%的行覆盖率和41.84%的分支覆盖率
  • Llama-3.1和Qwen2也显示了类似的优势


2.组件重要性分析


  • 领域上下文知识提取的移除导致性能显著下降
  • 多样性引导的提示词生成对提升覆盖率起到重要作用
  • 失败驱动的规则归纳也证明了其必要性


3.跨模型表现


  • 各个组件在不同模型上都显示出一致的重要性
  • 完整系统相比单一组件始终表现更好
  • 证实了MAPS系统设计的合理性


这些实验结果不仅验证了MAPS系统的整体效果,也证明了每个组件对于提升测试用例生成质量的重要性。


重磅突破:首个自适应LLM的智能提示优化系统MAPS,让用例生成效率提升超30%


MAPS系统参数分析与迭代效果实验。 这组图展示了MAPS系统在不同参数设置和模型上的性能表现,通过代码行覆盖率(Line Coverage)指标进行评估:


1.种子提示词数量影响(图4a)


  • 横轴显示种子提示词数量(3-6个)
  • MAPS方法(方块标记)始终优于基准方法
  • 当种子提示词数量为5时达到最佳效果
  • 覆盖率提升约10个百分点


2.生成提示词数量影响(图4b)


  • 横轴表示每次生成的提示词数量(1-3个)
  • MAPS方法表现稳定且优异
  • 生成2-3个提示词时效果最好
  • 与基准方法的差距明显


3.迭代优化效果(图5)


  • ChatGPT(图5a)
  • Llama 3.1(图5b)
  • Qwen2(图5c)
  • 在三个不同模型上进行测试:
  • MAPS方法(蓝线)在所有模型上都显示出显著的优势
  • 迭代2-3次后性能趋于稳定
  • 相比其他方法(EVOPROMPT等)提升明显


这些实验结果表明,MAPS系统不仅在参数设置上具有良好的稳定性,而且在不同大语言模型上都能实现显著的性能提升。特别是通过迭代优化,系统能够持续改进测试用例的覆盖率,最终达到稳定的高性能水平。


对Prompt工程实践的重要启示


MAPS的成功为Prompt工程领域带来了几个重要启示:


1. 提示词优化需要多维度考量


仅仅关注提示词的语义表达是不够的,还需要考虑:


  • 提示词的多样性:确保充分探索可能的表达方式
  • 错误反馈:将失败经验转化为优化方向
  • 领域知识:整合更广泛的上下文信息


2. 自动化优化是必然趋势


随着LLM种类的增多,手动设计和优化提示词的方法将变得越来越不可持续。MAPS展示了自动化优化的可行性和优势,这个方向值得更多关注和投入。


3. 领域特定知识的重要性


MAPS的成功很大程度上得益于其对领域知识的充分利用。这提醒我们,在设计提示词时,除了通用的工程原则,还要特别注意领域特定的知识和约束。


写在最后


MAPS系统的出现标志着Prompt工程进入了一个新阶段。它不仅解决了测试用例生成中的具体问题,更重要的是提供了一个可推广的框架,展示了如何将提示词优化从手工艺术转变为系统工程。对于正在开发AI产品的工程师来说,MAPS提供的方法和思路值得深入学习和借鉴。它提醒我们,优秀的Prompt不是靠直觉和运气,而是可以通过系统化的方法来设计和优化的。关于更多提示词优化,您也可以看下下面资料汇总中提到的优化方法。


文章来自于“AI修猫Prompt”,作者“AI修猫Prompt”。


重磅突破:首个自适应LLM的智能提示优化系统MAPS,让用例生成效率提升超30%

关键词: AI , MAPS , 提示词 , 人工智能
AITNT-国内领先的一站式人工智能新闻资讯网站
AITNT资源拓展
根据文章内容,系统为您匹配了更有价值的资源信息。内容由AI生成,仅供参考
1
cursor

【免费】cursor-auto-free是一个能够让你无限免费使用cursor的项目。该项目通过cloudflare进行托管实现,请参考教程进行配置。

视频教程:https://www.bilibili.com/video/BV1WTKge6E7u/

项目地址:https://github.com/chengazhen/cursor-auto-free?tab=readme-ov-file


2
AI工作流

【开源免费】n8n是一个可以自定义工作流的AI项目,它提供了200个工作节点来帮助用户实现工作流的编排。

项目地址:https://github.com/n8n-io/n8n

在线使用:https://n8n.io/(付费)


【开源免费】DB-GPT是一个AI原生数据应用开发框架,它提供开发多模型管理(SMMF)、Text2SQL效果优化、RAG框架以及优化、Multi-Agents框架协作、AWEL(智能体工作流编排)等多种技术能力,让围绕数据库构建大模型应用更简单、更方便。

项目地址:https://github.com/eosphoros-ai/DB-GPT?tab=readme-ov-file



【开源免费】VectorVein是一个不需要任何编程基础,任何人都能用的AI工作流编辑工具。你可以将复杂的工作分解成多个步骤,并通过VectorVein固定并让AI依次完成。VectorVein是字节coze的平替产品。

项目地址:https://github.com/AndersonBY/vector-vein?tab=readme-ov-file

在线使用:https://vectorvein.ai/(付费)

3
prompt

【开源免费】LangGPT 是一个通过结构化和模板化的方法,编写高质量的AI提示词的开源项目。它可以让任何非专业的用户轻松创建高水平的提示词,进而高质量的帮助用户通过AI解决问题。

项目地址:https://github.com/langgptai/LangGPT/blob/main/README_zh.md

在线使用:https://kimi.moonshot.cn/kimiplus/conpg00t7lagbbsfqkq0