GitHub Copilot 实践指南

f215e96b4141407f9a16e39cd3e3b5c9.gif

【编者按】GitHub Copilot是一款功能性AI 助手。本文为开发者了解实用策略来充分利用 GitHub Copilot,提供了在编辑器中生成相关的实用的代码建议。本文作者Kedasha Kerr是一名软件开发人员、技术内容创建者和分享者,目前在GitHub担任开发者倡导,喜欢与开发者分享经验,一起学习、创建和构建,尤其喜欢创建视频内容,曾在Tiktok、Instagram、Linkedin、 Twitter上分享技术干货。

原文链接:https://github.blog/2024-03-25-how-to-use-github-copilot-in-your-ide-tips-tricks-and-best-practices

作者 | Kedasha Kerr

责编 | 王轶群

出品丨AI 科技大本营(ID:rgznai100)

如今,人工智能已成为我工作流程中不可或缺的一部分,在GitHub Copilot 的帮助下,我在构建项目时的速度加快了很多。在过去的一年里,我使用人工智能工具来提高我的工作效率,我意识到,与学习如何使用新框架或库类似,我们可以通过学习如何更好地使用人工智能工具来提高效率。

在这篇博文中,我将分享我为充分利用GitHub Copilot所做的一些日常工作。我希望这些技巧能够帮助你成为人工智能助手更高效、更有生产力的用户。

3a1a13fb55f9f46ed11daa25a7dfb578.png超越代码完成

要充分利用GitHub Copilot 的强大功能,了解其功能非常重要。GitHub Copilot正在快速发展,并且不断添加新功能。它不再只是编辑器中的代码完成工具,它现在包括可以在IDE中使用的聊天界面、通过GitHub CLI 扩展的命令行工具、拉取请求中的摘要工具、终端中的帮助工具,还有很多很多。

在最近的一篇博文中,我列出了一些你不知道的使用 GitHub Copilot 的方法。这将使你对人工智能助手当前可以做的事情有一个很好的概述。

但除了与 GitHub Copilot 交互之外,你如何帮助它为你提供更好的答案?嗯,这个问题的答案需要更多背景信息。

055760e636c37bee290425dd1ac5647d.png上下文,上下文,还是上下文

如果你了解大型语言模型 (LLM),你就会知道它们旨在根据提供的上下文进行预测。这意味着,我们的输入或提示的上下文越丰富,预测或输出的结果就越好。

因此,在与GitHub Copilot交互时,尤其是使用代码完成功能时,学习提供尽可能多的上下文是关键。与 ChatGPT 不同,你需要在提示窗口中向模型提供所有数据,通过在编辑器中安装 GitHub Copilot,助手能够从你正在处理的代码中推断上下文。然后,它使用这个上下文来提供代码建议。

我们已经知道这一点,但是我们还能做些什么来为其提供更多背景信息呢?

我想与你分享一些基本技巧,以便在编辑器中为GitHub Copilot提供更多上下文,从而从中获取最相关和最有用的代码:

1.打开你的相关文件

打开文件可以为 GitHub Copilot 提供上下文。当你打开其他文件时,通知返回的建议将有所帮助。请记住,如果文件已关闭,GitHub Copilot 将无法在编辑器中看到该文件的内容,这意味着它无法从这些已关闭的文件中获取上下文。

GitHub Copilot 查看编辑器中当前打开的文件以分析上下文,创建发送到服务器的提示,并返回适当的建议。

在编辑器中打开一些文件,以便 GitHub Copilot 对你的项目有更全面的了解。你还可以#editor在聊天界面中使用,为 GitHub Copilot 提供有关当前在 Visual Studio Code (VS Code) 和 Visual Studio 中打开的文件的附加上下文。

请记住在上下文切换或继续下一个任务时关闭不需要的文件。

2. 提供顶级评论

正如你向同事进行简短、高级的介绍一样,你正在处理的文件中的顶级注释可以帮助 GitHub Copilot 了解你将要创建的片段的整体上下文,特别是如果你希望人工智能助手生成样板代码供你开始使用。

请务必包含有关你需要的详细信息并提供良好的描述,以便包含尽可能多的信息。这将有助于指导 GitHub Copilot 提供更好的建议,并为其设定工作目标。提供示例,特别是在处理数据或操作字符串时,会有很大帮助。

386b9ecd135de2f10be20fa47e8f2aa1.png

3. 设置包含和参考

最好手动设置工作所需的包含/导入或模块引用,特别是在使用特定版本的包时。

GitHub Copilot 会提出建议,但你知道要使用哪些依赖项。这还有助于让 GitHub Copilot 了解你希望在制定建议时使用哪些框架、库及其版本。

当 GitHub Copilot 默认提供较旧的代码建议时,这有助于将 GitHub Copilot 跳转到较新的库版本。

