【网安大模型专题10.19】论文3:ChatGPT+自协作代码生成+角色扮演+消融实验

news2024/9/20 8:43:59

Self-collaboration Code Generation via ChatGPT

  • 写在最前面
    • 朋友分享的收获与启发
    • 课堂讨论
      • 代码生成如何协作,是一种方法吗
      • 思路相同
      • 交互实用性
  • 代码生成与自协作框架 摘要
  • 相关工作
    • PPT学习
    • 大语言模型在代码生成方向
    • 提高生成的代码的准确性和质量:前期、后期处理
    • 将团队协作理论应用于代码生成的研究
  • 成果和贡献
  • 自协作框架原理
    • 1、DOL任务分配
    • 2、共享黑板协作
    • 3、Instance实例化
    • 案例说明
      • 简单任务:基本操作
      • 复杂任务:游戏开发
  • 实验
    • 设置
    • 数据集
      • 1)MBPP(sanitized version) [Austin et al., 2021]
      • 2)HumanEval [Chen et al., 2021]
      • 3)MBPP-ET
      • 4)HumanEval-ET
    • 实验结果1:与其他代码生成方法比较
    • 实验结果2:评估不同角色的影响
    • 实验结果3:评估有无角色的影响
    • 实验结果4:评估交互次数的影响
  • 结论与展望
    • 优势
    • 问题
    • 有价值的探索方向
  • 课堂讨论
    • 代码生成如何协作,是一种方法吗
    • 思路相同
    • 交互实用性

写在最前面

Yihong Dong∗, Xue Jiang∗, Zhi Jin†, Ge Li† (Peking University)
arXiv May 2023

arXiv 2023.4.15
https://arxiv.org/pdf/2304.07590.pdf

一位不愿意透露姓名的朋友分享了Self-collaboration Code Generation via ChatGPT《基于ChatGPT的自协作代码生成》
这篇论文是chatgpt的黑盒api调用,因此没有关于模型的微调等操作,更多的是提示工程的框架设计(后面同学提到,和思维链的工作有相通之处)
同时,由于是大模型,因此是零样本和少样本学习
如果之后有类似的idea,或许可以尝试模仿论文中的图设计、消融实验

朋友讲解论文叙述框架性强,梳理论文的逻辑清晰
PPT也很清晰明了,很多值得学习的细节

朋友分享的收获与启发

1.框架性的idea也是一种方向,有时也可以带来显著的结果,在AI领域不止有提升算法的思路。
2.实现这种idea也需要严谨完整的推理和验证,将high-level的想法落到细节
3.作者的结论里说明了自协作架构还是要结合人类程序员的指导,避免系统脱离需求,这说明ChatGPT暂时还不能完全自主地工作

课堂讨论

框架性idea
实现idea,需要严谨完整的推理和验证

代码生成如何协作,是一种方法吗

漏洞检测帮助这个框架,这个框架本身首先需要能检测出漏洞,才能去辅助漏洞检测

思路相同

思维链(2022),分步骤
三个人员可以用一个提示来完成

交互实用性

运行时间上
将全部都用chatgpt,写代码换成codeX

代码生成与自协作框架 摘要

目的: 代码生成旨在生成符合特定规范、满足人类需求的代码,以提高软件开发效率和质量,甚至推动生产模式的转变。

创新点: 本研究提出了一种自协作框架,使大型语言模型(LLM,例如ChatGPT)能够应对复杂的代码生成任务。

方法: 该框架首先为三个不同角色的大型语言模型分配任务,包括分析员(analyst,负责需求分析)、程序员(coder,负责编写代码)、测试员(tester,负责检验效果),然后通过软件开发方法(SDM)规定了这些角色之间的交互方式。

结果: 通过所提出的自协作框架,相较于ChatGPT3.5,实验结果显示在四种不同基准测试中,Pass@1的性能提高了29.9%至47.1%。

在这里插入图片描述

相关工作

PPT学习

在这里插入图片描述

大语言模型在代码生成方向

自2021至现在,有许多团队证实了LLM在代码生成领域的潜力
[Chen et al., 2021, Shen et al., 2022, Li et al., 2022, Dong et al., 2023a,Nijkamp et al., 2022, Fried et al., 2022, Zheng et al., 2023]

  • 仍然存在的挑战
    在复杂任务上正确地生成代码
  • 解决方法
    团队培训方法:团队合作理论+软件工程实践
  • 好处
    分解成子任务,高效,可控;
    加入错误检测和质量控制;
    保证与要求相符

