技术干货

Copilot 工作区:它是什么,它如何工作,为什么它很重要

2024-07-26

By Denis Kuria

Copilot 工作区:它是什么,它如何工作,为什么它很重要

在最近一次非结构化数据聚会的演讲中,我们听到了 GitHub Next 的高级研究总监 Idan Gazit 和高级研究工程师 Cole Bemis 的分享。他们介绍了他们的 Copilot 工作区,这是一个新的面向任务的开发环境,建立在 GitHub Copilot 之上。

这个开发环境增强了我们如何利用生成性 AI 模型,因为现在我们可以超越简单的代码建议,实现整个功能的实现。在接下来的部分中,让我们探索这个 Copilot 工作区以及它如何帮助我们构建和维护 AI 应用程序。

在 YouTube 上观看演讲的回放。

**什么是 GitHub Copilot 工作区?**

GitHub Copilot 工作区是一个工具,旨在将生成性 AI 直接集成到编码环境中。它允许我们使用自然语言对话和提示进行头脑风暴、规划、构建、测试和运行代码。它旨在帮助我们执行诸如修复错误、实现功能等任务。

GitHub Copilot 工作区由一个生成模型驱动,这在与它交互时可能会带来一些挑战,就像你与生成模型的交互一样。一个常见的挑战是如何让模型提供响应,在这种情况下,是建议,而不会完全偏离轨道。

GitHub Next 团队通过在给定任务和建议代码之间实施引导点来解决这个挑战。它们允许开发人员通过告诉它何时误解了我们的请求或错过了一些边缘情况来引导模型。让我们来看一下 Copilot 工作区遵循的流程。

**任务到规范到计划到代码**

Copilot 工作区从任务创建开始,然后流入规范、计划和编码。

图 1 - 任务到规范到计划到代码的工作流程

以下是每个步骤的分解:

**任务创建:**工作流程从任务开始,这可能是一个 GitHub 问题、拉取请求,或者是一般的功能请求或想法。这是初始提示或您的目标。

**规范:**Copilot 工作区根据任务生成一个高层级的规范或大纲。它利用对代码库、问题评论和其他上下文的理解来建议一个规范。

**计划:**然后,Copilot 工作区将规范转化为详细计划。该计划概述了实现解决方案所需的逐步过程,包括任何必要的代码更改、测试和其他操作。然后,计划呈现给您以供验证。

**编码:**一旦您对计划满意,Copilot 工作区生成实际代码以实现解决方案。它使用计划作为指南,利用对代码库和编程语言的理解来编写必要的代码。

没有这些引导点,就像闭上眼睛希望击中目标一样。工作流程中的每个步骤都是可编辑的,并允许您收集或改进内容。

**展示 Copilot 工作区如何工作的实用演示**

让我们看一个实际例子,以更好地理解 Copilot 工作区的工作流程。由于 Copilot 处于技术审查阶段,不是每个人都可用,我们将使用在官方发布时展示的屏幕截图。

让我们从 GitHub 问题开始。这是我们希望 Copilot 工作区与我们一起工作的任务。在这种情况下,我们想要为我们的游戏添加一个 AI 玩家,以便它不总是需要两个人。AI 玩家应该能够在 95% 的时间内成功阻挡人类玩家,使游戏具有挑战性但仍然可以玩。一旦你点击“在工作区中打开”,工作流程将被触发。

图 2 - GitHub AI 玩家选项问题

一旦触发,Copilot 工作区将问题视为任务,并生成规范或大纲。它查看当前的代码库,并验证没有 AI 玩家。然后,它提出将允许游戏的未来状态拥有 AI 玩家的修改。您可以点击建议并编辑它以满足您的期望。

图 3 - Copilot 工作区工作流程规范步骤

一旦您对大纲满意,Copilot 工作区生成实现它的计划。计划是更改 index.jsx 和 style.css 文件以纳入新的 AI 玩家功能。Copilot 工作区列出了它将在每个文件中进行的所有更改,以实现规范。您可以在这个阶段编辑计划或添加项目。

图 4 - Copilot 工作区工作流程计划步骤

在您审查并满意计划后,下一步是实施计划的解决方案。这涉及到将建议的代码写入建议的文件。Copilot 工作区显示了更改的文件。您可以在显示时直接编辑和修改代码。

