使用第三方API打造智能对话:Amazon Lex聊天机器人轻松实现

news2024/11/24 8:04:32

这是本系列文章的第四篇,旨在通过动手实践,帮助大家学习亚马逊云科技的生成式AI相关技能。通过这些文章,大家将掌握如何利用亚马逊云科技的各类服务来应用AI技术。

那么让我们开始今天的内容吧!

引言

什么是Amazon Lex?

Amazon Lex是一项完全托管的服务,帮助您为应用程序构建基于语音和文本的对话界面。它提供以下功能:

  • 自然语言理解(NLU):Amazon Lex运用深度学习技术,能够理解用户发言的意图,即使这些发言是开放性的、模糊的或带有拼写错误。
  • 自动语音识别(ASR):Amazon Lex可以实时将用户的语音转换为文本,您无需再为构建或维护自己的ASR引擎而操心。
  • 对话管理:Amazon Lex负责管理对话流程,您只需专注于构建机器人的内容即可。
  • 部署和扩展:通过Amazon Lex,您可以轻松地将机器人部署到任何渠道,无论是网页、移动设备,还是语音平台。此外,您可以根据需求灵活扩展或缩减机器人的规模。

架构图

 

创建Lambda函数

首先,导航到顶部的服务菜单,然后在“计算”部分点击Lambda(或者您也可以在搜索栏中搜索Lambda)。

确保您所在的区域是美国东部(弗吉尼亚北部)us-east-1。

点击“创建函数”。

选择“从头开始编写”作为创建方式。

在函数名称一栏输入:myLambdaAPIFunction

运行时选择:Node.js 16.x

权限部分:点击“更改默认执行角色”,并选择“使用现有角色”。

在“现有角色”下拉列表中,选择lambda_Role_<RANDOM_NUMBER>

点击“创建函数”。

配置页面:在这里,我们需要配置Lambda函数。如果向下滚动页面,您会看到“代码来源”(Function code)部分。在此,我们需要编写Node.js代码,该代码将读取来自Amazon Lex的请求,并将Rest API的响应发送回Amazon Lex。

首先删除AWS Lambda中的index.js文件中的现有代码。然后将以下代码复制并粘贴到index.js文件中。

var https = require('https');
exports.handler = (event, context, callback) => {
var STATUS = "false";
var lookItem = event.currentIntent.slots.item;
var msg = event.currentIntent.slots.target_countries;
lookItem = lookItem.charAt(0).toUpperCase() + lookItem.slice(1);
msg = msg.charAt(0).toUpperCase() + msg.slice(1);
if (msg == "USA" || msg == "America" || msg == "Usa" || msg == "The united states of america" || msg == "U.S.A") {
msg = "United States of America";
}
var url = "https://restcountries.com/v2/name/" + msg;
var res = https.get(url, function (res) {
var body = '';
res.on('data', function (chunk) {
body += chunk;
});
res.on('end', function () {
var response = JSON.parse(body);
console.log("Got a response: " + response);
for (var i = 0; i < response.length; i++) {
if (response[i]['name'] == msg) {
if (lookItem == "Capital") {
var result = "The capital of " + msg + " is " + response[i]['capital'];
STATUS = "true";
}
else if (lookItem == "Currency") {
var result = "The currency of " + msg + " is " + response[i]['currencies'][0]['name'];
STATUS = "true";
}
else if (lookItem == "Language") {
var result = "The language of " + msg + " is " + response[i]['languages'][0]['name'];
STATUS = "true";
}
}
}
if (STATUS == "false") {
result = "The " + lookItem + " of " + msg + " not found.!";
}
var capital = {
"dialogAction": {
"type": "Close",
"fulfillmentState": "Fulfilled",
"message": {
"contentType": "PlainText",
"content": result
}
}
};
callback(null, capital);
});
});
};

Node.js代码的主要任务包括:

  • 读取Lex事件名称以及传递给Lambda的值。
  • 从第三方API获取国家信息。
  • 将所需的信息存储在一个变量中。
  • 将变量的值转换为Amazon Lex响应格式。
  • 将格式化后的响应发送给Amazon Lex。

最后,点击右上角的“部署”按钮保存函数。

配置测试事件

点击“测试”按钮。

在“配置测试事件”页面上,

  • 事件模板:选择hello-world模板。
  • 事件名称:输入myTestLex

删除现有的JSON脚本,并将以下代码复制粘贴到其中。

{
    "bot": {  
    "name": "myAPIChatBot",
    "alias": "null",
    "version": "$LATEST"
    },
    "currentIntent": {
    "name": "country",
    "slots": {
    "target_countries": "India",
    "item": "Capital"
    },
    "slotDetails": {
    "Name": {
    "resolutions": [],
    "originalValue": "test"
    }
    },
    "confirmationStatus": "None"
    },
    "inputTranscript": "what is the capital of india"
    }

点击“保存”按钮。

创建的测试事件可以通过切换到“测试”选项卡进行查看。

创建聊天机器人

