注意
GitHub Copilot Chat 目前处于公开预览阶段,仅供拥有 Copilot 个人版或 Copilot 企业版订阅的用户使用。
关于 GitHub 中的 GitHub Copilot Chat
GitHub 中的 GitHub Copilot Chat 是一种聊天界面,允许您与 GitHub Copilot 交互,在 GitHub 中询问并接收与编码相关的问题的答案。
该聊天界面提供对编码信息和支持的访问,无需您浏览文档或搜索在线论坛。
注意
Copilot Chat 也可以在 Visual Studio Code、Visual Studio 和 JetBrains 系列 IDE 中使用。但是,这些 IDE 中提供的功能与 GitHub 上提供的功能有所不同。
GitHub Copilot Chat 可以回答各种与编码相关的广泛问题,主题包括语法、编程概念、测试用例、调试等等。GitHub Copilot Chat 并非旨在回答非编码问题或提供编码之外主题的一般信息。
GitHub 中 Copilot Chat 的主要支持语言为英语。
GitHub Copilot Chat 通过结合自然语言处理和机器学习来理解您的问题并提供答案。此过程可以细分为多个步骤。
输入处理
来自用户的输入提示由 Copilot Chat 系统预处理,并结合上下文信息(例如,当前日期和时间以及用户当前正在查看的存储库的名称),然后发送到大型语言模型。用户输入可以采用代码片段或纯文本的形式。
大型语言模型将获取提示,收集其他上下文(例如存储在 GitHub 上的存储库数据或来自 Bing 的搜索结果),并根据提示提供响应。该系统仅用于响应与编码相关的查询。
语言模型分析
然后,预处理的提示将通过 Copilot Chat 语言模型,该模型是一个已在大规模文本数据集中训练的神经网络。语言模型会分析输入提示。
响应生成
语言模型根据其对输入提示和提供给它的上下文的分析生成响应。语言模型可以收集其他上下文(例如存储在 GitHub 上的存储库数据或来自 Bing 的搜索结果),并根据提示提供响应。此响应可以采用生成的代码、代码建议或现有代码的解释的形式。
输出格式化
Copilot Chat 生成的响应将被格式化并呈现给用户。Copilot Chat 可能会使用语法高亮显示、缩进和其他格式化功能来增加生成响应的清晰度。根据用户的查询类型,还可能提供指向模型在生成响应时使用的上下文的链接,例如源代码文件、问题、Bing 搜索结果或文档。
Copilot Chat 旨在为您提供与您的问题最相关的答案。但是,它可能并不总是提供您正在寻找的答案。Copilot Chat 的用户有责任审查和验证系统生成的响应,以确保其准确性和适用性。此外,作为我们产品开发流程的一部分,我们进行红队测试以了解和改进 Copilot Chat 的安全性。输入提示和输出完成将通过内容过滤器运行。内容过滤系统检测并阻止特定类别内容的输出,包括有害、冒犯性或偏离主题的内容。有关提高 Copilot Chat 性能的更多信息,请参阅“提高 Copilot Chat 的性能”。
Copilot Chat 的用例
Copilot Chat 可以在各种场景中提供编码帮助。
回答编码问题
您可以向 Copilot Chat 寻求帮助或澄清特定的编码问题,并以自然语言格式或代码片段格式接收回复。
Copilot Chat 生成的回复可能会使用模型的训练数据集、来自 Bing 的搜索结果、您存储库中的代码以及知识库中的 Markdown 文档来回答您的问题。
这可以成为程序员的实用工具,因为它可以为常见的编码任务和挑战提供指导和支持。
解释代码并建议改进
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 对发布、讨论和提交的总结可能并不总是准确或完整的。
提高 Copilot Chat 的性能
Copilot Chat 可以支持各种实际应用,例如问答、代码生成、代码分析和代码修复,每个应用都有不同的性能指标和缓解策略。为了增强性能并解决 Copilot Chat 的一些局限性,您可以采取各种措施。有关 Copilot Chat 局限性的更多信息,请参阅“GitHub Copilot Chat 的局限性”。
保持您的提示主题相关
Copilot Chat 旨在专门处理与编码相关的查询。因此,将提示限制为编码问题或任务可以提高模型的输出质量。
将 Copilot Chat 作为工具使用,而不是替代品
虽然 Copilot Chat 可以成为生成代码的强大工具,但务必将其用作工具,而不是人工编程的替代品。您应始终审查和测试 Copilot Chat 生成的代码,以确保它满足您的需求并且没有错误或安全问题。
使用安全的编码和代码审查实践
虽然 Copilot Chat 可以生成语法正确的代码,但它可能并不总是安全的。您应始终遵循安全编码的最佳实践,例如避免硬编码密码或 SQL 注入漏洞,以及遵循代码审查最佳实践,以解决 Copilot Chat 的局限性。
提供反馈
注意
向 GitHub 提供关于 Copilot 拉取请求摘要的反馈功能取决于企业设置。有关更多信息,请参阅“在您的企业中管理 Copilot 的策略和功能”。
如果您在 GitHub 中遇到任何与 Copilot Chat 相关的问题或限制,我们建议您通过点击每个聊天回复下方的竖起大拇指图标提供反馈。这可以帮助开发人员改进工具并解决任何问题或限制。
保持最新
Copilot Chat 是一项新技术,可能会随着时间的推移而发展。对于 GitHub 中的 GitHub Copilot Chat,您将始终可以访问最新的产品体验。您应该随时了解可能出现的任何新的安全风险或最佳实践。
GitHub Copilot Chat 的限制
根据代码库和输入数据等因素,您在使用 Copilot Chat 时可能会遇到不同级别的性能。以下信息旨在帮助您了解系统限制和与性能相关的关键概念,因为它们适用于 Copilot Chat。
范围有限
Copilot Chat 已接受大量代码的训练,但其范围仍然有限,可能无法处理更复杂的代码结构或晦涩的编程语言。对于每种语言,您收到的建议质量可能取决于该语言的训练数据量和多样性。例如,JavaScript 在公共存储库中得到了很好的体现,并且是 GitHub Copilot 最佳支持的语言之一。在公共存储库中表示较少的语言可能更难以获得 Copilot Chat 的帮助。此外,Copilot Chat 只能根据正在编写的代码的上下文建议代码,因此它可能无法识别较大的设计或架构问题。
潜在偏差
Copilot 的训练数据(来自现有的代码存储库)和大型语言模型收集的上下文(例如,Bing 搜索结果)可能包含偏差和错误,这些偏差和错误可能会被工具延续。此外,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 提问非编码问题,它可能会生成不相关或无意义的答案,或者它可能只是表示它无法提供有用的回复。
利用网络搜索来回答问题
根据您提出的问题,GitHub Copilot Chat 可以选择使用 Bing 搜索来帮助回答您的问题。Copilot 将对有关近期事件、新趋势或技术、高度具体的主题或用户明确请求网络搜索时进行 Bing 搜索。您的 GitHub Enterprise 管理员可以为您的整个企业启用 Bing,或者可以将此决定委派给组织管理员。有关更多信息,请参阅“在您的企业中管理 Copilot 的策略和功能”。
在利用 Bing 时,Copilot 将使用您的提示内容以及其他可用上下文,代表您生成 Bing 搜索查询并将其发送到 Bing 搜索 API。Copilot 将在其回复中提供指向搜索结果的链接。发送到 Bing 的搜索查询受Microsoft 的隐私声明管理。
后续步骤
有关如何在 GitHub 中使用 GitHub Copilot Chat 的详细信息,请参阅
- "在 GitHub 中向 GitHub Copilot 提问" 在 GitHub Enterprise Cloud 文档中。