跳至主要内容

在你的 IDE 中负责任地使用 GitHub Copilot 聊天

通过了解其目的、功能和局限性,学习如何负责任地使用 GitHub Copilot 聊天。

谁可以使用此功能?

所有拥有 GitHub Copilot 个人订阅的用户都可以在你的 IDE 中访问 GitHub Copilot 聊天。

拥有 Copilot 商业订阅的组织所有者可以决定是否授予在你的 IDE 中访问 GitHub Copilot 聊天的权限。

关于 GitHub Copilot 聊天

GitHub Copilot 聊天是一个聊天界面,允许你与 GitHub Copilot 交互,在 GitHub 网站和支持的 IDE 中询问和接收与代码相关的问题的答案。聊天界面提供了访问代码信息和支持的功能,无需导航文档或搜索在线论坛。有关更多信息,请参阅“什么是 GitHub Copilot?”。

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

GitHub Copilot 聊天的主要支持语言为英语。

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

输入处理

来自用户的输入提示由 Copilot 聊天系统预处理,并与上下文信息(例如,用户当前正在查看的存储库的名称以及用户打开的文件)相结合,然后发送到大型语言模型。用户输入可以采用代码片段或纯文本的形式。

用户可以创建可选的 .github/copilot-instructions.md 文件,从该文件中自动向聊天提示添加其他上下文信息。这些附加信息不会显示在聊天中,但如果将说明发送到模型,则该文件将在聊天回复中作为参考列出。用户可以在 Copilot 扩展设置中禁用此功能。

大型语言模型将接收提示,收集其他上下文(例如存储在 GitHub 上的存储库数据),并根据提示提供回复。该系统仅用于响应与代码相关的疑问。

语言模型分析

然后,预处理的提示将通过 Copilot 聊天语言模型传递,该模型是已在一个大型文本数据集中训练过的神经网络。语言模型会分析输入提示。

回复生成

语言模型根据其对输入提示和提供给它的上下文的分析生成回复。语言模型可以收集其他上下文并根据提示提供回复。此回复可以采用生成的代码、代码建议或现有代码的解释的形式。

当你使用 @github 聊天参与者时,Copilot 聊天将能够从你存储在 GitHub 上的代码以及 Bing 的搜索结果中收集上下文(如果你的管理员已启用)。

输出格式化

Copilot 聊天生成的回复会被格式化并呈现给用户。Copilot 聊天可能会使用语法高亮、缩进和其他格式化功能来提高生成回复的清晰度。根据用户的提问类型,也可能会提供指向模型在生成回复时使用的上下文的链接,例如源代码文件或文档。

GitHub Copilot 聊天旨在为你提供与你的问题最相关的答案。但是,它可能并非总是提供你想要的答案。Copilot 聊天的用户有责任审查和验证系统生成的回复,以确保其准确性和适用性。此外,作为我们产品开发流程的一部分,我们进行了红队测试以了解和改进 Copilot 聊天的安全性。输入提示和输出补全将通过内容过滤器运行。内容过滤系统检测并阻止特定类别内容的输出,包括有害、冒犯性或偏离主题的内容。有关改进 GitHub Copilot 聊天性能的更多信息,请参阅“提升 GitHub Copilot 聊天的性能”。

利用网络搜索回答问题

注意

Copilot 聊天中的 Bing 搜索集成目前处于公开预览阶段,可能会发生变化。

当你使用 @github 聊天参与者时,如果你的管理员已启用,GitHub Copilot 聊天可以使用 Bing 搜索来帮助回答你的问题。

你的 GitHub Enterprise 管理员可以为整个企业启用 Bing,或者可以将此决定委托给组织管理员。有关更多信息,请参阅“在你的企业中实施 GitHub Copilot 的策略”。

在利用 Bing 时,Copilot 将使用你的提示内容以及其他可用上下文,代表你生成一个发送到 Bing 搜索 API 的 Bing 搜索查询。Copilot 将在其回复中提供搜索结果的链接。发送到 Bing 的搜索查询受Microsoft 的隐私声明约束。

GitHub Copilot 聊天的用例

GitHub Copilot 聊天可以在各种场景中提供代码辅助。

生成单元测试用例

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

