关于 GitHub Copilot Chat
GitHub Copilot Chat 是一个聊天界面,让您可以与 GitHub Copilot 互动,在 GitHub 网站和受支持的 IDE 中询问并接收与编码相关问题的答案。该聊天界面提供编码信息和支持,无需您浏览文档或搜索在线论坛。有关详细信息,请参阅什么是 GitHub Copilot?。
GitHub Copilot Chat 可以回答广泛的编程相关问题,主题包括语法、编程概念、测试用例、调试等。GitHub Copilot Chat 的设计初衷并非回答非编程问题或提供编程领域以外的通用信息。
GitHub Copilot Chat 主要支持的语言是英语。
GitHub Copilot Chat 通过结合使用自然语言处理和机器学习来理解您的问题并为您提供答案。这个过程可以分解为几个步骤。
输入处理
来自用户的输入提示由 Copilot Chat 系统预处理,并结合上下文信息(例如,用户当前正在查看的存储库名称和用户打开的文件),然后发送给大语言模型。用户输入可以采用代码片段或纯文本的形式。
可以从用户创建的可选 .github/copilot-instructions.md 文件中自动向聊天提示添加额外的上下文信息。此附加信息不会显示在聊天中,但如果指令被发送到模型,该文件将作为聊天响应中的引用列出。用户可以在 Copilot 扩展设置中禁用此功能。
大语言模型将接收提示,收集额外的上下文(例如存储在 GitHub 上的存储库数据),并根据提示提供响应。该系统仅用于回答与编程相关的问题。
语言模型分析
预处理后的提示随后传递给 Copilot Chat 语言模型,该模型是一个经过大规模文本数据训练的神经网络。语言模型会对输入提示进行分析。
响应生成
语言模型根据对输入提示的分析以及提供给它的上下文生成响应。语言模型可以收集额外的上下文并根据提示提供响应。这种响应可以采用生成的代码、代码建议或对现有代码的解释等形式。
当您使用 @github 聊天参与者时,Copilot Chat 将能够从您存储在 GitHub 上的代码和 Bing 搜索结果(如果您的管理员已启用)中收集上下文。
输出格式化
Copilot Chat 生成的响应会被格式化并呈现给用户。Copilot Chat 可能会使用语法高亮、缩进和其他格式化功能来增加生成的响应的清晰度。根据用户问题的类型,还可能提供模型在生成响应时使用的上下文链接,例如源代码文件或文档。
GitHub Copilot Chat 旨在为您的问题提供最相关的答案。但是,它并不总是能提供您正在寻找的答案。Copilot Chat 用户负责审查和验证系统生成的响应,以确保其准确且合适。此外,作为我们产品开发过程的一部分,我们会进行红队演练,以了解并提高 Copilot Chat 的安全性。输入提示和输出完成会经过内容过滤器。内容过滤系统会检测并防止特定类别内容的输出,包括有害、冒犯或离题的内容。有关提高 GitHub Copilot Chat 性能的更多信息,请参阅提高 GitHub Copilot Chat 的性能。
利用网络搜索来回答问题
当您使用 @github 聊天参与者时,如果您的管理员已启用,GitHub Copilot Chat 可以使用 Bing 搜索来帮助回答您的问题。
您的 GitHub Enterprise 管理员可以为整个企业启用 Bing,也可以将此决定委派给组织管理员。有关详细信息,请参阅在您的企业中强制执行 GitHub Copilot 策略。
在利用 Bing 时,Copilot 将使用您的提示内容以及其他可用的上下文,代表您生成 Bing 搜索查询并发送到 Bing 搜索 API。Copilot 会在响应中提供搜索结果的链接。发送到 Bing 的搜索查询受 Microsoft 隐私声明的约束。
在 GitHub Copilot 中使用自带密钥 (BYOK)
当您在 GitHub Copilot Chat 中使用自带密钥时,您可以将聊天体验连接到默认 Copilot 模型以外的受支持提供商的大语言模型。受支持的提供商示例包括 Anthropic、AWS Bedrock、Google AI Studio、Microsoft Foundry、OpenAI、兼容 OpenAI 的提供商以及 xAI。您可以直接在 Copilot 设置中添加所选提供商的 API 密钥。
当 BYOK 激活时
- 功能范围:您选择的模型用于 GitHub Copilot Chat 中。在 Agent 模式下,BYOK 为主要对话提供动力,但某些操作(如代码应用或其他工具调用)可能仍使用针对这些任务优化的 GitHub 托管模型。这些内置模型不通过您的 BYOK 提供商运行。
- 安全流程:无论哪个提供商处于激活状态,响应在显示给您之前仍会通过 GitHub 的安全系统,包括内容过滤。
- 质量考量:建议可能会根据您选择的提供商的长处和培训覆盖范围而有所不同。
- 数据处理:使用 BYOK 时,您的提示和响应将传输到您选择的提供商,并可能受该提供商的数据保留和隐私政策的约束。GitHub 暂时处理这些数据以进行安全过滤,但不会在会话持续时间之外保留 BYOK 对话内容。
- 您的责任:您负责以下事项
- 提供商 API 密钥的安全性
- 使用成本或配额
- 输出验证
- 评估您选择的模型是否符合您的安全和质量要求
- 遵守您选择的提供商的条款
- 确定您选择的模型是否符合适用法律
- 确保在将任何输出用于做出影响人的决策之前,由人工进行审查
- 出口限制:某些 AI 模型可能会受到出口管制。请确认您选择的提供商和模型在您的司法管辖区内已被授权使用。
BYOK 使您的组织能够选择最适合您需求的语言模型,同时受益于 GitHub 的安全基础设施。请注意,模型的性能和安全特性取决于提供商。
GitHub Copilot Chat 的用例
GitHub 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 可以根据错误消息、代码语法和周围的代码建议可能的修复方案。
Copilot Chat 可以建议对变量、控制结构或函数调用进行更改,这些更改可能会解决问题并生成可以合并到代码库中的代码片段。但是,需要注意的是,建议的修复方案可能并不总是最佳或完整的,因此您需要审查和测试这些建议。
回答编码问题
您可以就特定的编码问题向 Copilot Chat 寻求帮助或澄清,并接收自然语言格式或代码片段格式的回复。
Copilot Chat 生成的响应将使用模型的训练数据集来回答您的问题。
当您使用 @github 聊天参与者时,生成的响应可能还会使用来自 Bing 的搜索结果以及您存储库中的代码。
对于程序员来说,这可能是一个有用的工具,因为它可以为常见的编码任务和挑战提供指导和支持。
提高 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,您将始终可以访问最新的产品体验。如果您启用了自动更新,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 公共存储库中代码匹配的代码。但是,对于任何使用非独立原创材料编写的代码,您都应采取相同的预防措施,包括确保其适用性的预防措施。这些措施包括严格测试、知识产权扫描和安全漏洞检查。在审查生成代码之前,您应确保 IDE 或编辑器不会自动编译或运行这些代码。
如果您启用了与公共代码匹配的建议,那么在找到匹配代码时,Copilot Chat 会显示一条消息。该消息包含一个链接,允许您在 VS Code 编辑器中显示匹配代码的详细信息以及找到的任何许可证详细信息。有关详细信息,请参阅查找与 GitHub Copilot 建议匹配的公共代码。
Copilot Chat 利用过滤器拦截与 GitHub 存储库公共代码的匹配,但对于任何使用非独立原创材料编写的代码,您都应采取相同的预防措施,包括确保其适用性的预防措施。这些措施包括严格测试、知识产权扫描和安全漏洞检查。在审查生成代码之前,您应确保 IDE 或编辑器不会自动编译或运行这些代码。
Copilot Chat 利用过滤器拦截与 GitHub 存储库公共代码的匹配,但对于任何使用非独立原创材料编写的代码,您都应采取相同的预防措施,包括确保其适用性的预防措施。这些措施包括严格测试、知识产权扫描和安全漏洞检查。在审查生成代码之前,您应确保 IDE 或编辑器不会自动编译或运行这些代码。
代码不准确
Copilot Chat 的局限性之一是它可能会生成看似有效但实际上在语义或语法上不正确,或者可能无法准确反映开发者意图的代码。为了减轻不准确代码的风险,您应仔细审查和测试生成的代码,尤其是在处理关键或敏感应用程序时。您还应确保生成的代码遵循最佳实践和设计模式,并符合代码库的整体架构和风格。
非编程主题的回复不准确
Copilot Chat 并非设计用于回答非编程问题,因此其在这些语境下的回答可能并不总是准确或有帮助的。如果用户向 Copilot Chat 提问非编程问题,它可能会生成无关或无意义的回答,或者仅仅表示它无法提供有用的回复。
后续步骤
有关如何使用 GitHub Copilot Chat 的详细信息,请参阅
延伸阅读
关于 GitHub Copilot Chat
GitHub Copilot Chat 是一个聊天界面,让您可以与 GitHub Copilot 互动,在 GitHub 网站和受支持的 IDE 中询问并接收与编码相关问题的答案。该聊天界面提供编码信息和支持,无需您浏览文档或搜索在线论坛。有关详细信息,请参阅什么是 GitHub Copilot?。
GitHub Copilot Chat 可以回答广泛的编程相关问题,主题包括语法、编程概念、测试用例、调试等。GitHub Copilot Chat 的设计初衷并非回答非编程问题或提供编程领域以外的通用信息。
GitHub Copilot Chat 主要支持的语言是英语。
GitHub Copilot Chat 通过结合使用自然语言处理和机器学习来理解您的问题并为您提供答案。这个过程可以分解为几个步骤。
输入处理
来自用户的输入提示由 Copilot Chat 系统预处理,并结合上下文信息(例如,用户当前正在查看的存储库名称和用户打开的文件),然后发送给大语言模型。用户输入可以采用代码片段或纯文本的形式。
可以从用户创建的可选 .github/copilot-instructions.md 文件中自动向聊天提示添加额外的上下文信息。此附加信息不会显示在聊天中,但如果指令被发送到模型,该文件将作为聊天响应中的引用列出。用户可以在 Copilot 扩展设置中禁用此功能。
大语言模型将接收提示,收集额外的上下文(例如存储在 GitHub 上的存储库数据),并根据提示提供响应。该系统仅用于回答与编程相关的问题。
语言模型分析
预处理后的提示随后传递给 Copilot Chat 语言模型,该模型是一个经过大规模文本数据训练的神经网络。语言模型会对输入提示进行分析。
响应生成
语言模型根据对输入提示的分析以及提供给它的上下文生成响应。语言模型可以收集额外的上下文并根据提示提供响应。这种响应可以采用生成的代码、代码建议或对现有代码的解释等形式。
当您使用 @github 聊天参与者时,Copilot Chat 将能够从您存储在 GitHub 上的代码和 Bing 搜索结果(如果您的管理员已启用)中收集上下文。
输出格式化
Copilot Chat 生成的响应会被格式化并呈现给用户。Copilot Chat 可能会使用语法高亮、缩进和其他格式化功能来增加生成的响应的清晰度。根据用户问题的类型,还可能提供模型在生成响应时使用的上下文链接,例如源代码文件或文档。
GitHub Copilot Chat 旨在为您的问题提供最相关的答案。但是,它并不总是能提供您正在寻找的答案。Copilot Chat 用户负责审查和验证系统生成的响应,以确保其准确且合适。此外,作为我们产品开发过程的一部分,我们会进行红队演练,以了解并提高 Copilot Chat 的安全性。输入提示和输出完成会经过内容过滤器。内容过滤系统会检测并防止特定类别内容的输出,包括有害、冒犯或离题的内容。有关提高 GitHub Copilot Chat 性能的更多信息,请参阅提高 GitHub Copilot Chat 的性能。
利用网络搜索来回答问题
当您使用 @github 聊天参与者时,如果您的管理员已启用,GitHub Copilot Chat 可以使用 Bing 搜索来帮助回答您的问题。
您的 GitHub Enterprise 管理员可以为整个企业启用 Bing,也可以将此决定委派给组织管理员。有关详细信息,请参阅在您的企业中强制执行 GitHub Copilot 策略。
在利用 Bing 时,Copilot 将使用您的提示内容以及其他可用的上下文,代表您生成 Bing 搜索查询并发送到 Bing 搜索 API。Copilot 会在响应中提供搜索结果的链接。发送到 Bing 的搜索查询受 Microsoft 隐私声明的约束。
在 GitHub Copilot 中使用自带密钥 (BYOK)
当您在 GitHub Copilot Chat 中使用自带密钥时,您可以将聊天体验连接到默认 Copilot 模型以外的受支持提供商的大语言模型。受支持的提供商示例包括 Anthropic、AWS Bedrock、Google AI Studio、Microsoft Foundry、OpenAI、兼容 OpenAI 的提供商以及 xAI。您可以直接在 Copilot 设置中添加所选提供商的 API 密钥。
当 BYOK 激活时
- 功能范围:您选择的模型用于 GitHub Copilot Chat 中。在 Agent 模式下,BYOK 为主要对话提供动力,但某些操作(如代码应用或其他工具调用)可能仍使用针对这些任务优化的 GitHub 托管模型。这些内置模型不通过您的 BYOK 提供商运行。
- 安全流程:无论哪个提供商处于激活状态,响应在显示给您之前仍会通过 GitHub 的安全系统,包括内容过滤。
- 质量考量:建议可能会根据您选择的提供商的长处和培训覆盖范围而有所不同。
- 数据处理:使用 BYOK 时,您的提示和响应将传输到您选择的提供商,并可能受该提供商的数据保留和隐私政策的约束。GitHub 暂时处理这些数据以进行安全过滤,但不会在会话持续时间之外保留 BYOK 对话内容。
- 您的责任:您负责以下事项
- 提供商 API 密钥的安全性
- 使用成本或配额
- 输出验证
- 评估您选择的模型是否符合您的安全和质量要求
- 遵守您选择的提供商的条款
- 确定您选择的模型是否符合适用法律
- 确保在将任何输出用于做出影响人的决策之前,由人工进行审查
- 出口限制:某些 AI 模型可能会受到出口管制。请确认您选择的提供商和模型在您的司法管辖区内已被授权使用。
BYOK 使您的组织能够选择最适合您需求的语言模型,同时受益于 GitHub 的安全基础设施。请注意,模型的性能和安全特性取决于提供商。
GitHub Copilot Chat 的用例
GitHub 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 可以根据错误消息、代码语法和周围的代码建议可能的修复方案。
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,您将始终可以访问最新的产品体验。如果您启用了自动更新,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 公共存储库中代码匹配的代码。但是,对于任何使用非独立原创材料编写的代码,您都应采取相同的预防措施,包括确保其适用性的预防措施。这些措施包括严格测试、知识产权扫描和安全漏洞检查。在审查生成代码之前,您应确保 IDE 或编辑器不会自动编译或运行这些代码。
如果您启用了与公共代码匹配的建议,那么在找到匹配代码时,Copilot Chat 会显示一条消息。该消息包含一个链接,允许您在 VS Code 编辑器中显示匹配代码的详细信息以及找到的任何许可证详细信息。有关详细信息,请参阅查找与 GitHub Copilot 建议匹配的公共代码。
Copilot Chat 利用过滤器拦截与 GitHub 存储库公共代码的匹配,但对于任何使用非独立原创材料编写的代码,您都应采取相同的预防措施,包括确保其适用性的预防措施。这些措施包括严格测试、知识产权扫描和安全漏洞检查。在审查生成代码之前,您应确保 IDE 或编辑器不会自动编译或运行这些代码。
Copilot Chat 利用过滤器拦截与 GitHub 存储库公共代码的匹配,但对于任何使用非独立原创材料编写的代码,您都应采取相同的预防措施,包括确保其适用性的预防措施。这些措施包括严格测试、知识产权扫描和安全漏洞检查。在审查生成代码之前,您应确保 IDE 或编辑器不会自动编译或运行这些代码。
代码不准确
Copilot Chat 的局限性之一是它可能会生成看似有效但实际上在语义或语法上不正确,或者可能无法准确反映开发者意图的代码。为了减轻不准确代码的风险,您应仔细审查和测试生成的代码,尤其是在处理关键或敏感应用程序时。您还应确保生成的代码遵循最佳实践和设计模式,并符合代码库的整体架构和风格。
非编程主题的回复不准确
Copilot Chat 并非设计用于回答非编程问题,因此其在这些语境下的回答可能并不总是准确或有帮助的。如果用户向 Copilot Chat 提问非编程问题,它可能会生成无关或无意义的回答,或者仅仅表示它无法提供有用的回复。
后续步骤
有关如何使用 GitHub Copilot Chat 的详细信息,请参阅
延伸阅读
关于 GitHub Copilot Chat
GitHub Copilot Chat 是一个聊天界面,让您可以与 GitHub Copilot 互动,在 GitHub 网站和受支持的 IDE 中询问并接收与编码相关问题的答案。该聊天界面提供编码信息和支持,无需您浏览文档或搜索在线论坛。有关详细信息,请参阅什么是 GitHub Copilot?。
GitHub Copilot Chat 可以回答广泛的编程相关问题,主题包括语法、编程概念、测试用例、调试等。GitHub Copilot Chat 的设计初衷并非回答非编程问题或提供编程领域以外的通用信息。
GitHub Copilot Chat 主要支持的语言是英语。
GitHub Copilot Chat 通过结合使用自然语言处理和机器学习来理解您的问题并为您提供答案。这个过程可以分解为几个步骤。
输入处理
来自用户的输入提示由 Copilot Chat 系统预处理,并结合上下文信息(例如,用户当前正在查看的存储库名称和用户打开的文件),然后发送给大语言模型。用户输入可以采用代码片段或纯文本的形式。
大语言模型将接收提示,收集额外的上下文(例如存储在 GitHub 上的存储库数据),并根据提示提供响应。该系统仅用于回答与编程相关的问题。
语言模型分析
预处理后的提示随后传递给 Copilot Chat 语言模型,该模型是一个经过大规模文本数据训练的神经网络。语言模型会对输入提示进行分析。
响应生成
语言模型根据对输入提示的分析以及提供给它的上下文生成响应。语言模型可以收集额外的上下文并根据提示提供响应。这种响应可以采用生成的代码、代码建议或对现有代码的解释等形式。
输出格式化
Copilot Chat 生成的响应会被格式化并呈现给用户。Copilot Chat 可能会使用语法高亮、缩进和其他格式化功能来增加生成的响应的清晰度。根据用户问题的类型,还可能提供模型在生成响应时使用的上下文链接,例如源代码文件或文档。
GitHub Copilot Chat 旨在为您的问题提供最相关的答案。但是,它并不总是能提供您正在寻找的答案。Copilot Chat 用户负责审查和验证系统生成的响应,以确保其准确且合适。此外,作为我们产品开发过程的一部分,我们会进行红队演练,以了解并提高 Copilot Chat 的安全性。输入提示和输出完成会经过内容过滤器。内容过滤系统会检测并防止特定类别内容的输出,包括有害、冒犯或离题的内容。有关提高 GitHub Copilot Chat 性能的更多信息,请参阅提高 GitHub Copilot Chat 的性能。
在 GitHub Copilot 中使用自带密钥 (BYOK)
当您在 GitHub Copilot Chat 中使用自带密钥时,您可以将聊天体验连接到默认 Copilot 模型以外的受支持提供商的大语言模型。受支持的提供商示例包括 Anthropic、AWS Bedrock、Google AI Studio、Microsoft Foundry、OpenAI、兼容 OpenAI 的提供商以及 xAI。您可以直接在 Copilot 设置中添加所选提供商的 API 密钥。
当 BYOK 激活时
- 功能范围:您选择的模型用于 GitHub Copilot Chat 中。在 Agent 模式下,BYOK 为主要对话提供动力,但某些操作(如代码应用或其他工具调用)可能仍使用针对这些任务优化的 GitHub 托管模型。这些内置模型不通过您的 BYOK 提供商运行。
- 安全流程:无论哪个提供商处于激活状态,响应在显示给您之前仍会通过 GitHub 的安全系统,包括内容过滤。
- 质量考量:建议可能会根据您选择的提供商的长处和培训覆盖范围而有所不同。
- 数据处理:使用 BYOK 时,您的提示和响应将传输到您选择的提供商,并可能受该提供商的数据保留和隐私政策的约束。GitHub 暂时处理这些数据以进行安全过滤,但不会在会话持续时间之外保留 BYOK 对话内容。
- 您的责任:您负责以下事项
- 提供商 API 密钥的安全性
- 使用成本或配额
- 输出验证
- 评估您选择的模型是否符合您的安全和质量要求
- 遵守您选择的提供商的条款
- 确定您选择的模型是否符合适用法律
- 确保在将任何输出用于做出影响人的决策之前,由人工进行审查
- 出口限制:某些 AI 模型可能会受到出口管制。请确认您选择的提供商和模型在您的司法管辖区内已被授权使用。
BYOK 使您的组织能够选择最适合您需求的语言模型,同时受益于 GitHub 的安全基础设施。请注意,模型的性能和安全特性取决于提供商。
GitHub Copilot Chat 的用例
GitHub 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 可以根据错误消息、代码语法和周围的代码建议可能的修复方案。
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,您将始终可以访问最新的产品体验。如果您启用了自动更新,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 公共存储库中代码匹配的代码。但是,对于任何使用非独立原创材料编写的代码,您都应采取相同的预防措施,包括确保其适用性的预防措施。这些措施包括严格测试、知识产权扫描和安全漏洞检查。在审查生成代码之前,您应确保 IDE 或编辑器不会自动编译或运行这些代码。
如果您启用了与公共代码匹配的建议,那么在找到匹配代码时,Copilot Chat 会显示一条消息。该消息包含一个链接,允许您在 VS Code 编辑器中显示匹配代码的详细信息以及找到的任何许可证详细信息。有关详细信息,请参阅查找与 GitHub Copilot 建议匹配的公共代码。
Copilot Chat 利用过滤器拦截与 GitHub 存储库公共代码的匹配,但对于任何使用非独立原创材料编写的代码,您都应采取相同的预防措施,包括确保其适用性的预防措施。这些措施包括严格测试、知识产权扫描和安全漏洞检查。在审查生成代码之前,您应确保 IDE 或编辑器不会自动编译或运行这些代码。
Copilot Chat 利用过滤器拦截与 GitHub 存储库公共代码的匹配,但对于任何使用非独立原创材料编写的代码,您都应采取相同的预防措施,包括确保其适用性的预防措施。这些措施包括严格测试、知识产权扫描和安全漏洞检查。在审查生成代码之前,您应确保 IDE 或编辑器不会自动编译或运行这些代码。
代码不准确
Copilot Chat 的局限性之一是它可能会生成看似有效但实际上在语义或语法上不正确,或者可能无法准确反映开发者意图的代码。为了减轻不准确代码的风险,您应仔细审查和测试生成的代码,尤其是在处理关键或敏感应用程序时。您还应确保生成的代码遵循最佳实践和设计模式,并符合代码库的整体架构和风格。
非编程主题的回复不准确
Copilot Chat 并非设计用于回答非编程问题,因此其在这些语境下的回答可能并不总是准确或有帮助的。如果用户向 Copilot Chat 提问非编程问题,它可能会生成无关或无意义的回答,或者仅仅表示它无法提供有用的回复。
后续步骤
有关如何使用 GitHub Copilot Chat 的详细信息,请参阅
延伸阅读
关于 GitHub Copilot Chat
GitHub Copilot Chat 是一个聊天界面,让您可以与 GitHub Copilot 互动,在 GitHub 网站和受支持的 IDE 中询问并接收与编码相关问题的答案。该聊天界面提供编码信息和支持,无需您浏览文档或搜索在线论坛。有关详细信息,请参阅什么是 GitHub Copilot?。
GitHub Copilot Chat 可以回答广泛的编程相关问题,主题包括语法、编程概念、测试用例、调试等。GitHub Copilot Chat 的设计初衷并非回答非编程问题或提供编程领域以外的通用信息。
GitHub Copilot Chat 主要支持的语言是英语。
GitHub Copilot Chat 通过结合使用自然语言处理和机器学习来理解您的问题并为您提供答案。这个过程可以分解为几个步骤。
输入处理
来自用户的输入提示由 Copilot Chat 系统预处理,并结合上下文信息(例如,用户当前正在查看的存储库名称和用户打开的文件),然后发送给大语言模型。用户输入可以采用代码片段或纯文本的形式。
大语言模型将接收提示,收集额外的上下文(例如存储在 GitHub 上的存储库数据),并根据提示提供响应。该系统仅用于回答与编程相关的问题。
语言模型分析
预处理后的提示随后传递给 Copilot Chat 语言模型,该模型是一个经过大规模文本数据训练的神经网络。语言模型会对输入提示进行分析。
响应生成
语言模型根据对输入提示的分析以及提供给它的上下文生成响应。语言模型可以收集额外的上下文并根据提示提供响应。这种响应可以采用生成的代码、代码建议或对现有代码的解释等形式。
输出格式化
Copilot Chat 生成的响应会被格式化并呈现给用户。Copilot Chat 可能会使用语法高亮、缩进和其他格式化功能来增加生成的响应的清晰度。根据用户问题的类型,还可能提供模型在生成响应时使用的上下文链接,例如源代码文件或文档。
GitHub Copilot Chat 旨在为您的问题提供最相关的答案。但是,它并不总是能提供您正在寻找的答案。Copilot Chat 用户负责审查和验证系统生成的响应,以确保其准确且合适。此外,作为我们产品开发过程的一部分,我们会进行红队演练,以了解并提高 Copilot Chat 的安全性。输入提示和输出完成会经过内容过滤器。内容过滤系统会检测并防止特定类别内容的输出,包括有害、冒犯或离题的内容。有关提高 GitHub Copilot Chat 性能的更多信息,请参阅提高 GitHub Copilot Chat 的性能。
在 GitHub Copilot 中使用自带密钥 (BYOK)
当您在 GitHub Copilot Chat 中使用自带密钥时,您可以将聊天体验连接到默认 Copilot 模型以外的受支持提供商的大语言模型。受支持的提供商示例包括 Anthropic、AWS Bedrock、Google AI Studio、Microsoft Foundry、OpenAI、兼容 OpenAI 的提供商以及 xAI。您可以直接在 Copilot 设置中添加所选提供商的 API 密钥。
当 BYOK 激活时
- 功能范围:您选择的模型用于 GitHub Copilot Chat 中。在 Agent 模式下,BYOK 为主要对话提供动力,但某些操作(如代码应用或其他工具调用)可能仍使用针对这些任务优化的 GitHub 托管模型。这些内置模型不通过您的 BYOK 提供商运行。
- 安全流程:无论哪个提供商处于激活状态,响应在显示给您之前仍会通过 GitHub 的安全系统,包括内容过滤。
- 质量考量:建议可能会根据您选择的提供商的长处和培训覆盖范围而有所不同。
- 数据处理:使用 BYOK 时,您的提示和响应将传输到您选择的提供商,并可能受该提供商的数据保留和隐私政策的约束。GitHub 暂时处理这些数据以进行安全过滤,但不会在会话持续时间之外保留 BYOK 对话内容。
- 您的责任:您负责以下事项
- 提供商 API 密钥的安全性
- 使用成本或配额
- 输出验证
- 评估您选择的模型是否符合您的安全和质量要求
- 遵守您选择的提供商的条款
- 确定您选择的模型是否符合适用法律
- 确保在将任何输出用于做出影响人的决策之前,由人工进行审查
- 出口限制:某些 AI 模型可能会受到出口管制。请确认您选择的提供商和模型在您的司法管辖区内已被授权使用。
BYOK 使您的组织能够选择最适合您需求的语言模型,同时受益于 GitHub 的安全基础设施。请注意,模型的性能和安全特性取决于提供商。
GitHub Copilot Chat 的用例
GitHub Copilot Chat 可以在各种场景中提供编码辅助。
生成单元测试用例
Copilot Chat 可以根据编辑器中打开的代码或您在编辑器中突出显示的代码片段生成代码片段,从而帮助您编写单元测试用例。这可以帮助您在编写测试用例时减少在重复性任务上花费的时间。例如,如果您正在为特定函数编写测试用例,您可以使用 Copilot Chat 根据函数的签名和主体建议可能的输入参数和预期输出值。Copilot Chat 还可以根据代码的上下文和语义建议确保函数正常运行的断言。
Copilot Chat 还可以帮助您针对难以手动识别的边缘情况和边界条件编写测试用例。例如,Copilot Chat 可以建议错误处理、空值或意外输入类型的测试用例,帮助您确保代码的健壮性和弹性。但是,需要注意的是,生成的测试用例可能无法涵盖所有可能的场景,手动测试和代码审查对于确保代码质量仍然是必要的。有关生成单元测试用例的更多信息,请参阅向 GitHub Copilot Chat 询问有关您的代码的问题。
解释代码并建议改进
Copilot Chat 可以通过生成对代码功能和用途的自然语言描述来帮助解释文件中的代码。如果您想了解代码的行为,或者非技术利益相关者需要了解代码的工作方式,这将非常有用。例如,您可以要求 Copilot 解释当前显示文件中的命名函数,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 是一项新技术,很可能会随着时间的推移而演变。您应该随时了解该工具的任何更新或更改,以及可能出现的任何新安全风险或最佳实践。Visual Studio Code、Visual Studio 和 JetBrains 系列 IDE 默认启用自动扩展更新。对于 GitHub 中的 GitHub Copilot Chat,您将始终可以访问最新的产品体验。如果您启用了自动更新,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 公共存储库中代码匹配的代码。但是,对于任何使用非独立原创材料编写的代码,您都应采取相同的预防措施,包括确保其适用性的预防措施。这些措施包括严格测试、知识产权扫描和安全漏洞检查。在审查生成代码之前,您应确保 IDE 或编辑器不会自动编译或运行这些代码。
如果您启用了与公共代码匹配的建议,那么在找到匹配代码时,Copilot Chat 会显示一条消息。该消息包含一个链接,允许您在 VS Code 编辑器中显示匹配代码的详细信息以及找到的任何许可证详细信息。有关详细信息,请参阅查找与 GitHub Copilot 建议匹配的公共代码。
Copilot Chat 利用过滤器拦截与 GitHub 存储库公共代码的匹配,但对于任何使用非独立原创材料编写的代码,您都应采取相同的预防措施,包括确保其适用性的预防措施。这些措施包括严格测试、知识产权扫描和安全漏洞检查。在审查生成代码之前,您应确保 IDE 或编辑器不会自动编译或运行这些代码。
Copilot Chat 利用过滤器拦截与 GitHub 存储库公共代码的匹配,但对于任何使用非独立原创材料编写的代码,您都应采取相同的预防措施,包括确保其适用性的预防措施。这些措施包括严格测试、知识产权扫描和安全漏洞检查。在审查生成代码之前,您应确保 IDE 或编辑器不会自动编译或运行这些代码。
代码不准确
Copilot Chat 的局限性之一是它可能会生成看似有效但实际上在语义或语法上不正确,或者可能无法准确反映开发者意图的代码。为了减轻不准确代码的风险,您应仔细审查和测试生成的代码,尤其是在处理关键或敏感应用程序时。您还应确保生成的代码遵循最佳实践和设计模式,并符合代码库的整体架构和风格。
非编程主题的回复不准确
Copilot Chat 并非设计用于回答非编程问题,因此其在这些语境下的回答可能并不总是准确或有帮助的。如果用户向 Copilot Chat 提问非编程问题,它可能会生成无关或无意义的回答,或者仅仅表示它无法提供有用的回复。
后续步骤
有关如何使用 GitHub Copilot Chat 的详细信息,请参阅