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

这是本系列文章的第四篇,旨在通过动手实践,帮助大家学习亚马逊云科技的生成式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]键。

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

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

  • 13
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值