图 5 - Copilot 工作区工作流程实施步骤

一旦您对代码满意,您可以打开实时预览,看看游戏的外观。在 Copilot 工作区环境中,内置终端使您能够在不切换到单独的终端或环境的情况下验证和测试您的代码。如果您对新功能满意,在这个案例中,是 AI 玩家,下一步是打开一个拉取请求。

图 6 - Copilot 工作区工作流程创建拉取请求步骤

这一步使您或您的团队能够在合并代码之前最后一次审查所做的更改。这种方法向我们展示了 Copilot 工作区不会取代开发人员,而是帮助补充他们,因为在整个过程中需要验证。

**使用 GitHub Copilot 工作区和 Milvus 简化 RAG 构建**

GitHub Copilot 工作区通过使用生成性 AI 允许任务到代码的开发工作流程,从而提高生产力。这个 Copilot 工作区使构建复杂的应用程序变得更加容易和高效。

一个很好的例子是检索增强生成(RAG)。这是一种高级技术,旨在通过为大型语言模型(LLM)提供外部知识来解决 LLM 的幻觉问题。RAG 包括两个关键组件:一个使用像 Milvus 或 Zilliz Cloud(托管的 Milvus)这样的向量数据库和嵌入模型构建的检索器,以及一个 LLM。

构建 RAG 应用程序是复杂的。然而,有了 Copilot 工作区,这类任务变得更加流畅。

让我们看看一个 RAG 任务——使一个单语言应用程序多语言化——看看这个工作场所如何提供帮助。

您在应用程序上有一个 RAG 代码,它目前是单语言的,由 Milvus 向量数据库驱动。您希望应用程序使用 Milvus 支持多语言的嵌入模型,如 BGE-M3,来支持多种语言。您可以指示 Copilot 工作区实现此功能。

**使用 Copilot 工作区实现**

以下是如何利用 Copilot 工作区实现此功能的步骤:

**任务创建:**您首先创建一个 GitHub 问题,使应用程序多语言化。任务是将(BGE-M3)多语言模型集成到现有的 RAG 系统中。

**规范:**Copilot 工作区分析任务并生成一个高层级的规范。它确定需要更新数据处理管道以处理多种语言,并修改 RAG 系统以使用 BGE-M3 支持多语言。

**计划:**然后工作区生成一个详细计划。这包括以下步骤:

- 更新数据摄取过程以包括多语言数据。

- 修改现有的 Milvus 设置以支持 BGE-M3。

- 调整 RAG 系统以利用 BGE-M3 的多语言能力。

- 测试系统以确保它能够在多种语言中工作。

**编码:**根据验证的计划,Copilot 工作区生成必要的代码:

- 它更新数据摄取脚本,以预处理并将多语言数据索引到 Milvus 中。

- 它配置 Milvus 代码,以使用 BGE-M3 嵌入进行多种语言的相似性搜索。

- 它修改 RAG 系统,使用多语言模型查询 Milvus 并检索相关结果。

**审查和测试:**您审查生成的代码,进行任何必要的调整,并测试更改。

**拉取请求和合并:**一旦满意,您打开一个拉取请求与您的团队审查更改。经过最终验证后,更改被合并,使应用程序支持多语言。

**结论**

Idan Gazit 和 Cole Bemis 的演讲阐明了 GitHub Copilot 工作区的潜力。这个开发环境代表了简化像 RAG 这样复杂软件开发的重要一步,通过使用生成性 AI 允许任务到代码的开发工作流程,提高了生产力。

**更多资源**

- [https://githubnext.com/projects/copilot-workspace](https://githubnext.com/projects/copilot-workspace)

- [https://github.blog/2024-04-29-github-copilot-workspace/](https://github.blog/2024-04-29-github-copilot-workspace/)

- [https://zilliz.com/event/intro-to-multilingual-rag](https://zilliz.com/event/intro-to-multilingual-rag)

- [https://zilliz.com/learn/embedding-and-querying-multilingual-languages-with-milvus](https://zilliz.com/learn/embedding-and-querying-multilingual-languages-with-milvus)

  • Denis Kuria

    Denis Kuria

    Freelance Technical Writer

    准备好开始了吗?

    立刻创建 Zilliz Cloud 集群,存储和检索您的向量。

    免费试用 Zilliz Cloud