4.有意义的名字很重要

变量和函数的名称很重要。如果你有一个名为foo或bar,GitHub Copilot 将无法为你提供最佳交付,因为它无法从名称推断意图。

正如函数名称fetchData()对其合作者(或几个月后的你)没有多大意义一样,fetchData()对 GitHub Copilot 也没有多大意义。

良好的编码实践将帮助你从 GitHub Copilot 获得最大价值。虽然 GitHub Copilot 可以帮助你更快地编码和迭代,但请记住旧的编程规则仍然适用:垃圾输入,垃圾输出。

ee9e6829be46efced31819554288f808.png

5. 提供具体且范围明确的功能注释

对代码进行注释可以帮助你获得非常具体、有针对性的建议。

函数名称只能具有描述性,但不能太长,因此函数注释可以帮助填写 GitHub Copilot 可能需要了解的详细信息。GitHub Copilot 的一项巧妙功能是,它可以确定你的编程语言中通常用于函数/方法注释的正确注释语法,并根据代码的用途帮助你创建它们。作为你所做的第一个更改,向这些内容添加更多详细信息可以帮助 GitHub Copilot 确定你想要在代码中执行的操作以及如何与该函数交互。

请记住:单个、具体、简短的注释有助于GitHub Copilot 提供更好的上下文。

6.提供示例代码

向 GitHub Copilot 提供示例代码将帮助其确定你要查找的内容。这有助于为模型奠定基础并为其提供更多背景信息。

它还可以帮助 GitHub Copilot 生成与你想要实现的语言和任务相匹配的建议,并根据你当前的编码标准和实践返回建议。单元测试在单个函数/方法级别提供一级示例代码,但你也可以在项目中提供代码示例,展示如何端到端地执行操作。长期使用 GitHub Copilot 的一个很酷的事情是,它促使我们做很多我们应该一直做的良好编码实践。

87acbef40e2f1e88449c7f9b762a1f6f.png与 GitHub Copilot 内嵌聊天

7.内嵌聊天

除了提供足够的上下文之外,GitHub Copilot 还有一些你可能没有利用的内置功能。例如,内嵌聊天让你有机会在代码行之间几乎与 GitHub Copilot 聊天。通过按 CMD + I(Windows 上为 CTRL + I),你将有 Copilot 来提问。这对于快速修复来说更方便,而不是打开 GitHub Copilot Chat 的侧面板。

这种体验为你提供了内联代码差异,这非常棒。还有特殊的斜杠命令可用,例如仅使用按钮的斜杠即可创建文档!

f343823b1c7431242da81faf62a27fa8.png

(VS Code 编辑器中的内联聊天,焦点为 /doc 命令)

a81037ba900b8d44a7a5cd2be9578a32.pngGitHub Copilot Chat 的提示和技巧

GitHub Copilot Chat 在编辑器中提供了一种体验,你可以在其中与 AI 助手进行对话。你可以通过使用内置功能来充分利用它来改善这种体验。

8.删除不相关的请求

例如,你是否知道可以删除聊天界面中之前提出的问题,以将其从索引对话中删除,尤其是当它不再相关时。

32345d233aaf3c92d3f6d98e083b80ea.png

(单击副驾驶聊天界面,将鼠标悬停在对话上,然后按 X 按钮将其删除)

这样做将改善对话流程,仅向GitHub Copilot提供为你提供最佳输出所需的必要信息。

9. 浏览对话

我发现的另一个技巧是使用向上和向下箭头浏览与 GitHub Copilot Chat 的对话。我发现自己滚动聊天界面,找到我问的最后一个问题,然后发现我可以像在终端中一样使用键盘箭头!

10.使用@workspace agent

如果你使用 VS Code 或 Visual Studio,请记住agent可以帮助你走得更远。例如,agent了解你的整个工作空间并可以回答与其相关的问题@workspace。因此,当尝试从 GitHub Copilot 获得良好的输出时,它可以提供更多上下文。

11.突出显示相关代码

使用 GitHub Copilot Chat 时的另一个重要技巧是在提问之前突出显示文件中的相关代码。这将有助于提供有针对性的建议,并为助理提供更多有关你需要帮助的信息。

12.用话题组织你的对话

通过使用线程隔离对话,你可以就不同主题与 GitHub Copilot Chat 进行多个持续对话。我们为你提供了一种通过单击聊天界面上的+号来开始新对话(线程)的便捷方法。

e82e3019dcc59a45d9351437f07f5a4c.png

(在Copilot聊天界面用鼠标点击加号按钮,即可开始新线程或对话)

13. 常见任务的斜杠命令

斜杠命令很棒,而且数量相当多。我们提供命令来帮助你解释代码、修复代码、创建新笔记本、编写测试等等。它们只是常见提示的快捷方式,我们发现这些提示在我们自己的内部使用中对日常开发特别有帮助。