首先,导航到顶部的服务菜单,然后在“机器学习”部分点击Amazon Lex(或者您可以在搜索栏中搜索Amazon Lex)。

在Amazon Lex页面,点击“开始使用”。

在左侧面板,点击“返回V1控制台”按钮。

要创建一个聊天机器人,点击“创建”按钮。

创建您的机器人:

  • 选择:自定义机器人
  • 机器人名称:输入myAPIChatBot
  • 语言:选择英语(美国)
  • 输出语音:选择,这是一个基于文本的应用程序
  • 会话超时:输入5分钟
  • 情感分析:选择
  • IAM角色:保持默认设置
  • COPPA:选择
  • 高级选项:选择

点击“创建”。

 

创建意图

点击“创建意图”。

选择“创建意图”。

为新意图命名:输入country

点击“添加”。

在“示例话语”下,输入以下内容:

{item} of {target_countries}

点击加号图标或按[Enter]键。

please tell me the {item} of {target_countries}

点击加号图标或按[Enter]键。

what is the {item} of {target_countries}

点击加号图标或按[Enter]键。

在“槽位”部分:

创建一个槽位来存储国家名称:

  • 名称:输入target_countries
  • 槽位类型:选择AMAZON.country
  • 提示:输入您想知道哪个国家的信息?

要创建另一个槽位来存储任务名称,点击加号图标:

  • 名称:输入item
  • 槽位类型:选择AMAZON.US_FIRST_NAME
  • 提示:输入您想了解什么信息?

然后点击加号图标将其添加。

注意:请确保两个“必填”复选框都已选中。

在“履行”部分:

选择AWS Lambda函数。

  • Lambda函数:选择myLambdaAPIFunction
  • 在弹出的“向Lambda函数添加权限”对话框中:点击“确定”
  • 版本或别名:选择“最新”

向下滚动并点击“保存意图”。

在左侧边栏的“意图”部分,您将能够看到新创建的意图country

构建聊天机器人

点击右上角的“构建”按钮,然后再次点击“构建”以开始构建应用程序。

注意:构建过程需要几分钟时间。
构建完成后,您将能够看到以下提示消息:

 

测试您的聊天机器人

当聊天机器人成功创建后,您会在右侧边栏看到一个消息框。

输入what is the capital of Australia,然后按[Enter]键。

您将看到机器人返回的响应。

输入what is the language of India,然后按[Enter]键。

您将看到机器人返回的响应。

输入what is the currency of USA,然后按[Enter]键。

您将看到机器人返回的响应。

现在尝试输入我们没有创建的意图以外的内容,并观察输出结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2082360.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第十三章- 游戏结束

在这个例子中我们开始研究一个带有记分的真正可玩的游戏。我们给MyWidget一个新的名字GameBoard并添加一些槽。 我们把定义放在gamebrd.h并把实现放在gamebrd.cpp。 CannonField现在有了一个游戏结束状态。 在LCDRange中的布局问题已经修好了。 lcdrange.h包含LCDRange类定…

如何使用ssm实现学生就业管理系统

TOC ssm328学生就业管理系统jsp 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进行科学化&#xff0c;规范化管理。…

AI算力资源池建设重点

I算力资源池建设正当时 随着深度学习和计算机视觉领域的快速发展&#xff0c;各行各业对于AI算力资源的需求也在快速增长。AI算力池化不仅有助于提高资源的利用率&#xff0c;还可以提高工作效率、减少管理成本。今天就我们一起探讨如何组织和管理AI算力资源池、实现算力资源的…

真话有危险,测评需谨慎!一个家最大的内耗:谁都在抱怨,没人肯改变——早读(逆天打工人爬取热门微信文章解读)

现在都这么完了吗&#xff1f; 引言Python 代码第一篇 洞见 一个家最大的内耗&#xff1a;谁都在抱怨&#xff0c;没人肯改变第二篇 故事风云录结尾 引言 慢慢调整时间 一是现在有点忙 做那个传播声音的研究实验实在是有点没有头绪 没有头绪的事情你就不知道怎么安排时间 也就…

【随记】开源 AI(Open source AI)

开源 AI(Open source AI) 1. 开源AI的重要性 2. 主要开源AI框架和工具 3. 开源AI项目的典型应用 4. 参与开源AI社区的好处 5. 开源AI的挑战与风险 6. 未来展望 &#x1f388;边走、边悟&#x1f388;迟早会好 开源人工智能&#xff08;Open Source AI&#xff09;指的是…

html+css+js网页设计 个人博客模版 4个页面

htmlcssjs网页设计 个人博客模版 4个页面 网页作品代码简单&#xff0c;可使用任意HTML编辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&#xff09;。 获取源码 1&…

漏洞复现-浪潮-GS企业管理软件-RCE

本文来自无问社区&#xff0c;更多漏洞复现可前往社区查看http://www.wwlib.cn/index.php/artread/artid/4564.html 0x01 产品简介 浪潮GS是浪潮研发的系统软件&#xff0c;浪潮GS&#xff0c;采用SOA 架构和先进开放的GSP 应用中间件开发&#xff0c;面向大中型集团企业提供…

