如何为软件工程优化ChatGPT和其他大模型

译文 精选
人工智能
本文解读了一份最新研究成果,提供了一些有关软件工程师如何在软件工程中使用ChatGPT的任务类型、以及影响其使用体验等方面的重要因素与推断。

译者 | 陈峻

审校 | 重楼

自ChatGPT发布以来,上至企业、下到软件工程师都在致力于寻找如何通过使用大语言模型(LLM),来提高工作效率的方法。虽然大多数LLM都能够为复杂的问题生成代码示例,但是具体如何将其集成到软件开发环境的过程,却各有不同。

在最近的一项研究中,来自查尔姆斯理工大学(Chalmers University of Technology)、哥德堡大学(University of Gothenburg)和瑞典RISE研究所的研究团队,对10家不同公司的24名专业软件工程师进行了为期一周的跟踪调查。这些工程师在日常工作中都会使用到ChatGPT。他们的研究结果提供了一些有关软件工程师如何在软件工程中使用ChatGPT的任务类型、以及影响其使用体验等方面的重要因素与推断。总的说来,这些发现对于那些希望将LLM纳入日常工作流程的企业来说,具有非常重要的意义。

ChatGPT的软件工程任务

这项研究包括了对ChatGPT 3.5各个聊天会话的调查。由结果可知,软件工程师主要会在如下三类任务中使用LLM:

  • 代码生成和修改:该类别也被研究人员称为“工件操控(Artifact Manipulation)”,其中包括了:生成、重构和修复代码等任务。在与ChatGPT的交互中,工件操控约占三分之一。此类交互通常较短,毕竟用户要么很快地收到了预期结果,要么会直接放弃尝试。然而,当用户持续尝试让ChatGPT提供源代码,或纠正其生成的方案中的错误时,双方就会出现较长的对话。
  • 专家咨询:工程师经常会向ChatGPT寻求资源、指导、建议或详细信息,以协助其完成工作任务。此类互动的目的不是为了获得具体的解决方案,而是旨在获得正确方向的提示。因此,在这些互动中,ChatGPT充当了一个虚拟同事的角色,或是比搜索互联网更为有效的替代方式。而在参与研究的软件工程师的互动中,此类咨询的占比为62%。
  • 指导和学习:软件工程师有时会使用ChatGPT获取与其工作任务相关的、更广泛的理论或实践知识。虽然此类对话只占整体互动的一小部分,但是会经常涉及到多个后续跟进的询问,以理清之前的答案。

优缺点

ChatGPT的最大优势在于能够帮助软件工程师学习到新的概念,毕竟与LLM交流所获得的专业知识,要比在互联网上搜索资源容易得多。

这项研究的参与者还使用了ChatGPT,来协助他们进行“头脑风暴式”会话。也就是说,在软件的开发、规划和设计阶段,LLM可以协助生成多种可供选择、且非常有价值的方案与想法。

在另一方面,一些参与者表示他们并不信任AI生成式工具,尤其是在处理公司特定的复杂任务时。这种不信任往往会导致他们对于ChatGPT所提供的任何建议,都要进行彻底的反复检查,进而使得结果可能适得其反。

另一个重要的问题是缺乏背景。由于LLM并不了解公司的具体信息,因此使用者需要为之提供相关的背景知识。否则,LLM在根据提示编译和提供上下文时,会增加“摩擦”,进而影响用户的使用体验。当然,在某些情况下,出于隐私考虑和公司政策,工程师确实无法共享详细的信息,这就可能会导致交互的不完整,甚至引发挫败感。

使用ChatGPT的第三个重要缺点在于减少了团队的交流和专注度。这往往在其他研究中较少被提及。参与者有时会直接使用聊天机器人,来回答各种问题。而这些问题其实本应由他们的同事来回答,才更为妥当且全面。同时,ChatGPT可能会降低使用者的专注度,毕竟软件工程师可能会花费更多的时间去调整提示,以生成完美的代码,而不愿自行修复略有缺陷的输出。

这对企业意味着什么?

