Catalog 自定义#
来源#
注意
本节假定默认的 Tokkio Retail App 已经部署。
可以通过使用 exec 命令登录到 Kubernetes pod 部署后检查 Catalog RAG 源代码。将下面示例命令中的 catalog-rag-deployment-pod-name
替换为你的部署中 Catalog RAG 的实际 pod 名称。例如:catalog-rag-deployment-7b9786484d-v44d2
kubectl exec -ti <catalog-rag-deployment-pod-name> -- /bin/bash
下面各节中讨论的各种文件都可以在 pod 内找到。你也可以将这些文件复制到本地进行编辑。
Catalog 架构#
Catalog RAG 使用的 JSON 架构当前针对基于餐厅的零售应用程序。可以轻松地修改/更新 RAG 管线以适用于现有架构。可以在 Catalog RAG 源代码中的文件 menu.json
中观察到正在使用的架构。以下是 JSON 架构中各种字段的分解 -
_id [Dict]
- 存储唯一 ID$oid [Str]
- 菜单中每个条目的十六进制唯一 IDmenu_item [Bool]
⇒ 如果你不希望在 UI 上将该项目显示为单独的项目(例如,配料、成分),则设置为 False,否则为 Truerecommendation_type [List[Str]]
⇒ 保留供将来使用synonyms [List[Str]]
⇒ 此项目的别名(如果有)tags [List[Str]]
⇒ 基于限制、规范等的标签(例如,纯素食)variations [List[Dict]]
⇒ 定义所有可能的变体name [Str]
⇒ 保留供将来使用size [Str]
⇒ 变体的相应尺寸(例如,小)calories [Int]
⇒ 总卡路里price [Float]
⇒ 总价description [Str]
⇒ 食品项目的描述(如果未设置 is_default,则为可选)image [Str]
⇒ NGC 注册表中的图像位置(如果未设置 is_default,则为可选)is_default [Bool]
⇒ 如果可用并设置为 True,则当用户未提及特定变体尺寸时,此变体将添加到购物车
ingredients [List[Str]]
⇒ 所有存在的成分,确保成分也作为单独的食品项目添加到菜单中,menu_item=False)toppings [List[Str]]
⇒ 所有可用的配料,确保配料也作为单独的食品项目添加到菜单中,menu_item=False)name [Str]
⇒ 食品项目的名称item_id [Str]
⇒ 唯一的字母数字项目 IDcategory [Str]
⇒ 当前项目所属的食品项目类别
特定项目的所有键值对都是强制性的。因此,在更新或添加新菜单项时,请确保所有默认键值对都存在。以下是用于 Catalog RAG 的默认架构的代码片段 -
[
{
"_id": {
"$oid": "string"
},
"menu_item": true,
"recommendation_type": [
"string"
],
"synonyms": [
"string"
],
"tags": [
"string"
],
"variations": [
{
"name": "string",
"size": "string",
"calories": 0,
"price": 0,
"description": "string",
"image": "string",
"is_default": true
}
],
"ingredients": [
"string"
],
"toppings": [
"string"
],
"name": "string",
"item_id": "string",
"category": "string"
}
]
修改默认 Catalog#
Catalog RAG 提供了一个 API POST /api/menu
以动态设置目录(使用相同的架构)。请注意,插件服务器、购物车管理器、UI 服务器和 UI 在此更新后需要重启。用户可以使用 Catalog RAG 服务端口在 Kubernetes 集群内访问此端点。可以通过 curl 或 fastapi 客户端页面发送请求(示例:https://127.0.0.1:8080/docs)。
对于包括将 Catalog RAG 用于与零售餐厅非常不同的应用程序的重大更改,建议更新提示 vectorstore_prompt.txt
(在 Catalog RAG 源代码中找到)并在 Catalog 源代码中上传更新后的 JSON,以便在启动时用于创建向量存储。后一种方法需要用户重建 Catalog RAG 容器,并使用更新后的容器来构建可与 Tokkio 一起使用的自定义/新微服务。
更新 Catalog 图像#
Catalog 架构中项目对应的图像(menu.json
是默认文件)需要上传到前端源代码,以便它们能够正确显示给用户。查看 部署 UI 以了解有关下载 UI 源代码的信息。默认版本已包含与默认 menu.json
中项目相关的图像。
运行以下命令以生成 UI 生产构建。将生成“build”目录
cd vst-streaming-lib npm install npm run build
2. 创建一个新的 /images
目录,并将其放在 UI 的 /build
目录中。此目录中的子文件夹应等于 UI 服务器 API 响应中的 image_loc
字段。例如,来自 GET: category/item/23
的 API 响应将具有 image_loc 字段。假设 image_loc 字段等于 images/image-category/item23.png
。那么 UI 应该在目录 /public/images/image-category/item23.png
中具有项目 23 的图像。对于目录中的所有项目,都应遵循此操作。1. 新的 /images
目录应替换 /build/images
中的现有图像目录。2. 将更新后的 build 目录上传到 S3 存储桶
aws s3 sync ./build s3://tokkio-ui
将新生成的静态文件保存在
/build
目录中。
功能自定义 - Catalog 架构、CM、插件服务器和 UI#
Tokkio 零售参考应用程序希望用户坚持 Tokkio 零售微服务 (MS) 中定义的目录架构和 API 流程。但是,如果需要,可以修改这些内容以整合任何新需求。在大多数情况下,插件服务器、CM、Catalog RAG 和 UI 及其 API 都需要进行更改。
使用自定义 Catalog RAG#
在 下载 Catalog RAG 源代码 中演示的那样,在本地下载 Catalog RAG 资源
实施必要的修改以自定义资源。
导航到包含 Dockerfile 的源代码目录,并为更新后的容器构建容器
docker build -t catalog-rag-container:test
标记创建的镜像以将其上传到你的组织使用的特定 NGC 路径
sudo docker tag <image_name> <NGC_PATH/ucs-tokkio-catalog-rag-container:version_num>
将更新后的容器推送到 NGC
docker push <NGC_PATH/ucs-tokkio-catalog-rag-container:version_num>
有关创建和使用可用于 Tokkio 应用程序的自定义微服务(在本例中为 Catalog RAG 的自定义版本)的详细信息,请参阅 添加新的微服务。