Qt+FFmpeg开发视频播放器笔记(一):环境搭建

一、FFmpeg介绍 FFmpeg是一个开源的跨平台多媒体处理工具集&#xff0c;它可以用于处理音频、视频和其他多媒体数据。FFmpeg提供了一组功能强大的命令行工具&#xff0c;用于音频和视频的编解码、转换、处理、流媒体传输等任务。 FFmpeg支持多种音频和视频格式&#xff0c;包…

数模备赛(二):cvxpy凸优化库安装

03线性规划、整数规划与案例讲解视频上_哔哩哔哩_bilibili 强烈安利b站的司守奎老师讲的python数学建模&#xff0c;非常详细 但是在安装cvxpy库遇到了一点麻烦&#xff08;有的教程用的是linprog这个库&#xff0c;但是要求最优化问题必须先改写成标准型&#xff0c;感觉还是有…

自动分词代码

代码 from wordsegment import load, segment# 加载模型 load()# 示例 actions ["seeyoulater","turnleft","turnr" ]segmented_actions [segment(action) for action in actions] segmented_actions [" ".join(action) for actio…

SAP FI模块开发

1. SAP FI模块财务主数据管理 2. 总账核算

【芯片CDC/RDC】如何解决RDC问题

SoC设计除了包含多个电压域、多个时钟域外还包含了多个异步复位域。如果SoC中存在跨异步复位域时&#xff0c;同样经常会遇到亚稳态的问题。 举个例子&#xff0c;如下图&#xff1a; 好评如潮&#xff0c;一定要把景芯打磨成精品&#xff01; 对于有多个异步复位域的设计&…

拍照还原空白试卷,建议你试试这些工具

拍照还原空白试卷&#xff0c;在现代教育中&#xff0c;试卷的电子化管理变得越来越重要。无论是老师还是学生&#xff0c;都希望能够方便地获取和使用电子版试卷。然而&#xff0c;手写答案和批注常常使得电子版试卷难以还原到原始的空白状态。为此&#xff0c;市场上涌现出许…

【CanMV K230】摄像头使用

【CanMV K230】摄像头使用 摄像头Sensor对象构造函数1.1 sensor.reset()1.2 .sensor.set_framesize1.3 sensor.set_pixformat1.4 sensor.set_hmirror(enable) (略)1.5 sensor.set_vflip(enable)(略)1.6 sensor.run1.7 sensor.snapshot&#xff08;&#xff09; 例程使用 从今天…

56.基于IIC协议的EEPROM驱动控制(3)跨时钟域处理

&#xff08;1&#xff09;跨时钟域处理&#xff1a;在使用低频时钟去采集高频信号时&#xff0c;会出现采集不正确的现象&#xff0c;因此需要进行跨时钟域处理。 多比特信号的跨时钟域处理可以使用FIFO、RAM等IP核进行处理&#xff1b; 单比特信号低频到高频可以使用打拍的方…

GitLab私有代码仓库搭建与使用

文章目录 一、安装GitLab1、下载安装2、修改配置3、启动gitlab4、登录 二、使用1、ssh-key 参考资料 一、安装GitLab 1、下载安装 gitlab-ce的rpm包清华源地址&#xff1a; https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/?CN&OD 本次使用gitlab-ce-17.1.1-c…

近500个自然助眠冥想白噪音ACCESS\EXCEL数据包

今天这份数据是从一款特别简单好用助眠辅助应用软件中提取出来的MP3数据包&#xff0c;包含很多纯净音乐、助眠音乐、冥想音乐&#xff0c;可以帮助用户轻松进行多种白噪音音乐播放&#xff0c;帮助用户更好进行压力释放&#xff0c;感受更多舒适身心纯音乐体验。分类非常多&am…

【Java】数据类型与变量(一)

目录 1.字面常量 1.1什么是常量 1.2字面常量的分类: 2.数据类型 2.1基本数据类型 2.2一个小问题&#xff1a;什么是字节&#xff1f; 1.字面常量 1.1什么是常量 在一篇文章HelloWorld程序中&#xff0c;System.Out.println("Hello World");语句,不论程序何时运…

上网行为管理是什么?上网行为管理系统分享(六款上网行为管理系统介绍)2024年必备!

早期的上网行为管理系统&#xff0c;主要是对一些网站进行拦截&#xff0c;但企业数据泄露的现象仍旧普遍&#xff0c;敌人不止黑客。在激烈的商业竞争中&#xff0c;面对利益的诱惑&#xff0c;掌握着公司重要数据的员工也是不可控的危险因素。 本文将深入探讨上网行为管理的概…

2008-2024年荣威汽车维修手册和电路图线路图接线图资料更新

经过整理&#xff0c;2009-2024年名爵汽车全系列已经更新至汽修帮手资料库内&#xff0c;覆盖市面上99%车型&#xff0c;包括维修手册、电路图、新车特征、车身钣金维修数据、全车拆装、扭力、发动机大修、发动机正时、保养、电路图、针脚定义、模块传感器、保险丝盒图解对照表…