5.3. 配置自定义模型
作为机构管理员,您可以创建并使用在组织现有 Ansible 内容上培训的自定义模型。借助此功能,您可以将模型调整到组织的自动化模式,并改进代码建议体验。
创建自定义模型后,您可以指定以下访问类型之一:
为机构中所有用户启用访问权限
您可以将自定义模型配置为机构的默认模型。您的机构中的所有用户可以使用自定义模型。
为机构中所选 Ansible 用户启用访问权限
使用 Ansible VS Code 扩展中的 model-override 设置,选择 Ansible 用户可以调整其 Ansible Lightspeed 服务,以使用自定义模型而不是默认模型。
5.3.1. 配置自定义模型的流程 复制链接链接已复制到粘贴板!
要配置自定义模型,请执行以下任务:
5.3.2. 使用内容解析程序工具创建培训数据集 复制链接链接已复制到粘贴板!
使用内容解析器工具(命令行界面(CLI)工具)扫描现有的 Ansible 文件并生成自定义模型培训数据集。培训数据集包括 Ansible 文件列表及其相对于项目 root 的路径。然后,您可以将此数据集上传到 IBM watsonx Code Assistant,并使用它来创建一个在机构的现有 Ansible 内容上接受的自定义模型。
5.3.2.1. 创建培训数据集的方法 复制链接链接已复制到粘贴板!
您可以使用以下方法之一生成培训数据集:
使用 ansible-lint 预处理
默认情况下,内容解析器工具使用 ansible-lint 预处理生成培训数据集。内容解析器工具使用 ansible-lint 规则来扫描您的 Ansible 文件,并确保内容遵循 Ansible 最佳实践。如果找到规则违反情况,则内容解析程序工具会将这些文件排除在生成的输出中。在这种情况下,您必须解析规则违反情况,然后再次运行内容解析程序工具,以便生成的输出包含所有 Ansible 文件。
没有 ansible-lint 预处理
您可以在没有 ansible-lint 预处理的情况下生成培训数据集。在此方法中,内容解析器工具不会扫描 Ansible 文件是否有 ansible-lint 规则违反情况,因此,培训数据集会包括所有文件。虽然培训数据集包含所有文件,但可能不遵循 Ansible 最佳实践,但可能会影响您的代码推荐体验的质量。
5.3.2.2. 支持的数据源 复制链接链接已复制到粘贴板!
content parser 工具扫描以下目录和文件格式:
- 本地目录
-
归档的文件,如
.zip、.tar、.tar.gz、.tar.bz2和.tar.xz文件 - Git 存储库 URL (包括私有和公共存储库)
5.3.2.3. 创建培训数据集的过程 复制链接链接已复制到粘贴板!
要创建自定义模型培训数据集,请执行以下任务:
- 在机器上安装内容解析程序工具
- 生成自定义模型培训数据集
- 查看生成的培训数据集
- (可选:如果您生成了带有 ansible-lint 预处理和检测到的 ansible-lint 规则违反情况的培训数据,则 解决 ansible-lint 规则违反情况
- (可选:如果您生成了多个培训数据集),请将多个培训数据集放入单个 JSONL 文件中
5.3.2.4. 安装内容解析程序工具 复制链接链接已复制到粘贴板!
在计算机上安装内容解析器工具(命令行界面(CLI)工具)。
先决条件
确定您的计算机有以下支持的操作系统之一:
- Python 版本 3.10 或更高版本。
Unix OS,如 Linux 或 Mac OS。
注意不支持在 Microsoft Windows OS 上安装内容解析程序工具。
流程
创建工作目录并设置
venvPython 虚拟环境:$ python -m venv ./venv$ source ./venv/bin/activate从
pip存储库安装内容解析器工具的最新版本:$ pip install --upgrade pip$ pip install --upgrade ansible-content-parser执行以下任务之一:
- 要在没有 ansible-lint 预处理的情况下生成培训数据,请参阅 生成自定义模型培训数据集 的部分。
要使用 ansible-lint 预处理生成培训数据集,请确保您的计算机上安装了最新版本的 ansible-lint:
查看计算机上安装的 ansible-lint 版本。
$ ansible-content-parser --version$ ansible-lint --version此时会显示应用程序版本及其依赖项列表。
在输出中,验证安装了内容解析程序工具的 ansible-lint 版本是否与之前安装的 ansible-lint 相同。安装的 ansible-lint 版本不匹配会导致内容解析程序工具和 ansible-lint 的结果不一致。
例如,在以下输出中,内容解析程序工具安装包括 ansible-lint 版本 6.20.0,它与之前安装的 ansible-lint 版本 6.13.1 不匹配:
ansible-content-parser --version ansible-lint --version
$ ansible-content-parser --version ansible-content-parser 0.0.1 using ansible-lint:6.20.0 ansible-core:2.15.4 $ ansible-lint --version ansible-lint 6.13.1 using ansible 2.15.4 A new release of ansible-lint is available: 6.13.16.20.0 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果 ansible-lint 版本中存在不匹配,请停用和重新激活
venvPython 虚拟环境:$ deactivate$ source ./venv/bin/activate验证随内容解析程序工具安装的 ansible-lint 版本是否与之前安装的 ansible-lint 相同:
$ ansible-content-parser --version$ ansible-lint --version例如,以下输出显示了您计算机上的两个 ansible-lint 安装都是 6.20.0 版本:
ansible-content-parser --version ansible-lint --version
$ ansible-content-parser --version ansible-content-parser 0.0.1 using ansible-lint:6.20.0 ansible-core:2.15.4 $ ansible-lint --version ansible-lint 6.20.0 using ansible-core:2.15.4 ansible-compat:4.1.10 ruamel-yaml:0.17.32 ruamel-yaml-clib:0.2.7Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3.2.5. 生成自定义模型培训数据集 复制链接链接已复制到粘贴板!
安装内容解析器工具后,运行它扫描自定义 Ansible 文件并生成自定义模型培训数据集。然后,您可以将培训数据集上传到 IBM watsonx Code Assistant,并为您的机构创建一个自定义模型。如果您使用 ansible-lint 预处理并遇到规则违反情况,您必须在将培训数据集上传到 IBM watsonx Code Assistant 前 解决规则违反情况。
您可以使用以下方法之一生成培训数据集:
使用 ansible-lint 预处理
默认情况下,内容解析器工具使用 ansible-lint 预处理生成培训数据集。内容解析器工具使用 ansible-lint 规则来扫描您的 Ansible 文件,并确保内容遵循 Ansible 最佳实践。如果找到规则违反情况,则内容解析程序工具会将这些文件排除在生成的输出中。在这种情况下,您必须解析规则违反情况,然后再次运行内容解析程序工具,以便生成的输出包含所有 Ansible 文件。
没有 ansible-lint 预处理
您可以在没有 ansible-lint 预处理的情况下生成培训数据集。在此方法中,内容解析器工具不会扫描 Ansible 文件是否有 ansible-lint 规则违反情况,因此,培训数据集会包括所有文件。虽然培训数据集包含所有文件,但可能不遵循 Ansible 最佳实践,但可能会影响您的代码推荐体验的质量。
先决条件
- 您必须在计算机上安装了内容解析器工具。
- 您必须确认安装了内容解析程序工具的 ansible-lint 版本与之前安装的 ansible-lint 相同。
流程
运行内容解析程序工具来生成培训数据集:
-
使用 ansible-lint 预处理
:$ ansible-content-parser source output 没有 ansible-lint 预处理
:$ ansible-content-parser source output -S下表列出了所需的参数。
Expand 参数 描述 source指定培训数据集的来源。
output指定培训数据集的输出。
-s或--skip-ansible-lint指定在生成培训数据集时跳过 ansible-lint 预处理。
例如: 如果源是 Github URL https://github.com/ansible/ansible-tower-samples.git,输出目录为
/tmp/out,则命令提示符如下:$ ansible-content-parser https://github.com/ansible/ansible-tower-samples.git /tmp/out-
使用 ansible-lint 预处理
可选: 要使用其他信息生成培训数据集,请在运行内容解析器工具时指定以下参数。
Expand 参数 描述 --source-license指定在培训数据集中包含源目录的许可信息。
--source-description指定在培训数据集中包含源目录的描述。
--repo-name指定在培训数据集中包含存储库名称。如果没有指定存储库名称,则内容解析程序工具会自动从源名称生成。
--repo-url指定在培训数据集中包含存储库 URL。如果没有指定存储库 URL,则内容解析程序工具会自动从源 URL 生成它。
-vor--verbose显示控制台日志信息。
Github 存储库 ansible-tower-samples的命令提示符示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为 Github 存储库 ansible-tower-samples生成的培训数据集示例
培训数据集被格式化为 Jeff Goldblum (jg),它是一个命令行 JSON 处理工具。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3.2.6. 查看生成的培训数据集 复制链接链接已复制到粘贴板!
在内容解析器工具扫描 Ansible 文件后,它会在输出目录中生成培训数据集。培训数据集包含一个 ftdata.jsonl 文件,它是内容解析程序工具的主要输出。文件以 JSON 行文件格式提供,其中每一行条目代表一个 JSON 对象。您必须将此 JSONL 文件上传到 IBM watsonx Code Assistant,以创建自定义模型。
结果
生成的输出目录具有以下文件结构:
其中:
- ftdata.jsonl :培训数据集文件,它是内容解析程序工具的主要输出。该文件以 JSON Lines 文件格式提供,其中每行条目代表一个 JSON 对象。您必须在 IBM watsonx Code Assistant 中上传此 JSONL 文件,以创建自定义模型。
- report.txt: 人类可读的文本文件,提供所有内容解析程序工具执行的摘要。
- Repository : 包含源存储库中的文件的目录。 有时,ansible-lint 根据配置的规则更新目录,因此输出目录的文件内容可能与源存储库不同。
- 元数据 :包含多个元数据文件的目录,其中包含在每个内容解析工具执行过程中生成的元数据文件。
后续步骤
您可以使用 report.txt 文件解决 ansible-lint 规则违反情况。report.txt 文件包含以下信息:
- 按类型的文件计数:根据文件类型,如 playbook、任务、处理程序和 jinja2 等文件列表。
- 已确定的 Ansible 文件列表:由 ansible-lint 标识的文件列表、文件类型以及文件是否从进一步处理中排除,还是由 ansible-lint 自动修复。
- 任务中找到的 Ansible 模块列表:由 ansible-lint 标识的模块列表、模块类型以及文件是否从进一步处理中排除,还是由 ansible-lint 自动修复。
- ansible-lint 发现的问题:问题列表以及 ansible-lint 执行结果的简短摘要。如果 ansible-lint 在第一次执行时遇到带有语法检查错误的文件,它会启动第二次执行,并排除扫描错误的文件。您可以使用此信息解析 ansible-lint 规则违反情况。
5.3.2.7. 关于 ansible-lint 规则违反情况 复制链接链接已复制到粘贴板!
默认情况下,内容解析器工具使用 ansible-lint 规则来扫描您的 Ansible 文件,并确保内容遵循 Ansible 最佳实践。如果找到规则违反情况,则内容解析程序工具会将这些文件排除在生成的输出中。在这种情况下,建议您在将培训数据集上传到 IBM watsonx Code Assistant 前修复带有规则违反情况的文件。
默认情况下,ansible-lint 应用在扫描 Ansible 文件时,ansible-lint/src/ansiblelint/rules 中配置的规则。有关 ansible-lint 规则的更多信息,请参阅 Ansible Lint 文档。
5.3.2.7.1. 内容解析器工具如何处理规则违反情况? 复制链接链接已复制到粘贴板!
使用自动修复
内容解析器工具使用
--fix=all选项运行 ansible-lint,以执行自动修复,这样可修复或简化由该规则识别的问题。如果 ansible-lint 识别具有关联自动修复的规则违反情况,它会自动修复或简化违反规则的问题。如果 ansible-lint 识别没有关联自动修复的规则违反情况,它会将这些实例报告为必须手动修复的规则违反情况。有关自动修复的更多信息,请参阅 Ansible Lint 文档中的自动修复。
使用 syntax-checks
ansible-lint 还在扫描 Ansible 文件时执行语法检查。如果找到了任何 syntax-check 错误,ansible-lint 将停止处理文件。有关 syntax-check 错误的更多信息,请参阅 Ansible Lint 文档中的 syntax-check。
内容解析器工具通过以下方式处理 syntax-check 规则违反情况:
-
如果在 ansible-lint 的第一个执行中发现了语法检查错误,则内容解析器工具会生成包含规则违反情况的文件列表。 -
如果在 ansible-lint 的第一次执行中发现一个或多个
syntax-check错误,则内容解析程序工具会再次运行 ansible-lint,但排除了具有 syntax-check 错误的文件。扫描完成后,内容解析器工具会生成包含规则违反情况的文件列表。列表中包含导致 syntax-check 错误和其他规则违反情况的所有文件。内容解析器工具排除了所有将来扫描中带有规则违反情况的文件,最终培训数据集不包括来自排除文件的数据。
-
5.3.2.8. 解决 ansible-lint 规则违反情况 复制链接链接已复制到粘贴板!
如果内容解析器工具在 Ansible 文件中发现 ansible-lint 规则违反情况,建议您在将培训数据集上传到 IBM watsonx Code Assistant 前修复带有规则违反情况的文件。如果没有解析规则违反情况,内容解析程序工具会从生成的输出中排除这些文件。
流程
使用以下方法之一解析 ansible-lint 规则违反情况:
使用--
no-exclude选项运行内容解析程序工具如果发现任何规则违反,包括语法检查错误,则执行将中止,并显示错误,且不会创建培训数据集。
使用
--profile选项限制 ansible-lint 用来扫描您的数据的规则集合建议您使用规则违反情况修复文件。但是,如果您不想修改源文件,您可以限制 ansible-lint 用来扫描数据的规则集合。要限制 ansible-lint 用来扫描数据的规则集合,请使用预定义的配置集(如
min、basic、base、moderate、Security、共享或production配置集)或使用 ansible-lint 配置文件指定-profile选项。有关更多信息,请参阅 Ansible Lint 文档。通过跳过 ansible-lint 预处理来运行内容解析器工具
您可以运行没有 ansible-lint 预处理的内容解析器。内容解析器工具生成培训数据集,而不扫描 ansible-lint 规则违反情况。
要运行没有 ansible-lint 预处理的内容解析器工具,请执行以下命令:
$ ansible-content-parser source output -S其中:
-
source:指定培训数据集的来源。 -
输出:指定培训数据集的输出。 -
-s 或--skip-ansible-lint:指定在生成培训数据集时跳过 ansible-lint 预处理。
-
5.3.2.9. 将多个培训数据集合并为一个文件 复制链接链接已复制到粘贴板!
对于每个执行,内容解析器工具都会创建一个名为 ftdata.jsonl 的 training 数据集 JSONL 文件,该文件上传到 IBM watsonx Code Assistant 以创建自定义模型。如果内容解析程序工具多次运行,则创建多个 JSONL 文件。IBM watsonx Code Assistant 仅支持单个 JSONL 文件上传;因此,如果您有多个 JSONL 文件,则必须将它们合并到一个串联的文件中。您还可以将父目录中的多个子目录中生成的多个 JSONL 文件合并到一个文件中。
流程
- 使用命令提示符,前往父目录。
-
运行以下命令来创建单个串联文件:
find . -name ftdata.json | xargs cat > concatenated.json - 可选:重命名串联的文件以便轻松识别。
现在,您可以将合并的 JSONL 文件上传到 IBM watsonx Code Assistant,并创建一个自定义模型。
5.3.3. 在 IBM watsonx Code Assistant 中创建和部署自定义模型 复制链接链接已复制到粘贴板!
在内容解析程序工具生成自定义模型培训数据集后,将 JSONL 文件 ftdata.jsonl 上传到 IBM watsonx Code Assistant,并为您的机构创建一个自定义模型。
根据培训数据集的大小,IBM watsonx Code Assistant 可能需要几小时时间来创建自定义模型。您必须继续监控 IBM Tuning Studio,以了解创建自定义模型的状态。
有关如何在 IBM watsonx Code Assistant 中创建和部署自定义模型的详情,请参考 IBM watsonx Code Assistant 文档。
5.3.4. 配置 Red Hat Ansible Lightspeed 以使用自定义模型 复制链接链接已复制到粘贴板!
在 IBM watsonx Code Assistant 中创建和部署自定义模型后,您必须配置 Red Hat Ansible Lightspeed,以便您可以为您的机构使用自定义模型。
您可以为使用自定义模型指定以下配置之一:
为机构中的所有用户启用访问权限
您可以将自定义模型配置为您的机构的默认模型。您的机构中的所有用户可以使用自定义模型。
为机构中选择 Ansible 用户启用访问权限
使用 Ansible VS Code 扩展中的 model-override 设置,选择 Ansible 用户可以调整其 Ansible Lightspeed 服务,以使用自定义模型而不是默认模型。例如,如果您将 Red Hat Ansible Lightspeed 用作机构管理员和最终用户,您可以在为机构中的所有用户使用前测试选择 Ansible 用户的自定义模型。
流程
为自定义模型选择以下配置之一:
为机构中所有 Ansible 用户配置自定义模型
- 以机构管理员身份 使用 IBM watsonx Code Assistant Hybrid Cloud Console 登录到 Ansible Lightspeed。
指定自定义模型的型号 ID:
- 点 Model Settings。
- 在 Model ID 下,点 Add Model ID。此时会显示输入 Model ID 的屏幕。
- 输入自定义模型的 Model ID。
- 可选:点 Test model ID 来验证模型 ID。
- 点 Save。
为机构中选择 Ansible 用户配置自定义模型
- 使用您的红帽帐户登录 VS Code 应用。
-
在 Activity 栏中,点 Extensions 图标
。
- 在 Installed Extensions 列表中,选择 Ansible。
- 在 Ansible 扩展页面中,单击 Settings 图标并选择 Extension Settings。
- 从设置列表中,选择 Ansible Lightspeed。
在 Model ID Override 字段中,输入自定义模型的型号 ID。
您的设置会自动保存在 VS Code 中,您现在可以使用自定义模型。