作为一名软件工程师,您是否应该在日常的软件工程中利用LLM,来提高自己的工作效率,则完全取决于是否能够充分放大其优势并最小化其缺点。上述研究是在ChatGPT 3.5上进行的,而目前ChatGPT 3.5的性能已与GPT-4o和Claude 3 Opus等前沿模型的水平相差甚远。当前的模型拥有更广泛的知识,并在防止幻觉和虚假信息方面也更胜一筹。

不过,在企业应用方面,一些涉及到上下文的特定问题,即使用到最前沿的模型也无法很好地解决。例如,无论模型接受了多少训练,它总会对公司内部的专有信息不甚了解。因此,在工程师与模型进行交互时,如果聊天界面能够自动向模型提供上下文信息,则将会对用户体验的提升起到关键性作用。目前,业界已有几种方法可以做到这一点,其中包括:检索增强生成(RAG),即上下文信息在发送到模型之前,会被自动添加到用户的提示中。另外,LLM还可以被集成到用户的IDE(集成开发环境)中,在回答问题的同时,自动使用代码和项目文件作为上下文。

另一个有待解决的问题是:隐私和数据共享限制。许多公司对于可与第三方共享的信息种类有着严格的规定。这可能会限制工程师与ChatGPT等LLM的互动。目前,一种变通的办法是使用诸如Llama 3之类的开放模型。与私有模型相比,此类开源社区已经取得了令人瞩目的进展。同时,您也可以在自己的服务器上运行它们,并将其集成到自己的基础架构中,以便确保数据永远不会离开您的组织。

此外,上述研究也提出了一点:工程师在提示模型时所投入的精力。鉴于使用者提出请求和下达指令的方式,对于LLM性能的影响较大,因此减少提示工程的摩擦,会有助于改善用户体验,节省工程师与LLM交互的时间。目前,Anthropic的“提示生成器(Prompt Generator”和DeepMind开发的自动优化提示技术--OPRO,都在此方面表现卓越。

最后,该研究还提到了通过将LLM整合到团队工作中,可以在一定程度上缓解由于使用ChatGPT所导致的讨论分散和聚焦不集中等问题。例如,作为一款新的企业级聊天应用,Glue能够将LLM作为代理添加到各种讨论线程中,从而让孤立的LLM体验,升级为将AI代理植入群组对话中的效果。

毫无疑问,LLM将成为软件工程的重要组成工具,而并非简单的替代品。为了最大限度地利用好这个“脚手架”,我们需要让它扬长避短,充分发挥其在互动与生产式方面的优势。

译者介绍

陈峻(Julian Chen),51CTO社区编辑,具有十多年的IT项目实施经验,善于对内外部资源与风险实施管控,专注传播网络与信息安全知识与经验。

原文标题:How to optimize ChatGPT and other LLMs for software engineering,作者:Ben Dickson


责任编辑:华轩 来源: 51CTO
相关推荐

2024-11-14 10:48:37

大模型LLM智能

2023-08-18 08:00:00

游戏开发3D模型

2022-01-16 07:12:30

软件工程师吵架开发

2011-05-10 09:22:28

软件工程

2023-04-27 13:46:08

语言模型ChatGPT人工智能

2011-09-07 08:59:23

2014-11-03 11:02:27

软件工程程序员

2011-10-08 10:43:06

软件工程

2011-10-10 10:10:14

2011-09-08 10:26:49

2024-04-07 14:28:48

边缘计算LLM人工智能

2009-02-26 10:49:29

软件工程师职业生涯职业规划

2021-07-06 10:03:05

软件开发 技术

2016-03-21 13:20:45

中国网

2020-06-05 12:01:11

软件工程C++Python

2023-09-06 12:11:21

ChatGPT语言模型

2023-06-05 10:07:13

软件工程平台工程师

2010-06-18 14:06:17

UML软件工程

2017-03-20 11:40:28

Google软件工程经验

2011-12-01 09:20:41

软件工程
点赞
收藏

51CTO技术栈公众号