与LLMs进行在IDE中直接、无需提示的交互是工具构建者探索的一个有希望的未来方向

news2024/9/20 14:37:17

这个观点在卡内基梅隆大学与谷歌研究人员合作文章

《Using an LLM to Help With Code Understanding》

中提出。

论文地址:https://dl.acm.org/doi/abs/10.1145/3597503.3639187

摘要

理解代码非常具有挑战性,尤其是在新且复杂的开发环境中。代码注释和文档可以帮助,但通常资源不足或难以导航。大型语言模型(LLMs)正在彻底改变编写代码的过程。它们是否能同样助力于理解代码?

本研究提供了LLM为基础的对话型用户界面的首次研究,该界面直接嵌入IDE(集成开发环境)中,旨在促进代码的理解。

我们的IDE插件使用OpenAI的GPT-3.5-turbo模型查询四项高级请求,用户无需编写明确的提示即可完成这些请求:解释高亮代码段、提供代码中使用的API详情、解释特定领域的术语以及提供API的使用示例。

该插件还支持开放式提示,这些提示会自动根据正在编辑的程序对LLM进行上下文化。

我们将这个系统在32位参与者中进行用户研究评价,结果显示使用我们的插件可以比网页搜索更加促进任务的完成。

我们还详细分析了开发人员如何使用我们的系统,以及他们认为系统有用的方式。其中发现,学生和专业人员使用系统及从中获得的利益有所不同。

我们总结指出,与大型语言模型进行在IDE中直接、无需提示的交互是工具构建者探索的一个有希望的未来方向。

介绍

构建和维护软件系统需要对代码库有深刻的理解。因此,开发人员要花费大量的时间来搜索和搜集他们所需的信息,并组织和消化他们找到的所需要的信息。

理解代码是一项艰巨的任务,开发人员需要吸收大量的有关代码语义、使用的API细微之处以及相关领域的专业知识的信息。

这些信息通常散落在多个来源中,对于开发者,尤其是初学者或那些与不熟悉的API协同工作的开发者来说,要找到需要的信息会变得非常困难。此外,大部分相关的信息大多未得到充分的文档化,或者散布在不同的格式和介质中,最终导致信息过时。

随着大型语言模型(LLM)驱动的代码生成工具的兴起,对代码理解的信息支持的需求显然也在增加。

这些工具能够自动生成代码,即使是那些编程技巧有限或者对特定领域知识了解不多的开发者也能获得有效的结果。然而,这种便利性往往伴随着代价——开发者可能会得到完全不懂的代码。

的确,对LLM代码生成工具的早期研究发现,开发人员在调试由LLM生成的代码时会遇到困难,并且很容易感到沮丧。

幸运的是,LLMs(大型语言模型)在这个领域也提供了一个机会,即通过提供面向开发者的即需即用的基于代码生成的信息支持,帮助他们处理遇到的不熟悉代码问题。

与一般的网络搜索查询相比,LLM(大型语言模型)提示可以让开发者提供更多的上下文信息。这实际上能够使他们获取到更加精确地符合自己具体需求的信息。相较于从网络上获取大量信息然后再筛选出符合特定需求的内容,使用LLM提示在时间投入上可能更加节省。

开发人员确实开始大规模使用像ChatGPT这样的基于网络的会话LLM工具来获取编程支持,但这种设置需要他们在切换上下文时再将相关上下文从集成开发环境中复制到聊天系统中以获得支持。

为了探究生成式信息支持直接在开发者的编程环境中的应用潜力,我们开发了一个名为GILT(Generation-based Information-support with LLM Technology)的原型工具。

GILT能够生成个性化的、即时的信息,并将其与用户的本地编码环境相结合。我们通过在提供给后台语言模型(LLM)的提示中融入这些信息,将这种方法与LLM的交互变得更为自然。这种方式还引入了一种全新的交互方式,无需提供提示。这一设计旨在减轻那些对特定领域或编程知识了解有限的开发人员在编写提示时所承受的认知负担。

鉴于利用大型语言模型(LLM)提供信息支持(而非仅代码生成)的最佳实践知识尚不充分,我们进行了一项探索性用户研究,共有32名参与者被分配任务:理解并扩展涉及新领域概念以及Python数据可视化和3D渲染API的陌生代码这段充满挑战性的任务。我们的研究通过比较在一个代码编辑器内部使用带有LLM助手的效果,在网络浏览器中直接搜索网页的效果,以及在两者之间测量任务完成率和代码理解程度来进行量化对比。此外,我们通过定性研究参与者如何使用这两个工具,以及他们对这一新型交互模式的总体满意度来深入探讨。

