Skip to main content

关于 GitHub Copilot Chat

GitHub Copilot Chat 可直接受支持的 IDE 中提供编码相关问题的答案,从而为你提供帮助。

谁可以使用此功能?

订阅了 GitHub Copilot Individual 的所有用户都可以在 IDE 中访问 GitHub Copilot Chat。

订阅了 Copilot Business 的组织的所有者可以决定是否授予对 IDE 的访问权限。

关于 GitHub Copilot Chat

GitHub Copilot Chat 是一个聊天界面,可让你与 GitHub Copilot 进行交互,直接从 GitHub.com 和受支持的 IDE 中询问编码相关问题并接收答案。 聊天界面提供对编码信息和支持的访问,让你无需浏览文档或搜索在线论坛。 Copilot Chat 当前在 Visual Studio Code、Visual Studio 和 IDE(beta 版本)的 JetBrains 套件中受到支持。 具有 Copilot Enterprise 订阅的用户也可以使用 GitHub Copilot Chat in GitHub.com。 有关 GitHub Copilot 的详细信息,请参阅“关于 GitHub Copilot Individual”、“关于 GitHub Copilot Business”和“关于 GitHub Copilot Enterprise”。

GitHub Copilot Chat 可以回答与编码相关的各种主题问题,包括语法、编程概念、测试用例、调试等。 GitHub Copilot Chat 并非旨在回答非编码问题或提供有关编码之外主题的一般信息。

GitHub Copilot Chat 支持的主要语言是英语。

GitHub Copilot Chat 结合使用自然语言处理和机器学习来理解你的问题并为你提供答案。 此过程可以细分为多个步骤。

输入处理

用户的输入提示由 Copilot Chat 系统预处理,并发送到大型语言模型,以便根据上下文和提示获取响应。 用户输入可以采用代码片段或纯语言的形式。 系统仅用于响应与编码相关的问题。

语言模型分析

然后,预处理的提示通过 Copilot Chat 语言模型传递,该模型是一个神经网络,已基于大量文本数据进行了训练。 语言模型分析输入提示。

响应生成

语言模型根据其对输入提示和所提供上下文的分析生成响应。 此响应可以采用生成的代码、代码建议或现有代码说明的形式。

输出格式设置

Copilot Chat 生成的响应将格式化并呈现给用户。 Copilot Chat 可以使用语法突出显示、缩进和其他格式设置功能来增加生成的响应的清晰度。 根据用户问题的类型,还可以提供模型在生成响应时使用的上下文的链接,例如源代码文件或文档。

GitHub Copilot Chat 旨在为你提供与你的问题最相关的答案。 但是,它可能并不总是提供你要查找的答案。 Copilot Chat 的用户负责查看和验证系统生成的响应,以确保它们准确无误。 此外,作为我们产品开发流程的一部分,我们进行红队对抗以了解和提高 Copilot Chat 的安全性。 输入提示和输出完成通过内容筛选器运行。 内容筛选系统可检测并阻止输出特定类别的内容,包括有害的、攻击性的或偏离主题的内容。 有关提高 GitHub Copilot Chat 性能的详细信息,请参阅“提高 GitHub Copilot Chat 的性能”。

GitHub Copilot Chat 的用例

GitHub Copilot Chat 可以在各种场景中提供编码帮助。

生成单元测试用例

Copilot Chat 可以根据编辑器中打开的代码或编辑器中突出显示的代码片段生成代码片段,从而帮助编写单元测试用例。 这可以帮助你编写测试用例,让你无需在重复任务上花费太多时间。 例如,如果要为特定函数编写测试用例,则可以使用 Copilot Chat 根据函数的签名和正文建议可能的输入参数和预期输出值。 Copilot Chat 还可以根据代码的上下文和语义建议断言,以确保函数正常工作。

Copilot Chat 还可以帮助你为可能难以手动识别的边缘情况和边界条件编写测试用例。 例如,Copilot Chat 可以建议错误处理、null 值或意外输入类型的测试用例,从而帮助你确保代码可靠且可复原。 但是,请务必注意,生成的测试用例可能并不涵盖所有可能的场景,并且仍需要手动测试和代码评审来确保代码的质量。 有关生成单元测试用例的详细信息,请参阅“向 GitHub Copilot Chat 询问有关代码的问题”。

说明代码和建议改进

Copilot Chat 可以通过生成代码功能和用途的自然语言说明来帮助解释所选代码。 如果想要了解代码的行为,这非常有用,对于需要了解代码工作原理的非技术利益干系人也非常有用。 例如,如果你在代码编辑器中选择函数或代码块,Copilot Chat 可以生成代码功能以及代码如何适应整个系统的自然语言说明。 这可能包括函数的输入和输出参数、其依赖项及其在较大应用程序中的用途等信息。

Copilot Chat 还可以建议对所选代码的潜在改进,例如改进错误和边缘案例的处理,或者更改逻辑流以使代码更易于阅读。

通过生成说明和建议相关文档,Copilot Chat 可以帮助你了解所选代码,从而改进协作,提高软件开发效率。 但是,请务必注意,生成的说明和文档可能并不总是准确或完整的,因此你需要查看 Copilot Chat 的输出,有时甚至需要更正。

建议代码修复

Copilot Chat 可以通过根据错误或问题的上下文建议代码片段和解决方案来为代码中的 bug 建议修复。 如果你正在努力确定 bug 的根本原因,或者需要有关修复 bug 的最佳方法的指导,这非常有用。 例如,如果你的代码生成错误消息或警告,Copilot Chat 可以根据错误消息、代码的语法和周围的代码建议可能的修复。

