关于 在 GitHub 中使用 GitHub Copilot 聊天助手
在 GitHub 中使用 GitHub Copilot 聊天助手 是一个聊天界面,允许你与 GitHub Copilot 交互,在 GitHub 中询问和接收与编码相关的问题的答案。
聊天界面提供对编码信息和支持的访问,无需浏览文档或搜索在线论坛。
注意
Copilot对话 也可在 Visual Studio Code、Visual Studio 和 JetBrains IDE 套件中使用。 但是,这些 IDE 中提供的功能不同于 GitHub 上提供的功能。
GitHub Copilot 聊天 可以回答与编码相关的各种主题问题,包括语法、编程概念、测试用例、调试等。 GitHub Copilot 聊天 并非旨在回答非编码问题或提供有关编码以外主题的一般信息。
在 GitHub 中Copilot聊天 的主要支持语言是英语。
GitHub Copilot 聊天 通过结合使用自然语言处理和机器学习来理解你的问题并为你提供答案。 此过程可以细分为多个步骤。
输入处理
用户的输入提示由 Copilot对话 系统预先处理,并结合上下文信息(例如,当前日期和时间以及用户当前正在查看的仓库的名称),然后发送到大型语言模型。 用户输入可以采用代码片段或纯语言的形式。
大型语言模型将获取提示并收集其他上下文(例如,存储在GitHub上的存储库数据或来自 Bing 的搜索结果),然后根据提示提供响应。 系统仅用于响应与编码相关的问题。
语言模型分析
然后,预处理的提示通过 Copilot对话 语言模型传递,该模型是一个神经网络,已基于大量文本数据进行了训练。 语言模型分析输入提示。
响应生成
语言模型根据其对输入提示和所提供上下文的分析生成响应。 语言模型可以收集额外的上下文(例如存储在 GitHub 上的代码库数据或来自 Bing 的搜索结果),并根据提示提供响应。 此响应可以采用生成的代码、代码建议或现有代码说明的形式。
输出格式设置
Copilot对话 生成的响应将格式化并呈现给用户。 Copilot对话 可以使用语法突出显示、缩进和其他格式化功能来为生成的响应增加清晰度。 根据用户的问题类型,还可以提供生成响应时模型使用的上下文的链接,例如源代码文件、问题、Bing搜索结果或文档。
Copilot对话 旨在为你提供与你的问题最相关的答案。 但是,它可能并不总是提供你要查找的答案。 Copilot对话 的用户负责查看和验证系统生成的响应,以确保它们准确无误。 此外,作为产品开发流程的一部分,我们会开展红队演练,以理解并提升 Copilot对话 的安全性。 输入提示和输出结果将通过内容过滤器进行处理。 内容筛选系统可检测并阻止输出特定类别的内容,包括有害的、攻击性的或偏离主题的内容。 有关提高 Copilot对话 性能的详细信息,请参阅提高 Copilot对话 的性能。
Copilot对话 的用例
Copilot对话 可以在各种应用场景中提供编码帮助。
回答编码问题
你可以向 Copilot对话 寻求有关特定编码问题的帮助或解释,并以自然语言格式或代码片段格式接收响应。
Copilot对话生成的响应可能会使用模型的训练数据集、来自Bing的搜索结果,以及存储库中的代码,从而回答你的问题。
对于程序员来说,这是一个有用的工具,因为它可以为常见的编码任务和挑战提供指导和支持。
说明代码和建议改进
Copilot对话 可以通过生成代码功能和用途的自然语言说明来帮助解释所选代码。 如果想要了解代码的行为,这非常有用,对于需要了解代码工作原理的非技术利益干系人也非常有用。 例如,如果你在代码编辑器中选择函数或代码块,则 Copilot对话 可以生成代码功能以及代码如何适应整个系统的自然语言说明。 这可能包括函数的输入和输出参数、其依赖项及其在较大应用程序中的用途等信息。
Copilot对话 还可以建议对所选代码的潜在改进,例如改进错误和边缘案例的处理,或者更改逻辑流以使代码更易于阅读。
通过生成说明和建议相关文档,Copilot对话 可以帮助你了解所选代码,从而改进协作,提高软件开发效率。 但是,请务必注意,生成的说明和文档可能并不总是准确或完整的,因此你需要查看 Copilot对话 的输出,有时甚至需要更正。
代码修复建议
Copilot对话 可以通过根据错误或问题的上下文建议代码片段和解决方案来针对代码中的 bug 提供修复建议。 如果你正在努力确定 bug 的根本原因,或者需要有关修复 bug 的最佳方法的指导,这非常有用。 例如,如果你的代码生成错误消息或警告,Copilot对话 可以根据错误消息、代码的语法和周围的代码提供可能的修复建议。
Copilot对话 可以提供针对变量、控制结构或函数调用的更改建议,这些更改可能会解决问题并生成可合并到代码库中的代码片段。 但是,请务必注意,建议的修复可能并不总是最佳或完整的,因此你需要查看和测试建议。
规划编码任务
Copilot对话 可以读取 GitHub 议题,并对其进行汇总、回答问题或提出后续步骤。 如果你有一个漫长而复杂的问题,加上许多评论,并且希望快速理解这个问题或确定下一步措施,这会非常有用。
但是,请务必注意, Copilot对话 的回复和摘要可能并不总是准确或完整的,因此需要查看 Copilot对话 输出的准确性。
了解版本、讨论和提交
Copilot对话 可以帮助你找出特定版本中的更改,可以总结讨论中的信息,并且可以解释特定提交中的更改。 例如,如果你不熟悉某个项目,或者想要快速掌握讨论的大意,或者你需要处理其他人编写的代码,这将非常有用。 但请务必注意,Copilot对话 的发布、讨论和提交的摘要可能并不总是准确或完整的。
提升 Copilot对话 的性能
Copilot对话 可以支持广泛的实际应用,如 Q&A、代码生成、代码分析和代码修复,每种应用都有不同的性能指标和缓解策略。 若要增强性能并解决 Copilot对话 的某些限制,有多种可以采用的措施。 有关 Copilot对话 的局限性详细信息,请参阅 GitHub Copilot 聊天 的局限性。
使提示与主题相关
Copilot对话 旨在专门处理与编码相关的查询。 因此,将提示限制为编码问题或任务可以提高模型的输出质量。
将 Copilot对话 用作工具,而不是替代品
虽然 Copilot对话 是用于生成代码的强大工具,但请务必将其用作工具,而不用于替代人工编程。 应始终查看和测试 Copilot对话 生成的代码,以确保它符合你的要求,并且没有错误或安全问题。
使用安全编码和代码评审做法
虽然 Copilot对话 可以生成语法正确的代码,但它可能并不总是安全。 应始终遵循安全编码的最佳做法,例如避免硬编码密码或 SQL 注入漏洞,并遵循代码评审最佳做法,以应对 Copilot对话 的限制。
提供反馈
如果 在 GitHub 中Copilot聊天 遇到任何问题或限制,建议通过单击每个聊天响应下方的拇指向下图标来提供反馈。 这可以帮助开发人员改进该工具并解决任何问题或限制。
掌握最新动态
Copilot对话 是一项新技术,可能持续改进。 对于 在 GitHub 中使用 GitHub Copilot 聊天助手,你始终可以访问最新的产品体验。 应随时了解可能出现的任何新安全风险或最佳做法。
GitHub Copilot 聊天 的限制
根据代码库和输入数据等因素,在使用 Copilot对话 时,可能会体验到不同级别的性能。 以下信息旨在帮助你了解系统限制以及有关性能的关键概念,因为它们适用于 Copilot对话。
作用域受限
Copilot对话 已基于大量代码进行训练,但范围仍然有限,可能无法处理更复杂的代码结构或晦涩难懂的编程语言。 对于每种语言,收到的建议质量可能取决于该语言训练数据的数量和多样性。 例如,JavaScript 在公共存储库中表现良好,并且是 GitHub Copilot 最受支持的语言之一。 对于 Copilot对话 来说,在公共仓库中代表性较少的语言可能更具挑战性,更难提供帮助。 此外,Copilot对话 只能根据所编写代码的上下文建议代码,因此可能无法识别更大的设计或体系结构问题。
潜在偏见
Copilot 的训练数据(从现有代码存储库中提取)和大型语言模型收集的上下文(例如,必应搜索结果)可能包含该工具可能永久存在的偏差和错误。 此外,Copilot对话 可能偏向于某些编程语言或编码样式,这可能导致代码建议欠佳或不完整。
安全风险
Copilot对话 基于所编写代码的上下文生成代码,如果不谨慎使用,可能会暴露敏感信息或漏洞。 使用 Copilot对话 为安全敏感型应用程序生成代码时,应小心谨慎,并始终全面评审和测试生成的代码。
与公共代码匹配
Copilot对话 能够以概率方法生成新代码。 虽然它生成与训练集中的代码匹配的代码的概率很低,但 Copilot对话 建议可能包含一些与训练集中的代码匹配的代码片段。
如果禁用了与公共代码匹配的建议,则 Copilot对话 会利用筛选器来阻止其显示与在 GitHub 上的公共仓库中找到的代码匹配的代码。 但是,您应该始终采取与编写任何使用非自行创作材料的代码相同的预防措施,包括确保其适用性的相关措施。 这些预防措施包括严格的测试、IP 扫描和安全漏洞检查。
如果已启用与公共代码匹配的建议,则 Copilot对话 会在找到匹配代码时显示一条消息。 该消息包含指向 GitHub 上存储库的链接,这些存储库包含匹配的代码以及找到的任何许可证详细信息。 有关详细信息,请参阅 查找与 GitHub Copilot 建议匹配的公共代码。
代码不准确
Copilot对话 的其中一个限制是,它可能会生成看似有效的代码,但实际上该代码在语义或语法上可能不正确,或者可能无法准确反映开发人员的意图。 若要降低代码不准确的风险,应仔细评审和测试生成的代码,尤其是在处理关键或敏感应用程序时。 还应确保生成的代码遵循最佳做法和设计模式,并符合代码库的整体体系结构和样式。
对非编码主题的响应不准确
Copilot对话 并非旨在回答非编码问题,因此其响应在这些上下文中可能并不总是准确或有用的。 如果用户向 Copilot对话 询问非编码问题,则可能生成不相关或无意义的答案,或者可能仅指示无法提供有用的响应。
利用 Web 搜索回答问题
根据你提出的问题,GitHub Copilot 聊天 可以选择使用必应搜索来帮助回答你的问题。 Copilot 将使用必应来查询近期事件、新趋势或技术、高度特定的主题,或者在用户显式请求 Web 搜索时使用。 GitHub Enterprise 管理员可以为整个企业启用必应,也可以将此决定委托给组织管理员。 有关详细信息,请参阅“管理企业中 GitHub Copilot 的策略和功能”。
利用必应时,Copilot 将使用提示的内容和其他可用上下文来代表发送到必应搜索 API 生成必应搜索查询。 Copilot 将在其回复中提供一个指向搜索结果的链接。 发送到Bing的搜索查询受 Microsoft 隐私声明的约束。
在 GitHub Copilot
中使用自带密钥(BYOK)
当你在 GitHub Copilot 聊天 中使用自带密钥时,可以将聊天体验连接到支持提供商提供的大型语言模型,而不仅限于默认 Copilot 模型。 支持的提供商示例包括 Anthropic、AWS Bedrock、Google AI Studio、Microsoft Foundry、OpenAI、兼容 OpenAI 的提供商,以及 xAI。 你将所选提供商的 API 密钥直接添加到 Copilot 设置中。
BYOK 处于活动状态时:
-
**功能范围**:您选择的模型将在 数据变量.copilot.copilot_chat %} 中使用。 在代理模式下,BYOK 支持主要对话,但某些操作(如代码应用或其他工具调用)仍可能使用由 GitHub 托管的、针对这些任务优化的模型。 这些内置模型不会通过你的 BYOK 提供商运行。 -
**安全流程**:无论哪个提供程序处于活动状态,响应仍通过 GitHub的安全系统(包括内容筛选),然后才会向你显示结果。 -
**质量注意事项**:建议可能因所选提供商的优势和培训覆盖范围而异。 -
**数据处理**:使用 BYOK 时,提示和响应将传输到所选提供商,并可能受到该提供程序的数据保留和隐私策略的约束。 GitHub 暂时处理此数据进行安全筛选,但不会在会话持续时间之外保留 BYOK 对话内容。 -
**责任**:你负责以下事项:- 提供程序 API 密钥安全性
- 使用成本或配额
- 输出验证
- 评估所选模型是否满足安全性和质量要求
- 遵守您所选提供商的条款
- 确定所选模型是否符合适用法律
- 确保由人工对所有输出进行评审,然后再使用它们做出影响人员的决策。
-
**导出限制**:某些 AI 模型可能受到导出控件的约束。 验证所选提供商和模型是否有权在司法管辖区使用。
BYOK 使组织能够选择最符合需求的语言模型,同时受益于 GitHub的安全基础结构。 请注意,模型性能和安全特征依赖于提供程序。
后续步骤
有关如何使用 在 GitHub 中使用 GitHub Copilot 聊天助手 的详细信息,请参阅:
-
[AUTOTITLE](/enterprise-cloud@latest/copilot/github-copilot-chat/copilot-chat-in-github/using-github-copilot-chat-in-githubcom)
其他阅读材料
-
[AUTOTITLE](/free-pro-team@latest/site-policy/github-terms/github-copilot-pre-release-terms) -
[GitHub Copilot](https://copilot.github.trust.page/) 信任中心