Skip to main content

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

通过了解其目的、功能和限制,了解如何负责任地使用 GitHub Copilot Chat in GitHub。

关于 GitHub Copilot Chat in GitHub

GitHub Copilot Chat in GitHub 是一个聊天界面,可让你与 GitHub Copilot 进行交互,直接从 GitHub 询问编码相关问题并接收答案。

聊天界面提供对编码信息和支持的访问,让你无需浏览文档或搜索在线论坛。

Note

Copilot Chat 也可在 Visual Studio Code、Visual Studio 和 JetBrains IDE 套件中使用。 但是,这些 IDE 中提供的功能不同于 GitHub 上提供的功能。

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

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

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

输入处理

用户的输入提示由 Copilot Chat 系统预先处理,并结合上下文信息(例如,当前日期和时间以及用户当前正在查看的存储库的名称),然后发送到大型语言模型。 用户输入可以采用代码片段或纯语言的形式。

大型语言模型将采用提示、收集其他上下文(例如存储在 GitHub 上的存储库数据或来自必应的搜索结果),并根据提示提供响应。 系统仅用于响应与编码相关的问题。

语言模型分析

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

响应生成

语言模型根据其对输入提示和所提供上下文的分析生成响应。 语言模型可以收集其他上下文(例如存储在 GitHub 上的存储库数据或来自必应的搜索结果),并根据提示提供响应。 此响应可以采用生成的代码、代码建议或现有代码说明的形式。

输出格式设置

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

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

Copilot Chat 的用例

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

回答编码问题

你可以向 Copilot Chat 寻求有关特定编码问题的帮助或澄清,并以自然语言格式或代码片段格式接收响应。

Copilot Chat 生成的响应可以使用模型的训练数据集、来自必应的搜索结果、存储库中的代码以及知识库中的 Markdown 文档来回答问题。

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

说明代码和建议改进

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 可以帮助你找出特定版本中的更改,可以总结讨论中的信息,并且可以解释特定提交中的更改。 例如,在你不熟悉项目、希望快速获取讨论的 gist 或者需要处理其他人员编写的代码时,此功能将会非常实用。 但请务必注意,Copilot Chat 的版本、讨论和提交摘要并不总是准确或完整。

提高 Copilot Chat 的性能

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

使提示与主题相关

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

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

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

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

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

提供反馈

Note

向 GitHub 提供有关 Copilot pull request summaries 的反馈的功能取决于企业设置。 有关详细信息,请参阅“管理企业中 Copilot 的策略和功能”。

如果 Copilot Chat in GitHub 遇到任何问题或限制,建议通过单击每个聊天响应下方的拇指向下图标来提供反馈。 这可以帮助开发人员改进该工具并解决任何问题或限制。

掌握最新动态

Copilot Chat 是一项新技术,可能持续改进。 对于 GitHub Copilot Chat in GitHub,你将始终有权访问最新的产品体验。 应随时了解可能出现的任何新安全风险或最佳做法。

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 扫描和安全漏洞检查。

如果已启用与公共代码匹配的建议,则 Copilot Chat 会在找到匹配代码时显示一条消息。 该消息包含指向 GitHub 上包含匹配代码的存储库的链接,以及找到的任何许可证详细信息。 有关详细信息,请参阅“查找与 GitHub Copilot 建议匹配的公开代码”。

代码不准确

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

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

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

利用 Web 搜索回答问题

根据你提出的问题,GitHub Copilot Chat 可以选择使用必应搜索来帮助回答问题。 Copilot 将使用必应来查询近期事件、新趋势或技术、高度特定的主题,或者在用户显式请求 Web 搜索时使用。 GitHub Enterprise 管理员可以为整个企业启用必应,也可以将此决定委托给组织管理员。 有关详细信息,请参阅“管理企业中 Copilot 的策略和功能”。

利用必应时,Copilot 将使用提示的内容和其他可用上下文来代表发送到必应搜索 API 生成必应搜索查询。 Copilot 将提供指向搜索结果的链接及其回复。 发送到必应的搜索查询受 Microsoft 隐私声明的约束。

后续步骤

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

其他阅读材料