Copilot Chat 可以建议对变量、控制结构或函数调用的更改,这些更改可能会解决问题并生成可合并到代码库中的代码片段。 但是,请务必注意,建议的修复可能并不总是最佳或完整的,因此你需要查看和测试建议。

回答编码问题

你可以向 Copilot Chat 寻求有关特定编码问题的帮助或澄清,并以自然语言格式或代码片段格式接收响应。 对于程序员来说,这是一个有用的工具,因为它可以为常见的编码任务和挑战提供指导和支持。

提高 GitHub Copilot Chat 的性能

Copilot Chat 可以支持各种实际应用,例如代码生成、代码分析和代码修复,每个应用都具有不同的性能指标和缓解策略。 为了增强性能并解决 Copilot Chat 的某些限制,你可以采用各种措施。 有关 Copilot Chat 的限制的详细信息,请参阅“GitHub Copilot Chat 的限制”。

使提示与主题相关

Copilot Chat 旨在专门处理与编码相关的查询。 因此,将提示限制为编码问题或任务可以提高模型的输出质量。

使用 Copilot Chat 作为工具,而不是替代

虽然 Copilot Chat 是生成代码的强大工具,但请务必将其用作工具,而不用于替代人工编程。 应始终查看和测试 Copilot Chat 生成的代码,以确保它符合你的要求,并且没有错误或安全问题。

使用安全编码和代码评审做法

虽然 Copilot Chat 可以生成语法正确的代码,但它可能并不总是安全的。 应始终遵循安全编码的最佳做法,例如避免硬编码密码或 SQL 注入漏洞,并遵循代码评审最佳做法,以解决 Copilot Chat 的限制。

提供反馈

如果在使用 Copilot Chat 时遇到任何问题或限制,建议通过 IDE 的 Copilot Chat 界面中的“共享反馈”链接提供反馈。 这可以帮助开发人员改进该工具并解决任何问题或限制。

掌握最新动态

Copilot Chat 是一项新技术,可能持续改进。 应随时了解工具的任何更新或更改,以及可能出现的任何新安全风险或最佳做法。 默认情况下,在 Visual Studio Code、Visual Studio 和 IDE 的 JetBrains 套件中启用自动扩展更新。 对于 GitHub Copilot Chat in GitHub.com,你将始终有权访问最新的产品体验。 如果启用了自动更新,Copilot Chat 将在你打开 IDE 时自动更新到最新版本。 有关 IDE 中自动更新的详细信息,请参阅 Visual Studio Code 文档Visual Studio 文档JetBrains IDE 文档

GitHub Copilot Chat 的限制

根据代码库和输入数据等因素,在使用 Copilot Chat 时,可能会体验到不同级别的性能。 以下信息旨在帮助你了解系统限制以及有关性能的关键概念,因为它们适用于 Copilot Chat。

作用域受限

Copilot Chat 已基于大量代码进行训练,但范围仍然有限,可能无法处理更复杂的代码结构或晦涩难懂的编程语言。 对于每种语言,收到的建议质量可能取决于该语言训练数据的数量和多样性。 例如,JavaScript 在公共存储库中表现良好,并且是 GitHub Copilot 最受支持的语言之一。 对于 Copilot Chat 来说,公共存储库中代表性较少的语言可能更难以提供帮助。 此外,Copilot Chat 只能根据所编写代码的上下文建议代码,因此可能无法识别更大的设计或体系结构问题。

潜在偏见

Copilot 的训练数据取自现有代码存储库,其中可能包含工具可能会延续的偏见和错误。 此外,Copilot Chat 可能偏向于某些编程语言或编码样式,这可能导致代码建议欠佳或不完整。

安全风险

Copilot Chat 基于所编写代码的上下文生成代码,如果不谨慎使用,可能会暴露敏感信息或漏洞。 使用 Copilot Chat 为安全敏感型应用程序生成代码时,应小心谨慎,并始终全面评审和测试生成的代码。

与公共代码匹配

Copilot Chat 能够生成新代码,但有概率一说。 虽然它生成与训练集中的代码匹配的代码的概率很低,但 Copilot Chat 建议可能包含一些与训练集中的代码匹配的代码片段。 Copilot Chat 利用筛选器阻止与 GitHub 存储库上的公共代码匹配,但你应该始终采取与使用非你独立创作的材料编写的任何代码相同的预防措施,包括确保其适用性的预防措施。 这些预防措施包括严格的测试、IP 扫描和安全漏洞检查。 在评审之前,应确保 IDE 或编辑器不会自动编译或运行生成的代码。

代码不准确

Copilot Chat 的其中一个限制是,它可能会生成看似有效的代码,但实际上该代码在语义或语法上可能不正确,或者可能无法准确反映开发人员的意图。 若要降低代码不准确的风险,应仔细评审和测试生成的代码,尤其是在处理关键或敏感应用程序时。 还应确保生成的代码遵循最佳做法和设计模式,并符合代码库的整体体系结构和样式。

对非编码主题的响应不准确

Copilot Chat 并非旨在回答非编码问题,因此其响应在这些上下文中可能并不总是准确或有用。 如果用户向 Copilot Chat 询问非编码问题,则可能生成不相关或无意义的答案,或者可能只是指示无法提供有用的响应。

后续步骤

有关如何使用 GitHub Copilot Chat 的详细信息,请参阅:

延伸阅读