Press "Enter" to skip to content

Codey Google的生成式AI用于编码任务

介绍

自从引入以来,OpenAI已经发布了无数基于他们顶级GPT框架构建的生成式AI和大型语言模型,包括ChatGPT,他们的生成式对话AI。在成功创建对话语言模型之后,开发人员不断尝试创建可以开发或辅助开发人员编写应用程序的大型语言模型。许多公司已经开始研究这些LLM,包括OpenAI,它们将帮助开发人员通过LLM更快地构建应用程序,了解编程语言。Google构建了Codey,PaLM 2的经过微调的模型,能够执行各种编码任务。

还阅读:PaLM 2 By Google To Tackle GPT-4 Effect

学习目标

  • 了解Codey是如何构建的
  • 学习如何在Google Cloud Platform上使用Codey
  • 了解Codey可以接受的提示类型
  • 探索和参与Codey内的不同模型
  • 利用Codey生成可行的Python代码
  • 测试Codey以查看其如何识别和解决代码中的错误

本文作为《数据科学博文马拉松》的一部分发布。

Codey是什么?

Codey是Google最近构建和发布的基础模型之一。Codey基于PaLM 2大型语言模型。Codey是PaLM 2大型语言模型的经过微调的模型。通过对大量高质量的代码和编码文档进行微调,Google声称Codey可以在包括Python、C、Javascript、Java等在内的20多种编程语言中编码。Codey被用于增强Google产品,如Google Colab、Android Studio等。

Codey的构建解决了三个目标。其中之一是代码完成。Codey可以分析您编写的代码并提出有价值的建议。因此,它在您编写的代码方面具有上下文意识。另一个目标是代码生成。Codey可以生成任何语言的完整可行代码,只要提供提示。最后,您可以与代码交谈。您可以将您的代码提供给Codey,并与Codey就代码进行交流。Codey现在可以通过Google Cloud Platform的Vertex AI向公众提供。

还阅读:Google’s Med-PaLM 2将成为最先进的医疗AI

开始使用Codey

要使用Google的Codey,我们必须在Google Cloud Platform上拥有一个帐户。Google Cloud Platform托管了名为Vertex AI的服务,其中包含由Google开发以及Google微调的开源模型。Google最近发布了最新宣布的Google基础模型,包括PaLM 2、Codey、Chirp和Imagen。GCP用户可以在此处找到它们。

在Google Cloud Platform上创建帐户后,我们必须启用Vertex AI API才能使用Vertex AI。为此,转到“API和服务”->“库”,然后搜索Vertex AI API。我们可以在下面的第一张图片中看到Vertex AI API。然后点击它。点击后,我们将找到一个带有“启用API”字样的蓝色框。点击蓝色框以启用API,它看起来类似于第二张图片。

这个确认使我们能够使用Google提供的任何AI服务,包括Google的基础模型,如Chirp、Imagen和Codey。

使用Codey进行代码生成

本节将介绍使用Codey模型进行代码生成。这需要我们在GCP中启用Vertex AI API,我们已经完成了这一步骤。这里的代码演示将在Google Colab中进行。在开始编写代码之前,我们必须安装一些必要的软件包以使用Vertex AI,我们将通过pip来完成。

!pip install shapely

!pip install google-cloud-aiplatform>=1.27.0

Shapely和google-cloud-aiplatform是开始使用Codey模型所需的两个必要软件包。现在我们将导入软件包,甚至对我们的Google账户进行身份验证,这样Colab就可以使用我们的GCP凭据来运行来自Vertex AI的Codey模型。

from google.colab import auth as google_auth
google_auth.authenticate_user()


import vertexai
from vertexai.preview.language_models import CodeGenerationModel


vertexai.init(project="your_project_id", location="us-west1")
parameters = {
    "temperature": 0.3,
    "max_output_tokens": 1024
}
  • 首先,我们从Google.colab包中导入google_auth。这是必要的,因为这将帮助我们通过允许Colab使用我们的凭据来对Codey模型进行身份验证。
  • 然后,我们导入vertex,该包包含了由Google组成的所有与机器学习和人工智能相关的模型。最后,我们还从vertexai中导入CodeGenerationModel,我们将使用它进行工作。
  • 现在,我们使用我们将要使用的项目初始化Vertex AI。在这里,我们将项目ID提供给project变量,并将任何一个位置提供给location变量,并将这两个变量传递给vertexai的init()方法。
  • 我们甚至事先指定了参数。这些参数包括temperature,即我们的模型应该有多有创造性,以及max_out_tokens参数,即由大型语言模型生成的输出长度的限制。