Copilot 聊天还可以帮助你编写可能难以手动识别的边缘情况和边界条件的测试用例。例如,Copilot 聊天可以建议用于错误处理、空值或意外输入类型的测试用例,帮助你确保代码的健壮性和弹性。但是,请注意,生成的测试用例可能无法涵盖所有可能的情况,因此仍然需要手动测试和代码审查来确保代码的质量。有关生成单元测试用例的更多信息,请参阅“向 GitHub Copilot 聊天询问有关代码的问题”。

解释代码并建议改进

Copilot Chat 可以帮助解释选定的代码,通过生成代码功能和目的的自然语言描述。如果您想了解代码的行为或非技术利益相关者需要了解代码的工作原理,这将非常有用。例如,如果您在代码编辑器中选择一个函数或代码块,Copilot Chat 可以生成对代码执行的操作及其在整个系统中的作用的自然语言描述。这可能包括有关函数的输入和输出参数、其依赖项以及其在更大应用程序中的目的的信息。

Copilot Chat 还可以建议对选定代码的潜在改进,例如改进错误和边缘情况的处理,或更改逻辑流程以使代码更易读。

通过生成解释和建议相关的文档,Copilot Chat 可以帮助您理解选定的代码,从而促进协作并提高软件开发效率。但是,请注意,生成的解释和文档可能并不总是准确或完整的,因此您需要审查并偶尔更正 Copilot Chat 的输出。

提出代码修复建议

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

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

回答编码问题

您可以向 Copilot Chat 寻求帮助或澄清特定编码问题,并以自然语言格式或代码片段格式接收回复。

Copilot Chat 生成的回复将使用模型的训练数据集来回答您的问题。

当您使用 @github 聊天参与者时,生成的回复还可以使用来自 Bing 的搜索结果、您存储库中的代码以及知识库中的 Markdown 文档。

这对于程序员来说是一个有用的工具,因为它可以为常见的编码任务和挑战提供指导和支持。

提高 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 和 JetBrains 套件 IDE 默认情况下启用自动扩展更新。对于 GitHub 中的 GitHub Copilot Chat,您将始终可以访问最新的产品体验。如果您启用了自动更新,则在打开 IDE 时,Copilot Chat 会自动更新到最新版本。有关 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 将显示一条消息。该消息包含一个链接,允许您在 VS Code 编辑器中显示匹配代码的详细信息以及找到的任何许可证详细信息。有关更多信息,请参阅“查找与 GitHub Copilot 建议匹配的公共代码”。

Copilot Chat 利用过滤器阻止与 GitHub 存储库上的公共代码匹配,但您应始终采取与编写任何使用您未独立创作的材料的代码相同的预防措施,包括确保其适用性的预防措施。这些措施包括严格的测试、IP 扫描和检查安全漏洞。您应该确保您的 IDE 或编辑器在您审查之前不会自动编译或运行生成的代码。

Copilot Chat 利用过滤器阻止与 GitHub 存储库上的公共代码匹配,但您应始终采取与编写任何使用您未独立创作的材料的代码相同的预防措施,包括确保其适用性的预防措施。这些措施包括严格的测试、IP 扫描和检查安全漏洞。您应该确保您的 IDE 或编辑器在您审查之前不会自动编译或运行生成的代码。

不准确的代码

Copilot Chat 的局限性之一是,它可能会生成看起来有效的代码,但实际上在语义上或语法上可能不正确,或者可能无法准确反映开发人员的意图。为了降低不准确代码的风险,您应仔细审查和测试生成的代码,尤其是在处理关键或敏感应用程序时。您还应确保生成的代码符合最佳实践和设计模式,并适合代码库的整体架构和风格。

对非编码主题的不准确回复

Copilot Chat 并非旨在回答非编码问题,因此在这些情况下,其回复可能并不总是准确或有帮助的。如果用户向 Copilot Chat 提问一个非编码问题,它可能会生成一个无关或无意义的答案,或者它可能会简单地表明它无法提供有用的回复。

后续步骤

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

进一步阅读

关于 GitHub Copilot 聊天

GitHub Copilot 聊天是一个聊天界面,允许你与 GitHub Copilot 交互,在 GitHub 网站和支持的 IDE 中询问和接收与代码相关的问题的答案。聊天界面提供了访问代码信息和支持的功能,无需导航文档或搜索在线论坛。有关更多信息,请参阅“什么是 GitHub Copilot?”。

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