提高生成的代码的准确性和质量:前期、后期处理

后期处理(post-processing)和先期处理(prior-processing)
post-processing:对多个候选人重新排序,选出最正确的方案
CodeT[Chen et al., 2021]和Coder-Reviewer[Zhang et al.,2022]
问题:引入了额外的计算成本用于测试用例生成
post-processing:引导LLM进行rubber duck debugging
self-debugging[Chen et al.,2023]
问题:依赖于few-shot prompting,要求对于每个数据集专门生成一些提示例子,耗时耗力
prior-processing:在代码生成之前引入planning
self-planning[Jiang et al., 2023]
问题:并不完善

将团队协作理论应用于代码生成的研究

[Schick et al., 2022]

  • 原理:先训练不同模型执行对应子任务,然后用联合训练增强相互理解
  • 问题:这种训练方法非常costly;缺乏相关的训练数据
    改进

[Ouyang et al., 2022, Chung et al., 2022, OpenAI, 2023]

  • 原理:经过足够的训练让LLM在软件开发的各个阶段都可以出色地完成任务,方便后续分配;根据人类命令做出调整,开发模型交互的潜力
  • 问题:依赖于人类程序员的专业知识,依然耗时耗力

解决方法:本论文提出自协作框架,让ChatGPT形成团队

成果和贡献

提出LLM的自协作框架,以应对“在复杂任务上生成正确的代码”的挑战

根据SDM实例化初始团队,在software development环节分配三个角色负责不同stage

由GPT3.5组成的自协作虚拟团队在各种代码生成的基准测试上,性能超过了GPT-4

在现实场景下,自协作模式有效完成复杂任务

自协作框架原理

1、DOL任务分配

根据任务分配角色指令,然后将对应的任务传递给角色
在这里插入图片描述

2、共享黑板协作

不同角色间,将输出的信息共享

在这里插入图片描述

3、Instance实例化

3.Instance实例化
1)采用SDM中的经典瀑布模型 [Petersen et al., 2009],简化为三个阶段:分析、编码、测试。
2)分析员:生成一个高维的计划,着重指导程序员。程序员:根据分析员的计划写代码;根据测试员的测试报告修改代码。测试员:从功能性、可读性和可维护性评判程序员的代码
3)终止条件:达到最大交互次数n或者测试员报告没有错误

在这里插入图片描述

案例说明

简单任务:基本操作

1)分析员:分解任务
+制定high-level计划
2)程序员:按照计划生成对应代码
3)测试员:检验代码的功能性和边缘测试情况,反馈错误让程序员修改

在这里插入图片描述

复杂任务:游戏开发

未展示训练过程,仅说明结果
满足所有游戏逻辑,保障了精确的角色控制,设置正确的碰撞检测,必要的游戏资产加载和适当的图像缩放。此外,注意到了没有直接规定但是符合常识的游戏逻辑,比如炸弹掉落至底部后会被重置位置
单个LLM只能生成脚本的粗略草稿
在这里插入图片描述

实验

设置

在这里插入图片描述

数据集

四个基准测试(数据集)

1)MBPP(sanitized version) [Austin et al., 2021]

427个Python编程任务,属于调用标准库功能函数的基础代码生成任务
包含:自然语言描述+编程计划提示+3个测试用例

2)HumanEval [Chen et al., 2021]

164个编程任务
包含:自然语言描述+函数签名+函数主体+单元测试

3)MBPP-ET

4)HumanEval-ET

比原本的数据集多100余个测试,包含边缘案例

实验结果1:与其他代码生成方法比较

在这里插入图片描述

输入:自然语言+函数签名+公共的测试用例
分析:相较于GPT-3.5增长了29.9%-34.6%;在后两个数据集上表现更佳,证明自协作代码生成的可靠性。
原因可能为:成员多可以考虑更多边界条件处理常见bug

实验结果2:评估不同角色的影响

在这里插入图片描述

输入:自然语言
分析:在HumanEval基准测试上三角色团队效果最好,在MBPP基准测试上coder-tester团队表现最好,
原因是:MBPP的两个数据集任务较简单,不需要计划

实验结果3:评估有无角色的影响

