使用Ansible Lightspeed与IBM Watson Code Assistant进行自动代码生成

摘要

进入2023年后,生成AI的势头更加强劲,使我日复一日地深切感受到它的威力,几乎没有一天听不到”生成AI”或”ChatGPT”这样的词语。

这种趋势还对一般企业和政府机构的业务产生了影响,给人留下了越来越多地倾向于利用AI技术来考虑业务效率提升和自动化的印象。

AI自动生成代码已经逐渐实现。GitHub Copilot和Amaxon CodeWhisperer等服务已经可用,软件工程正在经历重大的范式转变。
在这样的背景下,红帽公司在上个月(2023年5月)推出了Ansible Lightspeed。
这是一个通过生成AI来实现自动化的Ansible代码生成工具。
与上述两项服务目前将编程语言作为代码生成的对象不同,Ansible Lightspeed目前将Ansible代码(Ansible任务为对象)作为生成的目标。
现在,让我们简单地了解一下用于Ansible代码生成的准备步骤和实际使用。
※撰写时点(2023年6月27日),该服务处于Tech Preview版本,未来可能会有各种变更。

条件

    自動コード生成に使用した環境: Mac(Apple M1 Pro), macOS 12.6.5

建筑设计

archi2.png

独断和偏见融入到架构中将呈现如下形式。通过VSCode以自然语言1描述的任务名称部分作为输入值,在Ansible Lightspeed扩展的帮助下传递给作为后端的Watson Code Assistant,根据模型生成代码。最终,Ansible Lightspeed 决定以何种形式提出建议,并显示在VSCode中被认定为最佳的选项。

在这个过程中,接受或拒绝这些建议的信息等反馈将再次传达给Watson Code Assistant作为训练模型的输入。除此之外,这些信息还将被发送到后端。

另外,正如后面提到的,将来可能还会考虑与名为IBM watsonx的模型训练与调优平台进行合作。

设定

基本上,我们会按照这个页面上所写的内容进行操作。

VSCode是一款原生的中文编程工具。

安装扩展

在 VSCode 中安装 Ansible 扩展。

image.png

该扩展页面的配置中,ansible.lightspeed.* 的设置选项将成为本次目的的功能。

image.png

擴展功能的設定

打开settings.json文件,并添加以下设置。

{
  "ansible.lightspeed.enabled": true,
  "ansible.lightspeed.suggestions.enabled": true
}

准备代码示例

在名为playbooks的文件夹中创建一个名为test.yaml的文件。

mkdir playbooks

touch playbooks/test.yaml

打开编辑器并打开 test.yaml 文件时,会显示提示信息:“请选择 Python 的环境”。

image.png

当你点击变为黄色的地方时,会显示出一些Python环境的选择候选项,选择”Recommended”并点击来进行选择。

image.png

然后,Python环境的路径会自动添加到配置文件中。

{
  "ansible.lightspeed.enabled": true,
  "ansible.lightspeed.suggestions.enabled": true,
+  "ansible.python.interpreterPath": "/opt/homebrew/bin/python3"
}

解决Ansible/Python相关的错误

在VSCode画面的右下角仍然显示出两个错误。

image.png
Ansible-lint 不可用,请检查路径或禁用 ansible-lint 进行验证。

ansible-lint未被启用,需要以下两个解决方法来解决该错误。

    • 別でライブラリをインストールする

 

    Ansible extension の設定で lint を無効にする

如果要安装ansible-lint,请使用以下命令进行安装。

brew install ansible-lint

如果要禁用 ansible-lint,则需在 settings.json 中添加。

{
  "ansible.lightspeed.enabled": true,
  "ansible.lightspeed.suggestions.enabled": true,
  "ansible.python.interpreterPath": "/usr/local/bin/python",
+  "ansible.validation.lint.enabled": false
}
命令失败:ansible-config dump /bin/sh: ansible-config: 命令未找到

如果没有安装 Ansible,就会出现这样的错误。因此,您需要使用以下命令来安装 Ansible。

python3 -m pip install --user ansible

如果只有这样,可能找不到ansible命令,这种情况下需要添加ansible命令的路径。

python3 -m site --user-base
# /Users/xxx/Library/Python/3.11
# → /Users/xxx/Library/Python/3.11/bin を PATH に追加する

vi ~/.zshrc