命令

描述

用法

/explain

获取代码说明

打开包含代码的文件或突出显示你想要解释的代码并键入:/explain what is the fetchPrediction method?

/fix

收到针对所选代码中的问题的建议修复方案

突出显示有问题的代码并键入:/fix propose a fix for the problems in fetchAirports route

/tests

为选定的代码生成单元测试

打开包含代码的文件或突出显示要测试的代码并键入:/tests

/help

获取有关使用 Copilot Chat 的帮助

类型:/help what can you do?

/clear

清除当前对话

类型:/clear

/doc

添加文档注释

突出显示代码并输入:

/doc

你还可以在编辑器中按 CMD+I 并输入/doc/inline

/generate

生成代码来回答你的问题

类型:/generate code that validates a phone number

/optimize

分析并改进所选代码的运行时间

突出显示代码并输入:/optimize fetchPrediction method

/clear

清除当前聊天记录

类型:/clear

/new

新工作区的脚手架代码

类型:/new create a new django app

/simplify

简化所选代码

突出显示代码并输入:/simplify

/feedback

向团队提供反馈

类型:/feedback

有关 VS Code 中可用的命令,请参阅下图:

943024dbbc06ea7edf64c0d8789a38b9.png

14.附上相关文件以供参考

在 Visual Studio 和 VS Code 中,你可以使用#file.这将 GitHub Copilot 限制在代码库中的特定上下文中,并为你提供更好的结果。

要引用文件,请在注释框中键入#,然后选择#file,你将看到一个弹出窗口,你可以在其中选择文件。你也可以在评论框中输入#file_name.py。请参阅下面的示例:

15. 从 GitHub Copilot Chat 开始以加快调试速度

这些天,每当我需要调试一些代码时,我都会首先转向 GitHub Copilot Chat。最近,我正在实现一个决策树并执行 k 折交叉验证。我不断得到不正确的准确度分数,但不明白为什么。我向 GitHub Copilot Chat 寻求帮助,结果发现我没有使用我的训练数据集(X_train、y_train),尽管我认为我是。

我比使用外部资源更快地解决了这个问题。我想鼓励你从编辑器中的 GitHub Copilot Chat 开始,以便更快地获得调试帮助,而不是首先访问外部资源。按照我上面的例子,解释问题,粘贴有问题的代码,并寻求帮助。你还可以在编辑器中突出显示有问题的代码,并/fix在聊天界面中使用该命令。

55416a87f9e43453d4e3241a28c58f44.png留意 sparkles!

在 VS Code 中,你可以通过查找“magic sparkles”来快速从 GitHub Copilot 获得帮助。例如,在提交评论部分,点击神奇的火花将帮助你在人工智能的帮助下生成提交消息。当你正在寻找一种快速访问 GitHub Copilot 内嵌聊天的方法时,你还可以在编辑器中发现内嵌的magic sparkles。

按下它们将使用 AI 来帮助你填写数据,并且正在添加更多神奇的火花,我们会在其他地方找到 GitHub Copilot 来帮助你的日常编码体验。

623a232779b4734b836b1257a7387e60.png了解你的 AI 助手的闪光点

为了充分利用该工具,请记住上下文和提示的制作至关重要。了解该工具最擅长的地方也很重要。GitHub Copilot 非常擅长的一些功能包括样板代码和脚手架、编写单元测试、编写文档、模式匹配、解释不常见或令人困惑的语法、定时任务和正则表达式,以及帮助你记住忘记的事情和调试。 

但永远不要忘记,一切都在你的掌控之中,而 GitHub Copilot 就是你的副驾驶。它是一个可以帮助你更快地编写代码的工具,并且由你决定如何最好地使用它。

它不是在这里为你做你的工作或为你写一切。它将引导你并推动你朝正确的方向前进,就像你向同事询问特定问题或寻求指导一样。

我希望这些提示和最佳实践有所帮助。通过正确利用 GitHub Copilot,你可以显著提高编码效率和输出。

5558a13d726a2dc1a425b612629a8b14.gif

4 月 25 ~ 26 日,由 CSDN 和高端 IT 咨询和教育平台 Boolan 联合主办的「全球机器学习技术大会」将在上海环球港凯悦酒店举行,特邀近 50 位技术领袖和行业应用专家,与 1000+ 来自电商、金融、汽车、智能制造、通信、工业互联网、医疗、教育等众多行业的精英参会听众,共同探讨人工智能领域的前沿发展和行业最佳实践。欢迎所有开发者朋友访问官网 http://ml-summit.org、点击「阅读原文」或扫码进一步了解详情。

8859d4566345d6df12fa0665c0f5598e.png

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值