GitHub Copilot 聊天的主要支持语言为英语。

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

输入处理

来自用户的输入提示由 Copilot 聊天系统预处理,并与上下文信息(例如,用户当前正在查看的存储库的名称以及用户打开的文件)相结合,然后发送到大型语言模型。用户输入可以采用代码片段或纯文本的形式。

用户可以创建可选的 .github/copilot-instructions.md 文件,从该文件中自动向聊天提示添加其他上下文信息。这些附加信息不会显示在聊天中,但如果将说明发送到模型,则该文件将在聊天回复中作为参考列出。用户可以在 Copilot 扩展设置中禁用此功能。

大型语言模型将接收提示,收集其他上下文(例如存储在 GitHub 上的存储库数据),并根据提示提供回复。该系统仅用于响应与代码相关的疑问。

语言模型分析

然后,预处理的提示将通过 Copilot 聊天语言模型传递,该模型是已在一个大型文本数据集中训练过的神经网络。语言模型会分析输入提示。

回复生成

语言模型根据其对输入提示和提供给它的上下文的分析生成回复。语言模型可以收集其他上下文并根据提示提供回复。此回复可以采用生成的代码、代码建议或现有代码的解释的形式。

当你使用 @github 聊天参与者时,Copilot 聊天将能够从你存储在 GitHub 上的代码以及 Bing 的搜索结果中收集上下文(如果你的管理员已启用)。

输出格式化

Copilot 聊天生成的回复会被格式化并呈现给用户。Copilot 聊天可能会使用语法高亮、缩进和其他格式化功能来提高生成回复的清晰度。根据用户的提问类型,也可能会提供指向模型在生成回复时使用的上下文的链接,例如源代码文件或文档。

GitHub Copilot 聊天旨在为你提供与你的问题最相关的答案。但是,它可能并非总是提供你想要的答案。Copilot 聊天的用户有责任审查和验证系统生成的回复,以确保其准确性和适用性。此外,作为我们产品开发流程的一部分,我们进行了红队测试以了解和改进 Copilot 聊天的安全性。输入提示和输出补全将通过内容过滤器运行。内容过滤系统检测并阻止特定类别内容的输出,包括有害、冒犯性或偏离主题的内容。有关改进 GitHub Copilot 聊天性能的更多信息,请参阅“提升 GitHub Copilot 聊天的性能”。

利用网络搜索回答问题

注意

Copilot 聊天中的 Bing 搜索集成目前处于公开预览阶段,可能会发生变化。

当你使用 @github 聊天参与者时,如果你的管理员已启用,GitHub Copilot 聊天可以使用 Bing 搜索来帮助回答你的问题。

你的 GitHub Enterprise 管理员可以为整个企业启用 Bing,或者可以将此决定委托给组织管理员。有关更多信息,请参阅“在你的企业中实施 GitHub Copilot 的策略”。

在利用 Bing 时,Copilot 将使用你的提示内容以及其他可用上下文,代表你生成一个发送到 Bing 搜索 API 的 Bing 搜索查询。Copilot 将在其回复中提供搜索结果的链接。发送到 Bing 的搜索查询受Microsoft 的隐私声明约束。

GitHub Copilot 聊天的用例

GitHub Copilot 聊天可以在各种场景中提供代码辅助。

生成单元测试用例

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

Copilot 聊天还可以帮助你编写可能难以手动识别的边缘情况和边界条件的测试用例。例如,Copilot 聊天可以建议用于错误处理、空值或意外输入类型的测试用例,帮助你确保代码的健壮性和弹性。但是,请注意,生成的测试用例可能无法涵盖所有可能的情况,因此仍然需要手动测试和代码审查来确保代码的质量。有关生成单元测试用例的更多信息,请参阅“向 GitHub Copilot 聊天询问有关代码的问题”。

解释代码并建议改进

Copilot Chat 可以帮助解释选定的代码,通过生成代码功能和目的的自然语言描述。如果您想了解代码的行为或非技术利益相关者需要了解代码的工作原理,这将非常有用。例如,如果您在代码编辑器中选择一个函数或代码块,Copilot Chat 可以生成对代码执行的操作及其在整个系统中的作用的自然语言描述。这可能包括有关函数的输入和输出参数、其依赖项以及其在更大应用程序中的目的的信息。