具体来说,我们回答了以下三个研究问题:

  1. GILT在面对陌生代码时,对开发者理解程度、任务完成时间以及任务完成率的影响有多大?
  2. 开发人员如何与GILT进行互动,不同参与者之间有何差异?
  3. 开发人员如何看待GILT的有用性?

我们的结果证实,在使用GILT(Generation-based Information-support with LLM Technology)来完成任务时,相较于进行网页搜索,我们确实取得了统计意义上显著的优势,显示了这种资讯支援的实用性。然而,我们并未在时间效率及理解深度上发现同样的提升,这为我们未来改进留下了空间。我们还发现,这种效益的幅度在学生和专业人士之间有所差异,并对此进行了探讨。

结论

我们进行了一项用户研究,旨在调查使用大型语言模型(LLMs)进行生成式信息支持以帮助开发者理解代码的有效性。借助我们的内嵌IDE原型工具GILT,我们展示了这种方法显著增强了开发者完成任务的能力,与传统的基于搜索的信息获取相比。同时,我们也发现在学生和专业人士之间,开发者可以从工具中获得的好处程度不同,他们与工具的交互方式也基于自己的学习风格和对其他AI工具的熟悉度不同。

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

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

相关文章

教程中对DTC(Data Transfer Object)的叙述有可改进之处

图 不 好,看 不 懂; 找 原 文,弄 清 楚。 翻 译 错,图 也 错; 改 几 字,加 一 图。 新 教 程,新 学 习; 新 体 验,从 未 有。

苹果(ios)私钥证书和profile文件申请教程

苹果(ios)私钥证书,可以理解为p12后缀的苹果证书,我们在苹果开发者中心可以生成cer格式的证书,然后使用mac电脑或者第三方转换成p12后缀格式的私钥证书。 证书profile文件,又叫描述文件,这个文…

无人机的电压和放电速率,你知道吗?

一、无人机电压 无人机电瓶多采用锂电池,其电压范围在3.7伏至44.4伏之间,具体取决于电池的单体电压和串联的电池节数。 单体电压:锂电池的单体电压通常为3.7V,但在满电状态下可能达到4.2V。 串联电池节数:无人机电瓶…

xxl-job定时任务同步点赞数据 + 内网穿透

1.xxl-job基本介绍 1.官方文档 https://www.xuxueli.com/xxl-job/ 2.gitee https://gitee.com/xuxueli0323/xxl-job 2.本地集成xxl-job 1.下载源码包 https://gitee.com/xuxueli0323/xxl-job/tree/6effc8b98f0fd5b5af3a7b6a8995bdcf30de69fc/ 2.导入到项目中 1.作为模…

【待修改】使用GraphRAG+LangChain+Ollama(LLaMa 3.1)知识图谱与向量数据库集成(Neo4j)

如何使用 LLama 3.1(一个本地运行的模型)来执行GraphRAG操作,总共就50号代码。 首先,什么是GraphRAG?GraphRAG是一种通过考虑实体和文档之间的关系来执行检索增强生成的方式,关键概念是节点和关系。 ▲ 知识图谱与向量数据库集成 知识图谱与向量数据库集成是GraphRAG 架…

121 买卖股票的最佳时机

解题思路: \qquad 这个题如果把每一种买卖的可能都算出来的解法时间复杂度在 O ( n 2 ) O(n^2) O(n2),提交后会超时,所以需要在此基础上进行优化,能否通过一次遍历找出最大利润。 \qquad 对于当前点i,卖出股票所能得…

子域名下部署Java项目到docker中

场景:子域名需要部署Java项目,用于分公司的项目,可支持自定义功能。 拷贝总公司的后台代码 新增数据库并且修改配置环境的数据库连接 启动项目没问题后进行打包 目前我的是打成 jar包 服务器上创建文件,并且创建 dockerfile 文…

springboot整合activity7(一)

一、Spring Boot 集成 Activiti7&#xff08;工作流&#xff09; 此章节首先完成后端的activiti整合&#xff0c;生成工作流所需数据库表&#xff0c;数据库采用mysql。 二、依赖 <dependencies><!-- 引入Activiti7 --><dependency><groupId>org.ac…

080:vue+mapbox中interpolate 的详细解释