在这里插入图片描述
few-shot prompting:每个阶段给予一些案例提示
zero-shot:给予指令删除角色,不给予提示
分析:角色指令的特定的上下文语境限制了LLM的生成空间,令其在场景约束下进行推理,生成与命令一致的结果。few-shot比zero-shot表现差的原因是有限的例子提示不能完全反映目标反而让LLM的理解产生偏差,此外提示太长阻碍了LLM的理解。

实验结果4:评估交互次数的影响

在这里插入图片描述
Maximum Interaction(MI)=0, 相当于只有coder
分析:大多数任务在两轮内就可以完成;轮数越大,效果越好,但是由于maximum token的限制只能做4轮交互

结论与展望

优势

自协作框架允许团队成员的数量被修改,以适应不同难度的代码生成任务
在通用人工智能(AGI)时代,也可以不受限制,创造新的软件开发模型和新角色组成的虚拟团队

问题

完全自主的系统,可能会脱离需求
有可能的解决方案:结合人类专家的指导监督虚拟团队的操作

有价值的探索方向

通过外部工具弥补LLM自身存在的局限,比如通过角色指令调动Toolformer [Schick et al., 2023]

课堂讨论

框架性idea
实现idea,需要严谨完整的推理和验证

代码生成如何协作,是一种方法吗

漏洞检测帮助这个框架,这个框架本身首先需要能检测出漏洞,才能去辅助漏洞检测

思路相同

思维链(2022),分步骤
三个人员可以用一个提示来完成

交互实用性

运行时间上
将全部都用chatgpt,写代码换成codeX

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1132934.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在 MaxPatrol SIEM 的帮助下,Positive Technologies 专家检测到影响超过 25 万用户的恶意软件

