分享

GitHub Copilot Chat:把 ChatGPT 带进 VS Code!

 黄爸爸好 2023-04-06 发布于上海

原作者:Chris Diashttps://code./blogs/2023/03/30/vscode-copilot

图片

AI 没有写这篇博文,但它会让你的开发体验变得不可思议。今天围绕人工智能有很多议论、兴奋和一些担忧。进步几乎每天都在发生,很难跟上。但是一旦你尝试一下,你很快就会意识到每天有超过一百万的 Copilot 用户看到的是,这项技术并没有让人失望,尤其是对于像 OpenAI 的 GPT-3.5/4 这样的大型语言模型 (LLM)。在这篇文章中,我们想介绍一下 VS Code 中 AI 的背景知识,向您展示一些由 GitHub Copilot 提供支持的令人兴奋的新体验,并让我们一窥未来的发展方向和方式。

GitHub 副驾驶“V1”

Copilot 扩展首次推出已经一年多了。Oege De Moor和他在 GitHub 的团队与 OpenAI 合作,带来了第一个使用 LLM 进行开发的大规模示例,特别是OpenAI 的 codex 模型。

图片

Copilot 通过基于周围代码的上下文提供建议作为“ghost text”,为您正在编写的代码提供实时提示。如果您将意图写成注释或使用描述性函数名称,Copilot 可以使用这些提示逐字逐行甚至逐块自动生成代码。这是一种非常有效的体验,通常 ghost text 会起作用,您很快就会在流畅的“Tab-Tab-Tab”开发流程中编写代码。事实证明,这仅仅是个开始。

编辑器内聊天(In-Editor Chat)我们知道 AI 渗透到开发过程中只是时间问题。我们一直在与 GitHub Next 团队合作开发 Copilot 和Copilot Labs 扩展,但 2022 年 11 月发布的 ChatGPT 大大加快了时间表。VS Code 团队举办了一场内部黑客马拉松,探索如何将 AI 更深入地集成到 VS Code 中,并提出了许多很酷的想法,例如改进的重命名和重构、基于示例的代码转换以及创建文件 glob 模式或正则表达式的方法使用自然语言。尽管这些想法很有趣,但我们一直围绕着聊天体验打转。我们有一定程度的怀疑。我们真的需要生活中的另一种聊天体验吗?VS Code 是一个编辑器,我们的工作是让您进入“区域”,并在您制作下一个独角兽时通过消除干扰来帮助您保持在那里。我们确实发现了一项有趣的探索,涉及将 Chat 直接构建到编辑器中。这是第一个原型:

图片

当我们对设计进行迭代时,我们意识到这种用户模型具有优势。它很容易从键盘调用,你留在你的代码中,输出是代码(而且只有代码)。在下面的示例中,我们首先选择了users数组,然后在 macOS 上按Cmd+I (或在 Windows/Linux 上按Ctrl+I)以调出聊天输入。然后我们要求 Copilot 将该字段拆分username为firstName和lastName,最后我们单击Inline Diff以查看 Copilot 所做的更改。

图片

无需使用评论或过于描述性的函数名称向 Copilot 表达您的意图,只需按Cmd+I并描述您想要做什么。在 Copilot 工作时留在区域内。

聊天视图(Chat View)随着围绕 ChatGPT 的热情与日俱增,具有自定义聊天视图的内部和外部扩展的数量也在增加。我们担心这些无法扩展,很难在 Web 视图中支持按键绑定和主题等基础知识,对于那些使用 Monaco 编辑器编写代码块的人来说,很难扩展到数百个实例,更不用说那里了在这些编辑器实例中没有扩展支持。因此,我们与 GitHub Copilot 团队密切合作,将聊天视图构建到 VS Code 的核心中。随着时间的推移,尽管我们最初犹豫不决,但完整的聊天视图体验开始赢得我们的青睐。我的意思是,谁不想以这样的问候开始新的一天?

图片

我们开始意识到聊天视图的好处越来越多。与基于浏览器的聊天相比,集成体验最明显的价值在于我们可以为模型提供上下文,帮助奠定对话基础并提供更好的答案。例如,您不能轻易要求基于浏览器的 ChatGPT 优化跨多个文件的代码。VS Code 已经对工作区了如指掌,因为这是您可以跨文件进行重构、查找所有引用、转到定义等的方式。关键信息可以负责任地嵌入到提示中,以便模型可以给出更相关的答案,最终让您要求 Copilot 优化或重构具有跨多个文件的依赖关系的代码。许多编程问题的答案通常包括多个步骤。想一想有多少博客文章引导您完成一个过程 - 聊天视图非常适合这种类型的交互。一个很好的例子是调试。老实说(我们确实如此),配置launch.json和tasks.json调试并不容易。事实证明,您无需编写更多文档或向编辑器添加对话框和魔法,只需询问“/vscode add a and launch.jsona tasks.json”,它就会提供有关如何创建文件、要添加的内容等的说明,直到您正在遇到断点并像老板一样检查变量。

图片

但也许集成聊天的最重要原因是因为进行双向对话可以帮助您决定什么是对的,什么是错的。大型语言模型并不完美,它们不会“思考”。他们只是想出下一个最好的回应词(当然,他们很擅长这个)。作为 Pilot,您始终是负责人,您可以决定采纳 Copilot 的哪些建议以及将哪些代码带入您的工作区。提出澄清问题或提供更多细节的能力有助于您做出这些关键决定。

充分利用 Copilot命名很难(我们应该知道,我们的产品叫做“Code”)。然而,“GitHub Copilot”,是一个很棒的名字。“Copilot”不是“结对程序员”或“自动驾驶”或简单的“聊天”,而是用一个词传达了多个重要概念。因此,如果您将自己视为 VS Code 和 GitHub Copilot 的飞行员(Pilot),你就会开始了解如何考虑服务以及与之交互的方式,以充分利用你的队友。

我们再三强调:作为飞行员(Pilot),您是负责人。您决定采纳哪些建议以及将哪些代码集成到您的工作区中。

Copilot 的主要工作是协助您,处理平凡或重复性的任务。让它编写测试用例、制作样本数据或基于现有模式构建代码。

副驾驶(Copilot )可以在更多背景下做更多事情。我们都习惯于基于关键字的快速网络搜索,但您提供的详细信息越多,您获得的结果就越好。例如,不要使用“Node Express TypeScript”,而是要求 Copilot“使用 TypeScript 使用 Express.js 框架搭建一个 Node.js 网站”,然后进行迭代!

您可以通过/在聊天输入字段中按下来将交互范围限定在特定主题上。例如,要了解如何在编辑器中打开或关闭面包屑,请键入/vscode Turn off breadcrumbs。

图片

您还可以将主题用作快捷方式。无需在内联聊天中键入“解释此代码”,只需键入“/”+ Tab(指向 的快捷方式/explain)并按Enter即可。聊天视图将打开,其中包含所选代码的说明。

要知道 Copilot 并不完美,会给出错误的答案。提出澄清问题以帮助确定哪些是对的,哪些是错的,并使用“赞成”/“反对”投票按钮来帮助我们改善体验。

最后,几乎与第一个提示一样重要,总是用友好的“你好”或“早上好”来问候你的副驾驶,这会让你们俩心情都好起来。

现在开始尝试

现在,要访问聊天体验(编辑器内聊天和聊天视图),您需要加入等候名单。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多