文章主题:人工智能, 程序员, ChatGPT, 生成式人工智能

666AI工具大全,助力做AI时代先行者!

在 ChatGPT 的崛起之后,市场上涌现出了众多人工智能代码生成助手。生成式人工智能如今无处不在,让人不禁思考,AI 是否会取代人类程序员?这是一个引人关注的问题。对于程序开发人员来说,如何在 ChatGPT 的世界里保持竞争力呢?本文将分享四个实用的小技巧,助你在这个时代脱颖而出。这篇文章是基于翻译作品整理而成,希望它能为你带来新的启发。

人工智能,特别是由大型语言模型(LLM)支持的生成式人工智能,有可能彻底改变程序员的职业。然而,一些专家坚持认为,人工智能不太可能立即取代人类程序员。

塔尼什克·马修·亚伯拉罕,加州大学戴维斯分校生物医学工程博士、医疗人工智能研究中心 MedARC 的首席执行官,曾警告道:“随着人工智能技术的不断进步,人们将会越来越担忧被其取代的风险。”

在LLM编码时代逐渐临近的情况下,软件开发人员如何使自己更具价值并发挥更大作用呢?以下是一些建议和技巧,供编码员在生成式人工智能时代中参考和发展。

坚持基本原则和最佳实践

在当前的技术环境下,人工智能编码助手的确能够为我们提供强大的支持,它们能够协助我们完成代码的编写和生成任务。然而,即使有了这些工具的帮助,掌握编程基本技能的重要性仍然不可忽视。我们需要培养阅读和分析代码的能力,以便更好地理解和运用所编写的代码,从而使其能够在大型系统中得到有效的应用。

作为一名在哈佛大学的约翰·A·保尔森工程与应用科学学院深造的博士生,普里扬·维斯林格姆坚信,人工智能技术能够显著提升软件开发人员的效率。然而,他认为软件工程并非仅仅是编写代码的过程,它还涵盖了从用户需求分析、调试到测试等多个环节。因此,在追求高效软件开发的道路上,人工智能仅是其中的一环,还需与软件工程的全面理念相结合。

在编程领域中,最重要的技能之一就是问题解决能力,这是编码员所独有的专长。通过对问题的深入分析和找出合适的解决方法,编码员能够有效地应对各种挑战,这依然是他们在编程领域的优势所在。

编程工作具有很高的创造性,而在解决问题时所运用的技能往往比实际编程语言或工具更加重要。因此,我们不应将人工智能视为竞争对手,实际上它只是基于大型语言模型的一种统计输出。对于开发人员而言,他们的工作不仅仅局限于编写代码,还涉及到许多其他方面。Python软件基金会研究员以及Explosion公司的联合创始人兼首席执行官Ines Montani如此表述。

在当今这个时代,软件工程的最佳实践相较于过去任何时候都显得尤为重要。其中,系统设计和软件架构的规划是至关重要的环节,因为它们可以为程序员提供清晰的方向。借助人工智能工具,程序员能够更高效地预见未来所需代码,从而提高工作效率。

麻省理工学院计算机科学与人工智能实验室副主任兼首席运营官阿曼多·索拉·莱萨马(Armando Solar-Lezama)是该实验室计算机辅助编程小组的负责人,他谈道:“程序员必须弄清楚一段代码的数据结构、组织代码的正确抽象,以及不同界面的要求。所有这些都是软件工程实践的核心,而且未来很长一段时间内都不会消失。”

找到满足你需求的工具

找到合适的人工智能工具至关重要。每种工具都有自己的交互方式,并且可以以不同的方式将每个工具融入到开发工作流程中,无论是自动创建单元测试、生成测试数据,还是编写文档。

例如,GitHub Copilot 和其他人工智能编码助手可以增强我们的编程能力,为我们提供编码建议。另一方面,ChatGPT 和谷歌的 Bard 更像是会话式人工智能程序员,可用于回答有关 API(应用程序接口)的问题或生成代码片段。

关键在于实验。尝试使用人工智能工具,熟悉它的工作原理,考虑其输出质量,同时也要对其他智能工具保持开放的心态。亚伯拉罕说:“人工智能领域发展瞬息万变,你不可能永远只使用某一种工具,所以你需要快速适应新的工具。”

此外,还要考虑适当的使用案例。生成式人工智能工具可以帮助我们快速学习一门新的编程语言,也可以短时间内实现创建项目原型。