我们将使用导入的模型,即CodeGenerationModel,并通过传递一个提示来对其进行测试。

提示

code_model = CodeGenerationModel.from_pretrained("[email protected]")
response = code_model.predict(
    prefix = """使用正则表达式编写Python代码,统计给定输入句子中“rocket”一词的出现次数""",
    **parameters
)

print(f"模型的响应:{response.text}")
  • 这是用于代码生成的模型。我们正在使用来自Google的预训练模型,即“[email protected]”模型,该模型是经过微调的PaLM 2模型。该模型负责根据提示生成代码。
  • 为了传递提示,我们将其传递给模型的predict()函数。我们将提示传递给prefix变量。在这里,我们希望模型生成使用正则表达式计算“rocket”一词出现次数的Python代码。
  • 我们甚至将先前定义的参数传递给predict()函数。
  • 由这个代码生成模型生成的响应保存在response变量中,为了获取响应,我们调用text方法来获取模型的响应。

下面是代码的输出

我们得到了一个Python代码作为我们提供的提示的输出。该模型编写了一个与我们提供的查询匹配的Python脚本。现在测试这个代码的唯一方法是将响应复制粘贴到Colab中的其他单元格中并运行它。这里我们看到了相同代码的输出。

当代码运行时,我们提供的句子是“We have launched our first rocket. The rocket is built with 100% recycled material. We have successfully launched our rocket into space.” 输出成功指出单词“rocket”出现了三次。通过只提供简单的提示给大型语言模型,Codey的CodeGenerationModel可以用来创建快速工作的代码。

与Codey的代码交流

Code Chat功能允许我们与Codey在我们的代码上进行交互。我们将代码提供给Codey,并与Codey模型就代码进行交流。这可以是为了更好地理解代码,例如它是如何工作的,或者如果我们希望为给定的代码找到替代方法,Codey可以通过查看当前代码来做到这一点。如果我们遇到任何错误,我们可以同时提供代码和错误,Codey将查看并给出解决错误的解决方案。为此,我们需要在GCP中导航到Vertex AI。在Vertex AI服务中,我们然后导航到生成AI Studio下的Language部分,如下所示。

我们将通过一种非编码的方法进行,即我们已经看到了如何通过Python与Vertex AI API一起使用代码生成。现在,我们将直接通过GCP自身来完成这种类型的任务。现在,为了与Codey在我们的代码上进行交流,我们继续选择蓝色框中心的Code Chat选项。我们将点击它以进入下面的界面。

在这里,我们看到我们将使用的模型是“[email protected]”模型。现在,我们将对我们之前生成的正则表达式代码引入一个错误。然后,我们将把这个错误代码和错误传递给Code Chat,看看模型是否纠正了我们的代码。在Python的正则表达式代码中,我们将用re.find()替换re.findall()并运行代码。我们将得到以下错误。

在输出中,我们看到在re.find()方法附近出现了错误。现在,我们将把这个修改后的代码和我们得到的错误传递给Code Chat中的“输入提示以开始对话”。我们一按回车按钮,立即得到以下输出。

我们看到Codey模型已经分析了我们的代码,并建议错误的位置。它甚至为我们提供了修正后的代码供我们使用。这样,Code Chat可以识别和纠正错误,理解代码,甚至获得最佳的代码实践。

结论

在本文中,我们介绍了Google最近公开宣布的基础模型之一:Codey,这是PaLM 2(Google自家开发的生成式大型语言模型)的一个经过精调的版本。Codey模型在丰富的代码质量上进行了精调,因此可以在20多种不同的编程语言中编写代码,包括Python、Java、JavaScript等。Codey模型可以通过Vertex AI获得,我们可以通过GCP或通过API通过Vertex AI API进行访问,本文中我们已经介绍了这两种方法。

了解更多:生成式人工智能(Generative AI):定义、工具、模型、优势等

本文的一些关键要点包括:

  • Codey是基于PaLM 2经过精调的模型,使其强大而可靠。
  • 它能够在20多种不同的编程语言中编写代码。
  • 通过Codey,我们可以从简单的提示中生成代码,甚至与模型进行交流,纠正代码中出现的错误。
  • Codey甚至提供了建议,即代码补全功能,模型分析您正在编写的代码并提供有价值的建议。
  • 我们可以直接通过GCP中提供的Vertex AI中的生成式AI Studio界面与Codey一起工作。

常见问题

本文中显示的媒体不归Analytics Vidhya所有,而是根据作者的决定使用。

Leave a Reply

Your email address will not be published. Required fields are marked *