export PATH="$HOME/Library/Python/3.11/bin:$PATH"

既然准备工作已经完成,接下来我们来看看生成代码的实际过程。

自动编码生成

试着写一个简单的yaml文件。

- name: AWS EC2 Cloud Operation
  tasks:
    - name: create ec2 instance

当在创建EC2实例时,按下Enter键会在屏幕右下角显示如下内容。

image.png

点击Login,并按照指示进行操作。
浏览器启动后,出现”使用Watson Code Assistant登录Ansible Lightspeed”的界面,然后要求在GitHub上登录。
成功登录后,在先前的VSCode编辑器上再次按Enter键,几秒钟后将提供类似于图片中的代码建议。

image.png

按下Tab键后,建议的代码将变为确定状态,并成为输入的内容。
另外,按下Esc键可以进行取消操作。

尝试写了一个增加了一些订单的 YAML 文件。

- name: AWS EC2 Cloud Operation
  tasks:
    - name: create smallest ec2 instance

结果是这样的。

image.png

在”instance_type: t2.micro”的部分,可以察觉到”smallest”的含义。(虽然有争议是否t2.micro是最小的,实际上t2.nano更小,但AI的提议让人觉得很不错)
然而,目前的情况可能会使其在商业环境中难以使用。

这个问题的内部

模特

在代码生成中使用的模型是由IBM使用称为“Foundation Model”的技术进行训练。Foundation Model(基础模型)的概念是首先创建一个通用模型作为创建最终可用于各种用途的模型的前阶段,然后根据每个用途进行微调。这也是所谓的大型语言模型(LLM)的一种形式。Foundation Model需要大量的数据用于创建通用模型,但通过使用无标签数据进行自监督学习,可以在实际成本范围内实现这一点。

模型的训练

Ansible Lightspeed与Watson Code Assistant一起使用,用于生成代码的playbook的内容、文件名以及可以在Ansible Galaxy或GitHub上使用的角色、集合和其他数据。
用户的反馈在模型的训练中起着重要的作用,这些反馈被用作接受、拒绝或更改建议代码的行动。

这个提案中的代码是基于什么生成的?

以下的現況項目有助於提案。

項目説明提案に対するリアクション提案が受け入れられたか or 拒否されたかtask の name の記述内容コード提案をしてもらいたい内容を自然言語で記述したものplaybook/role コンテキストtask の name 記述以前に存在していた playbook の内容playbook の内容コード提案時に、その中のどの部分が重要だったか、またはそうではなかったかドキュメント URI(匿名化)Ansible のどのドキュメントかを区別(playbook/role など)リクエスト/レスポンスタイムスタンプUTC フォーマットユーザー ID(匿名化)~/.redhat/anonymousid の内容提案 ID(匿名化)リクエスト時に自動生成されるセッション ID

当你不想让自己的代码参与模型训练时。

请按照以下步骤进行操作。

路线图(截至2023年7月20日)

选择一些最近由Red Hat公司宣布的路线图中我个人感兴趣的项目,并进行记录。

短期

    • 自然言語からの完全な Ansible playbook の生成

 

    • REST API による CI/CD パイプラインや開発ツール、その他の自動化エコシステムとの統合

 

    モデルのチューニング機能

中长期

    • ドキュメントの自動作成

 

    • Web や CLI ベースの UI 提供と他のエディタへの対応

 

    • ユーザーが所属する組織のポリシーに基づいた推奨内容のチューニング

 

    非構造データの構造化と解析

未来来临时 (个人的主观)

目前为止,它是一个 Tech Preview 版本,基本上是基于公共数据训练的模型和相应代码提案。但是在正式服务推出后,预计企业将使用其自己的数据进行训练/微调模型,并将这些模型用于自动生成代码。我们相信,通过与与 Ansible Lightspeed 同期发布的名为 watsonx 的平台同时使用,这将成为可能。

参考

https://www.youtube.com/live/ukxE_4O0Woc?feature=share&t=7961 (Ansible Automates 2023 Japan)

IBMが「IBM watsonx」を発表 ~基盤モデル作成のワークフローをend to endで実現するためのプラットフォーム、自社独自のChatGPTが構築可能に


https://pc.watch.impress.co.jp/docs/news/1499191.html

在撰写本文时(2023年7月),仅提供英文支持。
广告
将在 10 秒后关闭
bannerAds