启动 UCS Studio
本节提供指针和指南,帮助您开始使用 UCS Studio 构建 UCS 应用程序。首先介绍如何使用语音技能和对话管理器服务构建和部署简单的基于文本的聊天机器人应用程序。接下来,它将解释如何将同一应用程序升级为基于语音的聊天机器人。本节应提供使用 UCS Studio 的良好概述。
在终端中运行以下命令
$ ucf_studio
注意
如果通过 SSH 远程运行,请确保在运行命令之前导出正确的
DISPLAY
变量。UCS Studio 也可以使用其他方法远程运行 - 远程访问。
Studio 启动后,您应该看到以下主屏幕
仓库设置
让我们从仓库设置开始。需要设置 NGC API 密钥才能访问 NGC 仓库。
获取 NGC API 密钥 - 请参阅 生成您的 NGC API 密钥。
从顶部菜单栏中单击 Registry(注册表),然后单击 Repo Setup(仓库设置)。
这将打开 Repo Setup(仓库设置) 对话框弹出窗口。输入您的 NGC API 密钥,然后单击 Ok(确定)。
操作完成需要几秒钟。如果输入的 API 密钥有效,则会填充 NGC 仓库列表,并显示成功消息弹出窗口。
同步微服务
接下来,我们将从 NGC 仓库同步微服务,以列出可用的微服务并查看其信息。
从顶部菜单栏中单击 Registry(注册表),然后单击 Fast Repo Setup(快速仓库设置)。
这将打开 Repo Sync(仓库同步) 弹出对话框。从下拉列表中选择
UCS
。
单击 Sync(同步)。将弹出一个进度对话框。此过程可能需要几秒钟。同步完成后,将显示成功确认对话框,并且左侧的微服务列表将被填充。
创建参考应用程序
本节演示如何使用 UCS Studio 和 NVIDIA 提供的微服务创建基于文本的聊天机器人。此页面上的一些说明特定于正在创建的应用程序,有关创建应用程序的更多详细信息,请参阅 创建应用程序。
先决条件
有关设置开发和部署系统的要求和说明,请参阅 开发系统 和 部署系统。
获取以下服务的 API 密钥,因为此参考应用程序中使用的微服务依赖于它们
天气 (weatherstack) - https://weatherstack.com/product
兴趣点 (Yelp) - https://www.yelp.com/fusion
地图 (Here) - https://developer.here.com/pricing
创建新图
我们现在可以开始创建应用程序图。
单击应用程序中心的 Create Graph(创建图)。
这将显示 Graph Name(图名称)的弹出对话框。输入一个名称,例如
ucf-text-bot
,然后单击 Ok(确定)。
单击 Ok(确定) 以打开一个空白画布,可以在其上添加微服务。
搜索微服务及其详细信息
您可以使用左侧的列表浏览可用的微服务
可以更改微服务分类以方便浏览
可以使用文本过滤和搜索微服务
从列表中选择一个微服务以在右侧面板上显示其详细信息
添加微服务
1. 可以通过从左侧列表中选择微服务并将其拖放到画布上,将微服务添加到应用程序。
对于此参考应用程序,将需要以下微服务
Riva 语音技能
BotMaker 对话管理器
BotMaker NLP 服务器
BotMaker Fulfillment 服务器
BotMaker 编辑器
BotMaker 文本 Web 应用程序
添加上述微服务后,该图现在如下所示
连接微服务
可以通过连接微服务的端点来连接微服务。从出口端点(微服务右侧的端口)拖动到入口端点(微服务左侧的端口)。