在Mapbox GL JS中,你可以使用样式表达式来实现数据驱动的样式,其中interpolate表达式是用于创建平滑过渡的一种方式。当你需要根据某个属性的值来动态地设置样式时,比如颜色、宽度或其他样式属性,interpolate表达式就非常有用。 文章目录 示例效果配置方式示例源代码(共14…

Manim的一个用于数学动画的 Python 库中渲染代码的功能。

Code 函数是 Manim&#xff08;一个强大的数学动画库&#xff09;中的一个重要工具&#xff0c;旨在将代码片段以视觉化的方式呈现。在教育和演示场合中&#xff0c;向观众展示算法或代码逻辑时&#xff0c;清晰的视觉效果是必不可少的。通过 Code 函数&#xff0c;用户可以轻松…

KOLA: CAREFULLY BENCHMARKING WORLD KNOWLEDGE OF LARGE LANGUAGE MODELS

文章目录 题目摘要简介KOLA 基准实验评估结论和未来工作道德声明 题目 KOLA&#xff1a;仔细对大型语言模型的世界知识进行基准测试 论文地址:https://arxiv.org/abs/2306.09296 项目地址:https://github.com/ranahaani/GNews 摘要 大型语言模型 (LLM) 的卓越性能要求评估方法…

【种草官招募令】

&#x1f31f; 你是时尚达人吗&#xff1f; 对潮流服饰有着独到的见解&#xff1f; 想通过分享赢得关注&#xff0c;还能赚取丰厚报酬&#xff1f; 来加入我们的电商种草官行列吧&#xff01; &#x1f457; 我们致力于发现和培养更多热爱时尚、善于种草的你&#xff0c;将…

Imagination CPU系列研讨会|RISC-V平台的性能分析和调试

为了让开发者及工程师深入了解 Imagination 的 CPU 产品及相关解决方案&#xff0c;Imagination 将陆续推出 5 期线上研讨会&#xff0c;包含 RISC-V 平台的性能分析和调试&#xff1b;RISC-V 安全和全球平台可信执行环境&#xff08;TEE&#xff09;&#xff1b;RISC-V 软件生…

人工智能缺陷检测方案METIS(梅迪斯):汽车零部件检测

#汽车零部件#机器视觉检测&#xff0c;作为当今科技领域的热门话题&#xff0c;正日益受到世人的瞩目。随着机器视觉系统的不断开发与优化&#xff0c;那些繁重而复杂的人工检测工作&#xff0c;已经逐渐被机器视觉检测所替代。今天&#xff0c;我们就来深入探讨一下&#xff0…

作业08.13

一、TCP机械臂测试 通过w(红色臂角度增大)s&#xff08;红色臂角度减小&#xff09;d&#xff08;蓝色臂角度增大&#xff09;a&#xff08;蓝色臂角度减小&#xff09;按键控制机械臂 注意&#xff1a;关闭计算机的杀毒软件&#xff0c;电脑管家&#xff0c;防火墙 1&#x…

构建实时数据仓库:流式处理与实时计算技术解析

目录 一、流式处理 请求与响应 批处理 二、实时计算 三、Lambda架构 Lambda架构的缺点 四、Kappa架构 五、实时数据仓库解决方案 近年来随着业务领域的不断拓展&#xff0c;尤其像互联网、无线终端APP等行业应用的激增&#xff0c;产生的数据量呈指数级增长&#xff0c;对海量数…

C++系列-继承中的对象模型

继承中的对象模型 通过查看子类的内存大小通过Developer Command Prompt查看结构 山中问答 李白 〔唐代〕 问余何意栖碧山&#xff0c;笑而不答心自闲。 桃花流水窅然去&#xff0c;别有天地非人间。 无论哪种继承方式&#xff0c;父类中的private成员在子类中均不可以访问。pu…

Polars简明基础教程十二:可视化(二)

设置绘图后端 我们可以使用 hv.extension 更改绘图后端。但是&#xff0c;我们不在此处运行此单元格&#xff0c;因为它会导致下面的 Matplotlib/Seaborn 图表无法渲染。 注释&#xff1a; hvPlot 利用 HoloViews 库来构建图表&#xff0c;并且可以使用多个后端进行渲染&…

农业物联网6公里WiFi远距离传输模块,信号传输不再受限,抗干扰、连接快

在数字化时代&#xff0c;WiFi已成为我们生活中不可或缺的一部分。然而&#xff0c;你是否曾遇到过这样的困扰&#xff1a;在户外或大型场所&#xff0c;WiFi信号总是那么微弱&#xff0c;甚至完全无法连接。这时候&#xff0c;一种能够实现6公里远距离WiFi传输的神秘模块便应运…

go-zero中间件的使用

一、自定义中间件 1、在api中在服务中定义一个中间件,名字随便取 type PostDemoReq {Name string json:"name" validate:"required" // 姓名Age int64 json:"age" validate:"required,gte1,lte130" // 年龄// optional 表示可选,omi…