Copilot Chat 还可以建议对选定代码的潜在改进,例如改进错误和边缘情况的处理,或更改逻辑流程以使代码更易读。

通过生成解释和建议相关的文档,Copilot Chat 可以帮助您理解选定的代码,从而促进协作并提高软件开发效率。但是,请注意,生成的解释和文档可能并不总是准确或完整的,因此您需要审查并偶尔更正 Copilot Chat 的输出。

提出代码修复建议

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

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 和 JetBrains 套件 IDE 默认情况下启用自动扩展更新。对于 GitHub 中的 GitHub Copilot Chat,您将始终可以访问最新的产品体验。如果您启用了自动更新,则在打开 IDE 时,Copilot Chat 会自动更新到最新版本。有关 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 将显示一条消息。该消息包含一个链接,允许您在 VS Code 编辑器中显示匹配代码的详细信息以及找到的任何许可证详细信息。有关更多信息,请参阅“查找与 GitHub Copilot 建议匹配的公共代码”。

Copilot Chat 利用过滤器阻止与 GitHub 存储库上的公共代码匹配,但您应始终采取与编写任何使用您未独立创作的材料的代码相同的预防措施,包括确保其适用性的预防措施。这些措施包括严格的测试、IP 扫描和检查安全漏洞。您应该确保您的 IDE 或编辑器在您审查之前不会自动编译或运行生成的代码。

Copilot Chat 利用过滤器阻止与 GitHub 存储库上的公共代码匹配,但您应始终采取与编写任何使用您未独立创作的材料的代码相同的预防措施,包括确保其适用性的预防措施。这些措施包括严格的测试、IP 扫描和检查安全漏洞。您应该确保您的 IDE 或编辑器在您审查之前不会自动编译或运行生成的代码。

不准确的代码

Copilot Chat 的局限性之一是,它可能会生成看起来有效的代码,但实际上在语义上或语法上可能不正确,或者可能无法准确反映开发人员的意图。为了降低不准确代码的风险,您应仔细审查和测试生成的代码,尤其是在处理关键或敏感应用程序时。您还应确保生成的代码符合最佳实践和设计模式,并适合代码库的整体架构和风格。

对非编码主题的不准确回复

Copilot Chat 并非旨在回答非编码问题,因此在这些情况下,其回复可能并不总是准确或有帮助的。如果用户向 Copilot Chat 提问一个非编码问题,它可能会生成一个无关或无意义的答案,或者它可能会简单地表明它无法提供有用的回复。

后续步骤

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

进一步阅读

关于 GitHub Copilot 聊天

GitHub Copilot 聊天是一个聊天界面,允许你与 GitHub Copilot 交互,在 GitHub 网站和支持的 IDE 中询问和接收与代码相关的问题的答案。聊天界面提供了访问代码信息和支持的功能,无需导航文档或搜索在线论坛。有关更多信息,请参阅“什么是 GitHub Copilot?”。

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

GitHub Copilot 聊天的主要支持语言为英语。

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

输入处理

来自用户的输入提示由 Copilot 聊天系统预处理,并与上下文信息(例如,用户当前正在查看的存储库的名称以及用户打开的文件)相结合,然后发送到大型语言模型。用户输入可以采用代码片段或纯文本的形式。

大型语言模型将接收提示,收集其他上下文(例如存储在 GitHub 上的存储库数据),并根据提示提供回复。该系统仅用于响应与代码相关的疑问。

语言模型分析

然后,预处理的提示将通过 Copilot 聊天语言模型传递,该模型是已在一个大型文本数据集中训练过的神经网络。语言模型会分析输入提示。

回复生成

语言模型根据其对输入提示和提供给它的上下文的分析生成回复。语言模型可以收集其他上下文并根据提示提供回复。此回复可以采用生成的代码、代码建议或现有代码的解释的形式。

输出格式化

Copilot 聊天生成的回复会被格式化并呈现给用户。Copilot 聊天可能会使用语法高亮、缩进和其他格式化功能来提高生成回复的清晰度。根据用户的提问类型,也可能会提供指向模型在生成回复时使用的上下文的链接,例如源代码文件或文档。