配置微服务
可以通过在画布上选择微服务并从右侧的 “Properties(属性)” 窗口设置参数来设置参数。
为方便起见,也可以从文件加载参数。将以下内容保存到文件(例如 params.yaml。)
'BotMaker Dialog Manager': configNgcPath: eevaigoeixww/staging/botmaker-quickstart:23.10.2-ea botConfigName: bots/misty/misty_bot_config.yaml imagePullSecrets: - name: ngc-docker-reg-secret 'Riva Speech Skills': ucfVisibleGpus: [0] modelRepoGenerator: clearAllRMIRSAndModels: false #> description: Flag to clear artifacts and models before downloading and deploying ngcModelConfigs: tritonGroup0: models: #> description: List of NGC models for deployment - nvidia/riva/rmir_nlp_named_entity_recognition_bert_base:2.13.0 - eevaigoeixww/conversational-ai/rmir_nlp_weather_intent_slot_bert_base:2.0.0-ea persistentVolumeClaim: keepPVC: True imagePullSecrets: - name: ngc-docker-reg-secret 'BotMaker NLP Server': ucfVisibleGpus: [0] configNgcPath: "eevaigoeixww/staging/botmaker-quickstart:23.10.2-ea" modelConfigPath: "bots/misty/model_config.yaml" imagePullSecrets: - name: ngc-docker-reg-secret 'BotMaker Fulfillment Server': configNgcPath: "eevaigoeixww/staging/botmaker-quickstart:23.10.2-ea" fmconfigPath: "bots/misty/fulfillment_config.yaml" imagePullSecrets: - name: ngc-docker-reg-secret 'BotMaker Text Web App': imagePullSecrets: - name: ngc-docker-reg-secret 'BotMaker Editor': imagePullSecrets: - name: ngc-docker-reg-secret
API 密钥可以从以下位置获取
天气 (weatherstack) - https://weatherstack.com/product
兴趣点 (Yelp) - https://www.yelp.com/fusion
地图 (Here) - https://developer.here.com/pricing
要加载上述参数文件,请使用操作栏中的 Load Parameters(加载参数) 按钮。
这将打开一个文件浏览器,导航到参数文件并加载它。
在微服务上设置密钥。首先单击操作栏中的 Graph Configuration(图配置) 按钮以打开图配置。
接下来,选择 Secrets(密钥) 窗口,单击 Add(添加) 以添加新密钥。输入如下所示的详细信息
现在在画布上选择 Riva Speech Skills(Riva 语音技能) 微服务,这将在右侧的 Property(属性) 窗口中显示 Secrets(密钥) 部分。对于 ngc-api-key-secret
,从下拉列表中选择 ngc-api-key-secret
。
对 BotMaker Dialog Manager(BotMaker 对话管理器)、BotMaker NLP Server(BotMaker NLP 服务器) 和 BotMaker Fulfillment Server(BotMaker Fulfillment 服务器) 执行相同的操作。
保存图
单击操作栏中的 Save Graph(保存图) 图标
这将打开一个文件浏览器。导航到选择的目录并保存图。
构建参考应用程序
单击操作栏中的 Build the current Graph(构建当前图) 图标。
这将打开一个文件浏览器。导航到选择的目录并单击 Okay(确定)。
构建应用程序可能需要几分钟。完成后,将显示一个成功弹出对话框,其中包含为应用程序生成的部署 helm chart 的路径。
有关部署 helm chart 的说明,请参阅 部署参考应用程序。
更新参考应用程序
本节演示如何使用 UCS Studio 和 NVIDIA 提供的微服务创建基于语音的聊天机器人。这些是在创建 创建参考应用程序 后要遵循的增量说明。这演示了如何通过仅使用 UCS Studio 更改应用程序中的一些内容来添加越来越复杂的功能。
此页面上的一些说明特定于正在创建的应用程序,有关创建应用程序的更多详细信息,请参阅 创建应用程序。
打开现有图
如果 UCS Text Bot Application(UCS 文本机器人应用程序) 应用程序图尚未打开,请单击应用程序中心的 Open Graph(打开图) 按钮或操作栏上的 Open Graph(打开图) 按钮将其打开。
这将打开一个文件浏览器,导航到 UCS Text Bot Application(UCS 文本机器人应用程序) 应用程序图并打开它。这将在画布中加载应用程序图。如果某些微服务超出视图范围,请右键单击画布以打开上下文菜单,然后单击 Focus on All(聚焦所有) 以自动平移和缩放画布,以便所有微服务都可见。
添加 / 替换微服务
对于此应用程序
BotMaker Text Web App(BotMaker 文本 Web 应用程序) 应替换为 BotMaker Speech Web App(BotMaker 语音 Web 应用程序)
将需要额外的 BotMaker Bot Controller(BotMaker 机器人控制器) 微服务
为此,请在画布上选择
BotMaker Text Web App
微服务实例,然后右键单击它以打开上下文菜单,然后单击 Delete Selection(删除所选内容) 以删除该微服务。
接下来,通过在左侧的微服务列表中搜索 BotMaker Speech Web App(BotMaker 语音 Web 应用程序) 和 BotMaker Bot Controller(BotMaker 机器人控制器) 微服务,并将它们拖放到画布上,来添加它们。这是该图现在应有的样子
连接微服务
BotMaker Speech Web App
的bot-controller
出口端点需要连接到BotMaker Bot Controller
的grpc-api
入口端点BotMaker Speech Web App
的bot-editor
出口端点需要连接到BotMaker Editor
的http-api
入口端点BotMaker Bot Controller
的dialog-manager
出口端点需要连接到BotMaker Dialog Manager
的dialog-manager
入口端点BotMaker Bot Controller
的riva
出口端点需要连接到Riva Speech Skills
的riva-speech-api
入口端点
通过从出口端点拖动到入口端点来执行此操作,如 连接微服务 中所示。该图现在应如下所示