👨‍💻 从未经验证的来源下载软件?错误。从 torrent 跟踪器下载?致命错误。 八月份,我们的专家使用 MaxPatrol SIEM 在一家俄罗斯公司的网络中发现了异常活动。经过调查,CSIRT 团队(Positive T…

useLayoutEffect和useEffect的区别

使用方式 这两个函数的使用方式其实非常简单,他们都接受一个函数一个数组,只有在数组里面的值改变的情况下才会再次执行 effect。所以对于使用方式我就不过多介绍了,不清楚的可以先参考官网 。 差异 useEffect 是异步执行的,而…

AOP和OOP有什么异同点

面向对象编程(Object-Oriented Programming, OOP)和面向切面编程(Aspect-Oriented Programming, AOP)是两种不同的编程范式,它们各自有着独特的目标和实现方式。下面我将列出它们的一些主要异同点: 相同点 …

基于嵌入式Qt 开发板蜂鸣器(BEEP)

## 简介 在GEC6818开发板,开发板板载资源上有一个蜂鸣器(BEEP)。如下图原理图。此蜂鸣器直接接在一个 GPIO 上,并不是接在 PWM 上,管脚资源限制。 ​ ## 示例 想要控制这个蜂鸣器(BEEP),首先我们出厂内核已经默认将这个 LED 注册成了 gpio-leds 类型设备。 项目简…

Java中JVM、JRE和JDK三者有什么区别和联系?

任何语言或者软件的运行都需要环境。就像人要生活在空气中,鱼要活在水中,喜阴植物就不能放在阳光下暴晒一样,任何对象个体的存在都离不开其所需要的环境,编程语言亦是一样的。 java 语言的开发运行,也离不开 Java 语言…

EtherCAT从站转CclinkIE协议网关应用案例

远创智控的YC-ECT-CCLKIE网关,一款具有强大功能的ETHERCAT通讯网关。 它可以将ETHERCAT网络和CCLINK IE FIELD BASIC网络无缝连接起来。作为ETHERCAT总线中的从站,本网关可以接收来自ETHERCAT主站的数据,并将其传输到CCLINK IE FIELD BASIC网…

【蓝桥杯选拔赛真题01】C++参赛建议 青少年组蓝桥杯C++选拔赛真题 STEMA比赛真题解析

目录 C/C++参赛建议 一、题目要求 1、编程实现 2、输入输出 二、算法分析 <

鲸鱼优化算法(Whale Optimization Algorithm,WOA)剖析

鲸鱼优化算法 鲸鱼优化算法&#xff08;Whale Optimization Algorithm&#xff0c;WOA&#xff09;是 2016 年由澳大利亚格里菲斯大学的 Mirjalili 等提出的一种新的群体智能优化算法&#xff0c;鲸鱼优化算法是一种用于解决优化问题的新型优化技术。该算法包括三个运算符&…

脏牛提权 liunx

使用方法 Liunx 普通用户 内核版本 在版本里 我直接脏牛提权 有脚本查看内核版本 上传c脚本 编译 直接执行 获取高权限 提权 Liunx https://github.com/InteliSecureLabs/Linux Exploit Suggester 运行这个脚本 上传到客户端 https://github…

cola架构:cola源码中访问者模式应用浅析

目录 1.访问者模式简介 2.cola访问者模式应用 2.1 cola被访问者类图 2.2 cola访问者类图 我们知道&#xff0c;如果一个对象结构包含很多类型的对象&#xff0c;希望对这些对象实施一些依赖其具体类型的操作&#xff0c;但又避免让这些操作“污染”这些对象的类&#xff0c…

[ACTF2020 新生赛]Include

【解题思路】 1.打开链接 发现好东西&#xff0c;进一步分析。 2.分析页面 发现网页得到一个GET请求-->?fileflag.php 可以推断&#xff0c;要解答该题目需要获取 flag.php 的源代码. 将flag.php文件进行base64编码&#xff08;将网页源代码转换为Base64编码&#xff…

Java截取(提取)子字符串(substring()),Java分割字符串(split())

在 String 中提供了两个截取字符串的方法&#xff0c;一个是从指定位置截取到字符串结尾&#xff0c;另一个是截取指定范围的内容。下面对这两种方法分别进行介绍。 1. substring(int beginIndex) 形式 此方式用于提取从索引位置开始至结尾处的字符串部分。调用时&#xff0c…

基于SpringBoot的设备管理系统

基于SpringBootVue的设备管理系统的设计与实现~ 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBootMyBatis工具&#xff1a;IDEA/Ecilpse、Navicat、Maven角色&#xff1a;管理员、员工、用户 系统展示 管理员界面 员工界面 用户界面 摘要 基于Sp…

【鸿蒙软件开发】ArkTS基础组件之Gauge(环形图表)、LoadingProgress(动态加载)

文章目录 前言一、Gauge环形图表1.1 子组件1.2 接口参数介绍 1.2 属性1.3 示例代码二、LoadingProgress2.1 子组件2.2 接口2.3 属性2.4 示例代码 总结 前言 Gauge&#xff1a;数据量规图表组件&#xff0c;用于将数据展示为环形图表。 LoadingProgress&#xff1a;用于显示加载…

【STM32】标准库的引入

一、为什么要会有标志外设库 1、传统单片机软件开发方式 (1)芯片厂商提供数据手册、示例代码、开发环境 (2)单片机软件工程师面向产品功能&#xff0c;查阅数据手册&#xff0c;参考官方示例代码进行开发 (3)硬件操作的方式是用C语言对寄存器进行读写以操作硬件 (4)主要工作量…

揭秘提升远程团队协作效率的秘密武器:这款在线白板工具不容错过!

说到出色的远程团队协作工具&#xff0c;任何已经完善了远程/混合工作模式的公司都使用了大量的在线协作软件。TrustRadius进行的一项调查显示&#xff0c;三分之二的企业正在投资于网络会议软件。 对于任务跟踪、协作工作或员工互动&#xff0c;市场上有许多工具可供选择。不…

2023年【电工(技师)】证考试及电工(技师)模拟考试题库

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 电工&#xff08;技师&#xff09;证考试根据新电工&#xff08;技师&#xff09;考试大纲要求&#xff0c;安全生产模拟考试一点通将电工&#xff08;技师&#xff09;模拟考试试题进行汇编&#xff0c;组成一套电工…

Redis数据类型——set类型数据交并差操作

1.业务场景 2.求两个set集合中交并补的操作

电流源,恒流源,直流电子负载

四个并联比一个电阻噪声小 ADI方案

HuggingFace 国内下载 阿里云盘下载速度20MB/s

文章目录 效果展示思路阿里云盘API工具 aligo安装aligoaligo教程实战 保存模型到阿里云盘海外服务器下载模型装包aligo的上传代码 国内下载其他方式 效果展示 Huggingface被屏蔽了&#xff0c;根本下载不了。 阿里云盘下载速度最高可达20MB/s&#xff0c;平均17MB/s左右。【注…