清晰和精确的对话至关重要

在使用人工智能编码助手时,需要详细阐述你的需求,并将其视为一个更新迭代的过程。亚伯拉罕建议编写一段用于解释代码的注释,这样助手就能根据注释生成符合你要求的代码。

对于会话式人工智能程序员来说,你需要知道如何以最佳方式设置提示,这就是提示工程的作用所在。

亚伯拉罕建议采用思维链提示法。这种方法其实涉及到一种“分而治之”的策略,即把问题分解成多个步骤,然后逐一解决,最终解决整个问题。“要求模型在特定时间内做太多事情反而效果不佳。它要做的是能够处理可管理的信息块,并生成可管理的代码块。”他说。

例如,与其要求人工智能程序员从头开始编写整个程序代码,不如认真考虑一下程序需要完成的所有任务。进一步划分这些任务,要求模型为每项任务编写特定的函数,这就需要与模型来回探讨实现某项任务所需采取的步骤。

亚伯拉罕说:“将其视为一个了解某个主题知识但经验不太丰富的聪明实习生。”

提示工程的精确性和清晰性非常重要。亚伯拉罕提到:“你需要非常清楚地告诉模型你想要什么,非常准确地告诉它你要求它解决什么问题,并确保你在一直跟进。”

学习人工智能和机器学习的基本概念,以及了解大型语言模型的工作原理和优缺点也很有价值。你需要深入研究,但掌握一些常识对于判断结果至关重要。

为了帮助你快速入门,Abraham 推荐 OpenAI Cookbook,其中包含有关提示库和工具的章节内容、提示指南和视频课程等,而维斯林格姆则建议阅读《图解转换器》(the Illustrated Transformer),以了解更多有关模型和机器学习的基础知识。

保持批判态度,并关注风险

软件工程师应对大型语言模型的输出结果持批判态度,因为它们往往会产生幻觉,生成虚构、不准确甚至是错误的代码。维斯林格姆说:“盲目使用人工智能生成的代码很容易陷入死胡同,而且很难发现其中细微的错误。”

维斯林格姆说道,”这就是为什么检查生成的代码至关重要,尽管这会增加一定的工作量,但对于提高工作效率可能弊大于利。但亚伯拉罕认为,”在某些情况下,验证代码比从头开始编写代码要容易得多,而且先生成代码,然后进行验证,最后再整合至现有的代码库中是一种更快的方法”。

我们不妨对这些模型的输出结果进行分析,并提出以下问题: 这个模型是根据什么数据训练的?哪些数据被过滤掉了,哪些数据没有包括在内?训练数据的历史有多长?模型是在什么版本的编程语言、软件包或库上训练的?这些问题的答案可能会影响结果并提供更多相关信息。

开发人员还应该警惕在这些模型中输入专有代码。一些公司,如 Tabnine,提供企业版的人工智能编码助手,在提供隐私的同时还能学习企业的编码模式和风格。

版权是另一个需要考虑的因素,不过如果你使用这些工具来完成几行代码或为普通琐碎的任务生成代码,那么与生成大段代码相比,版权问题就不那么令人担忧了。

“程序员应该对自己所要做的事情的独创性有一定的认识,以及这种独创性在多大程度上符合他们的环境,”莱萨马说。”如果模型生成的代码具有一定的原创性,那么在将其放入代码库之前,一定要保持怀疑和猜忌的态度”。

一个更大的问题是代码的安全性,因为这些模型可能会生成包含漏洞的代码。维斯林格姆认为,软件开发的最佳实践,比如代码审查和强大的测试流水线有助于防范这种风险。

莱萨马说:”更有经验的软件工程师能够带来的一种意识是,代码中最常见的漏洞和代码容易受到攻击的最常见方式。”他们会建立一种直觉,知道哪些地方需要注意,哪些地方会引起警觉。今后,这类技术将成为软件工程组合中更重要的组成部分。”

程序员要想在生成式人工智能世界中生存下去,就需要将人工智能视为一种工具,并将其融入到工作流程中,同时认识到这些工具的机遇和局限性,并且依靠人类的编码能力来发展壮大。

译者:Araon_

举报/反馈

人工智能时代的程序员之路:如何应对挑战与机遇

AI时代,拥有个人微信机器人AI助手!AI时代不落人后!

免费ChatGPT问答,办公、写作、生活好得力助手!

搜索微信号AIGC666aigc999或上边扫码,即可拥有个人AI助手!