GitHub Copilot 聊天旨在为你提供与你的问题最相关的答案。但是,它可能并非总是提供你想要的答案。Copilot 聊天的用户有责任审查和验证系统生成的回复,以确保其准确性和适用性。此外,作为我们产品开发流程的一部分,我们进行了红队测试以了解和改进 Copilot 聊天的安全性。输入提示和输出补全将通过内容过滤器运行。内容过滤系统检测并阻止特定类别内容的输出,包括有害、冒犯性或偏离主题的内容。有关改进 GitHub Copilot 聊天性能的更多信息,请参阅“提升 GitHub Copilot 聊天的性能”。

GitHub Copilot 聊天的用例

GitHub Copilot 聊天可以在各种场景中提供代码辅助。

生成单元测试用例

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

Copilot 聊天还可以帮助你编写可能难以手动识别的边缘情况和边界条件的测试用例。例如,Copilot 聊天可以建议用于错误处理、空值或意外输入类型的测试用例,帮助你确保代码的健壮性和弹性。但是,请注意,生成的测试用例可能无法涵盖所有可能的情况,因此仍然需要手动测试和代码审查来确保代码的质量。有关生成单元测试用例的更多信息,请参阅“向 GitHub Copilot 聊天询问有关代码的问题”。

解释代码并建议改进

Copilot Chat 可以帮助解释选定的代码,通过生成代码功能和目的的自然语言描述。如果您想了解代码的行为或非技术利益相关者需要了解代码的工作原理,这将非常有用。例如,如果您在代码编辑器中选择一个函数或代码块,Copilot Chat 可以生成对代码执行的操作及其在整个系统中的作用的自然语言描述。这可能包括有关函数的输入和输出参数、其依赖项以及其在更大应用程序中的目的的信息。

Copilot Chat 还可以建议对选定代码的潜在改进,例如改进错误和边缘情况的处理,或更改逻辑流程以使代码更易读。

通过生成解释和建议相关的文档,Copilot Chat 可以帮助您理解选定的代码,从而促进协作并提高软件开发效率。但是,请注意,生成的解释和文档可能并不总是准确或完整的,因此您需要审查并偶尔更正 Copilot Chat 的输出。

提出代码修复建议

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

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 和 JetBrains 套件 IDE 默认情况下启用自动扩展更新。对于 GitHub 中的 GitHub Copilot Chat,您将始终可以访问最新的产品体验。如果您启用了自动更新,则在打开 IDE 时,Copilot Chat 会自动更新到最新版本。有关 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 将显示一条消息。该消息包含一个链接,允许您在 VS Code 编辑器中显示匹配代码的详细信息以及找到的任何许可证详细信息。有关更多信息,请参阅“查找与 GitHub Copilot 建议匹配的公共代码”。

Copilot Chat 利用过滤器阻止与 GitHub 存储库上的公共代码匹配,但您应始终采取与编写任何使用您未独立创作的材料的代码相同的预防措施,包括确保其适用性的预防措施。这些措施包括严格的测试、IP 扫描和检查安全漏洞。您应该确保您的 IDE 或编辑器在您审查之前不会自动编译或运行生成的代码。

Copilot Chat 利用过滤器阻止与 GitHub 存储库上的公共代码匹配,但您应始终采取与编写任何使用您未独立创作的材料的代码相同的预防措施,包括确保其适用性的预防措施。这些措施包括严格的测试、IP 扫描和检查安全漏洞。您应该确保您的 IDE 或编辑器在您审查之前不会自动编译或运行生成的代码。

不准确的代码

Copilot Chat 的局限性之一是,它可能会生成看起来有效的代码,但实际上在语义上或语法上可能不正确,或者可能无法准确反映开发人员的意图。为了降低不准确代码的风险,您应仔细审查和测试生成的代码,尤其是在处理关键或敏感应用程序时。您还应确保生成的代码符合最佳实践和设计模式,并适合代码库的整体架构和风格。

对非编码主题的不准确回复

Copilot Chat 并非旨在回答非编码问题,因此在这些情况下,其回复可能并不总是准确或有帮助的。如果用户向 Copilot Chat 提问一个非编码问题,它可能会生成一个无关或无意义的答案,或者它可能会简单地表明它无法提供有用的回复。

后续步骤

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

进一步阅读