加载参数
将以下内容保存到文件(例如 params.yaml)
'BotMaker Dialog Manager': configNgcPath: eevaigoeixww/staging/botmaker-quickstart:23.10.2-ea botConfigName: bots/misty/misty_bot_config.yaml imagePullSecrets: - name: ngc-docker-reg-secret 'Riva Speech Skills': ucfVisibleGpus: [0] modelRepoGenerator: clearAllRMIRSAndModels: false #> description: Flag to clear artifacts and models before downloading and deploying ngcModelConfigs: tritonGroup0: models: #> description: List of NGC models for deployment - nvidia/riva/rmir_nlp_named_entity_recognition_bert_base:2.13.0 - eevaigoeixww/conversational-ai/rmir_nlp_weather_intent_slot_bert_base:2.0.0-ea - eevaigoeixww/staging/asr_conformer_en_us_streaming_throughput_flashlight_vad:2.13.0-tokkio #english - nvidia/riva/rmir_tts_fastpitch_hifigan_en_us:2.13.0 persistentVolumeClaim: keepPVC: True imagePullSecrets: - name: ngc-docker-reg-secret 'BotMaker NLP Server': ucfVisibleGpus: [0] configNgcPath: "eevaigoeixww/staging/botmaker-quickstart:23.10.2-ea" modelConfigPath: "bots/misty/model_config.yaml" imagePullSecrets: - name: ngc-docker-reg-secret 'BotMaker Fulfillment Server': configNgcPath: "eevaigoeixww/staging/botmaker-quickstart:23.10.2-ea" fmconfigPath: "bots/misty/fulfillment_config.yaml" imagePullSecrets: - name: ngc-docker-reg-secret 'BotMaker Speech Web App': imagePullSecrets: - name: ngc-docker-reg-secret 'BotMaker Editor': imagePullSecrets: - name: ngc-docker-reg-secret 'BotMaker Bot Controller': pipeline: speech_lite configNgcPath: "eevaigoeixww/staging/botmaker-quickstart:23.10.2-ea" speechConfigPath: "bots/misty/speech_config.yaml" imagePullSecrets: - name: ngc-docker-reg-secret
接下来,按照 获取 API 密钥并加载参数 中的说明进行操作,如 UCS 文本机器人应用程序 部分所示。
在 BotMaker Bot Controller(BotMaker 机器人控制器) 微服务上设置密钥,如 UCS 文本机器人应用程序 - 设置密钥 中所示。
更新应用程序信息
单击操作栏中的 Graph Configuration(图配置) 按钮以打开图配置。
这将在底部打开 Graph Configuration(图配置)部分。
将应用程序名称更改为
ucf-speech-bot
,并可选择更新描述。
保存并构建应用程序
从顶部的 File(文件) 菜单中,选择 Save Graph As(另存为图) 以将图保存到新文件。
这将打开一个文件浏览器,导航到选择的目录并保存图。
按照 UCS 文本机器人应用程序 应用程序部分中 构建参考应用程序 中的说明构建应用程序。
部署参考应用程序
在本地 MicroK8S 集群上部署
创建拉取镜像所需的 Kubernetes 密钥
$ microk8s kubectl create secret docker-registry ngc-docker-reg-secret --docker-server=nvcr.io --docker-username='$oauthtoken' --docker-password=<NGC_API_KEY>如果为密钥使用了另一个名称而不是
ngc-docker-reg-secret
,则应在应用程序中更新相同的名称,并且应重建应用程序。
为 NGC API 密钥创建 Kubernetes 密钥
$ microk8s kubectl create secret generic ngc-api-key-secret --from-literal=NGC_API_KEY=<NGC_API_KEY>如果使用了另一个密钥名称而不是
ngc-api-key-secret
,或者使用了另一个密钥而不是NGC_API_KEY
,则应在应用程序中更新相同的名称,并且应重建应用程序。
如果尚未安装,请安装 Local Path Provisioner
$ curl https://raw.githubusercontent.com/rancher/local-path-provisioner/v0.0.23/deploy/local-path-storage.yaml | sed 's/^ name: local-path$/ name: mdx-local-path/g' | microk8s kubectl apply -f -
部署应用程序 helm chart
$ microk8s helm3 install <release-name> <app-output-helm-chart>
在 AWS 上部署应用程序
将 helm chart 复制到 AWS 实例
scp -r -i /path/to/<your_key>.pem /path/to/<app-output-helm-chart>/ ubuntu@<aws_instance_ip>:
安装 Local Path Provisioner(在 AWS 实例上)
$ curl https://raw.githubusercontent.com/rancher/local-path-provisioner/v0.0.23/deploy/local-path-storage.yaml | sed 's/^ name: local-path$/ name: mdx-local-path/g' | kubectl apply -f -
创建拉取镜像所需的 Kubernetes 密钥(在 AWS 实例上)
$ kubectl create secret docker-registry ngc-docker-reg-secret --docker-server=nvcr.io --docker-username='$oauthtoken' --docker-password=<NGC_API_KEY>如果为密钥使用了另一个名称而不是
ngc-docker-reg-secret
,则应在应用程序中更新相同的名称,并且应重建应用程序。
为 NGC API 密钥创建 Kubernetes 密钥(在 AWS 实例上)
$ kubectl create secret generic ngc-api-key-secret --from-literal=NGC_API_KEY=<NGC_API_KEY>
如果使用了另一个密钥名称而不是
ngc-api-key-secret
,或者使用了另一个密钥而不是NGC_API_KEY
,则应在应用程序中更新相同的名称,并且应重建应用程序。部署应用程序 helm chart(在 AWS 实例上)
$ helm install <release-name> <app-output-helm-chart>
与参考应用程序交互
UCS 文本机器人应用程序
监视 Pod
等待所有应用程序微服务 pod 进入运行状态
MicroK8s
$ microk8s kubectl get pod NAME READY STATUS RESTARTS AGE botmaker-dialog-manager-deployment-6d9d6fd949-88f7f 1/1 Running 0 28m botmaker-text-web-app-deployment-8499c4b857-xjwcg 1/1 Running 0 28m riva-speech-skills-deployment-74cc4c9457-mfm98 1/1 Running 0 28mAWS
$ kubectl get pods NAME READY STATUS RESTARTS AGE botmaker-dialog-manager-deployment-ffdd98965-49rbk 1/1 Running 0 48m botmaker-text-web-app-deployment-ddccf454-wsxh6 1/1 Running 0 48m riva-speech-skills-deployment-7856cc499f-9bnkf 1/1 Running 0 48m
服务列表
获取与应用程序关联的服务列表
MicroK8s
$ microk8s kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE botmaker-dialog-manager-deployment-svc ClusterIP 10.152.183.47 <none> 5000/TCP 32m botmaker-text-web-app-deployment-service NodePort 10.152.183.132 <none> 5001:31842/TCP 32m kubernetes ClusterIP 10.152.183.1 <none> 443/TCP 67d riva-speech-skills-deployment-svc ClusterIP 10.152.183.21 <none> 50051/TCP,8001/TCP 32m 29mAWS
$ kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE botmaker-dialog-manager-deployment-svc ClusterIP 10.102.53.150 <none> 5000/TCP 49m botmaker-text-web-app-deployment-service NodePort 10.96.23.19 <none> 5001:31666/TCP 49m kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 151m riva-speech-skills-deployment-svc ClusterIP 10.101.176.114 <none> 50051/TCP,8001/TCP 49m
访问 WebApp
感兴趣的服务是
botmaker-text-web-app-deployment-service
。我们将需要与该服务关联的节点端口。此端口号对于每次部署都会更改。
- MicroK8s
NodePort:
31842
在浏览器中打开
http://<MicroK8s-Host-IP>:<Botmaker-Text-Web-App-NodePort>/bot
以开始与机器人交互。- AWS
NodePort:
31666
我们将必须将此端口对外开放,以便我们可以访问它。
转到实例的 Security(安全) 选项卡,然后导航到安全组。编辑入站规则以接受来自 Anywhere-IPv4(任何位置 IPv4) (0.0.0.0/0) 的到节点端口(在本例中为
31666
)的连接。保存后,在浏览器中打开
https://<aws_instance_ip>:<NodePort>/bot
以开始与机器人交互。
应用程序 WebUI
打开 URL 后,您应该看到以下 UI
![]()
您可以在文本框中输入问题/陈述,然后单击 Submit(提交)。
机器人会回答诸如 “Hello(你好)”、“How are you?(你好吗?)”、“How is the weather in New York?(纽约的天气怎么样?)” 之类的问题/陈述
UCS 语音机器人
按照 UCS 文本机器人应用程序 中的步骤操作,等待所有 pod 运行并获取服务列表。
访问 WebApp
感兴趣的服务是
botmaker-speech-webapp-deployment-service
。我们将需要与该服务关联的节点端口。此端口号对于每次部署都会更改。
- MicroK8s
NodePort:
31746
在浏览器中打开
https://<MicroK8s-Host-IP>:<Botmaker-Speech-WebApp-NodePort>/bot
以开始与机器人交互。AWS
NodePort:
31666
我们将必须将此端口对外开放,以便我们可以访问它。
转到实例的 Security(安全) 选项卡,然后导航到安全组。编辑入站规则以接受来自 Anywhere-IPv4(任何位置 IPv4) (0.0.0.0/0) 的到节点端口(在本例中为
31666
)的连接。保存后,在浏览器中打开
https://<aws_instance_ip>:<NodePort>/bot
以开始与机器人交互。
应用程序 WebUI
打开 URL 后,您应该看到以下 UI
![]()
在授予麦克风权限后,您应该能够在 WebApp 中提供语音输入。
单击绿色麦克风按钮与机器人交谈。
单击黄色 “Unmute Speech(取消静音语音)” 按钮以收听来自机器人的音频回复。
或者,您可以在文本框中输入问题/陈述,然后单击 Submit(提交)和/或以文本格式查看回复
机器人会回答诸如 “Hello(你好)”、“How are you?(你好吗?)”、“How is the weather in New York?(纽约的天气怎么样?)” 之类的问题/陈述