AI语音技能云开发(天猫精灵技能)学习笔记之二

简介: 结营作业

通过5天的学习,基本了解天猫精灵技能开发的流程,先总结一些知识点,然后做一个小demo,作为结营作业


一、名词解释

1、意图

意图(Intent)是自定义技能中提供功能的载体,所以在创建意图时需要明确此意图提供什么样的功能。

测试的时候可以看到意图标识,判断测试效果

2、实体

设置实体是为了告诉平台算法,当从用户语句中解析参数时,参数的取值范围是什么。

一般选择公共实体,阿里这边已经做了很多预先设定,比如时间,城市,数字等等

测试的时候可以看到参数,判断测试效果

3、前置意图

这是用来做参数传递的


二、一些坑

1、后台编辑时,要主要参数名词和平台设置的一致性,有些自动配置的公共变量有括号,括号也要带进来

image.png

2、如果要设置为前置意图的参数,那名词中不能带.不然是不能传递的


三、知识库

技能开发平台——文档中心image.gif      

输入关键字搜索,在下拉菜单中选择即可image.gif

 

demo:购物清单中物品的价格查询

一、登录,进入控制台,创建新技能

image.png

二、利用模板快速开发

点击后端服务,点击创建应用,关联阿里云开发账户

语言选择python,模板选择地理小百科,点击创建

image.png

三、编辑意图

等待一下,来到语言互交模型,发现意图已经自动帮我创建好了

点击左侧的实体,创建一个自定义实体,如图

image.png

回到意图,编辑欢迎意图

image.png

设置好之后,提交

image.gif 在上一条和下一条意图中,增加前置意图,设置好参数

image.png

image.png

四、编辑后台代码

点击代码编辑、前往ide开发

image.png

进入阿里云开发平台


点击右下角的终端,输入pip install requests 安装模块

image.png

代码如下

import logging
import json
import base64
import random
import collections
import requests
USER_MAP = {}
KNOWLEDGE = [
    "大米",
    "餐巾纸",
    "卫生纸",
    "酱油"    
]
KNOWLEDGEJJDid = [
    "4592915",
    "100015114144",
    "1082266",
    "100006624003"    
]
def jdprice(l_index):
  #京东
    URL ='https://p.3.cn/prices/mgets?skuIds='+KNOWLEDGEJJDid[l_index]
    headers = {
        'User-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36',
        'Cookie': '',
        'Connection': 'keep-alive',
        'Accept': '*/*',
        'Accept-Encoding': 'gzip, deflate, sdch',
        'Accept-Language': 'zh-CN,zh;q=0.8',
        'Host': 'p.3.cn',
        'Referer': 'https://book.jd.com/booktop/0-0-0.html?category=1713-0-0-0-10001-1'
    }   
    res = requests.get(URL,headers=headers)
    jdp=json.loads(res.text)
    return jdp[0]['p']
KNOWLEDGEJTB = [
    "55.3",
    "60",
    "56.9",
    "100006624003"    
]
def tbprice(l_index):
    return KNOWLEDGEJTB[l_index]
KNOWLEDGEJPDD = [
    "4592915",
    "100015114144",
    "1082266",
    "100006624003"    
]
def pddprice(l_index):
    return KNOWLEDGEJPDD[l_index]
def pricecx(l_index,maket):
    if maket=='京东':
        return jdprice(l_index)
    if maket=='淘宝':
        return tbprice(l_index)
    if maket=='拼多多':
        return pddprice(l_index) 
#print(pricecx(0,'淘宝'))
def common_reply(reply, result_type):
    response = {
        "isBase64Encoded": "false",
        "statusCode": "200",
        "headers": {"content-type": "application/json"},
        "body": {
            "returnCode": "0",
            "returnErrorSolution": "",
            "returnMessage": "",
            "returnValue": {
                "reply": reply,
                "resultType": result_type,
                "executeCode": "SUCCESS",
                "msgInfo": "",
            }
        }
    }
    return response
# 未指定追问参数,音箱自动开麦,用户的回答可跳转到其它意图
def ask_reply(reply):
    return common_reply(reply, 'ASK_INF')
# 结束对话的回复,回复后音箱闭麦
def result_reply(reply):
    return common_reply(reply, 'RESULT')
def handler(event, context):
    request = json.loads(event)
    logger = logging.getLogger()
    body = base64.b64decode(request['body']).decode()
    data = json.loads(body)
    maket=data['slotEntities'][0]['originalValue']
    logger.info('request body:' + body)
    # 从请求中获取意图参数以及参数值
    intent_name = data['intentName']
    user_id = getattr(data['requestData'], 'userOpenId', 'testUser')
    global USER_MAP
    linked_list = USER_MAP.get(user_id)
    # 欢迎意图 或 用户缓存数据为空
    if intent_name == "welcome" or linked_list is None:
        linked_list = collections.deque()
        random_index = random.randint(0, len(KNOWLEDGE) - 1)
        linked_list.append(random_index)
        USER_MAP[user_id] = linked_list
        return ask_reply(KNOWLEDGE[random_index]+'在'+maket+'平台的价格是'+pricecx(random_index,maket))
    # 下一个意图,随机选择一个内容回复,并将index追加到用户数据的List集合最后
    elif intent_name == "next":
        random_index = random.randint(0, len(KNOWLEDGE) - 1)
        linked_list.append(random_index)
        USER_MAP[user_id] = linked_list
        return ask_reply(KNOWLEDGE[random_index]+'在'+maket+'平台的价格是'+pricecx(random_index,maket))
    # 上一个意图,将用户数据的List集合中最后一个index移除,并返回该index的内容。首先要判断集合内是否有元素,没有则不需要移除
    elif intent_name == "prev":
        if len(linked_list) > 0:
            linked_list.pop()
        if len(linked_list) == 0:
            return ask_reply("这已经是第一个了。")
        return ask_reply(KNOWLEDGE[linked_list[len(linked_list) - 1]] +'在'+maket+'平台的价格是'+pricecx(linked_list[len(linked_list) - 1],maket))
    # 退出意图,清除用户缓存
    elif intent_name == "exit":
        USER_MAP.pop(user_id)
        return result_reply("已为您退出,再见。")
    return result_reply("请检查意图名称是否正确,或者新增的意图没有在代码里添加对应的处理分支。")

image.gif

代码还有许多需要优化修改的地方,主要是学习掌握,意图之间的参数传递等知识点。

目录
相关文章
|
21天前
|
人工智能 自然语言处理 API
Mathtutor on Groq:AI 数学辅导工具,实时计算并展示解题过程,支持通过语音提出数学问题
Mathtutor on Groq 是一款基于 Groq 架构的 AI 数学辅导工具,支持语音输入数学问题,实时计算并渲染解题过程,适用于代数、微积分等领域的学习和教学辅助。
79 5
Mathtutor on Groq:AI 数学辅导工具,实时计算并展示解题过程,支持通过语音提出数学问题
|
18天前
|
人工智能 移动开发 JavaScript
如何用uniapp打包桌面客户端exe包,vue或者uni项目如何打包桌面客户端之electron开发-优雅草央千澈以开源蜻蜓AI工具为例子演示完整教程-开源代码附上
如何用uniapp打包桌面客户端exe包,vue或者uni项目如何打包桌面客户端之electron开发-优雅草央千澈以开源蜻蜓AI工具为例子演示完整教程-开源代码附上
107 18
|
26天前
|
人工智能 自然语言处理 Java
【100%好礼】诚邀体验SoFlu-JavaAl开发助手,重塑AI编码价值
在这个数字化时代,软件开发任务繁重,飞算科技推出SoFlu-JavaAl开发助手,诚邀您体验AI编码新境界。它不仅生成代码,还通过自然语言理解需求,精准生成完整工程源码,大幅缩短设计工期,提升效率。SoFlu-JavaAl支持一键构建Java Maven工程,轻松合并老项目,快速响应需求变更。参与体验还有机会获多重好礼!
|
15天前
|
人工智能 开发框架 安全
Smolagents:三行代码就能开发 AI 智能体,Hugging Face 开源轻量级 Agent 构建库
Smolagents 是 Hugging Face 推出的轻量级开源库,旨在简化智能代理的构建过程,支持多种大语言模型集成和代码执行代理功能。
238 69
Smolagents:三行代码就能开发 AI 智能体,Hugging Face 开源轻量级 Agent 构建库
|
11天前
|
人工智能 前端开发 程序员
通义灵码 AI 程序员全面上线,能和人类协作完成复杂开发任务
1 月 8 日消息,阿里云通义灵码 AI 程序员已全面上线,成为全球首个同时支持 VS Code、JetBrains IDEs 开发工具的 AI 程序员产品。此次上线的 AI 程序员相比传统 AI 辅助编程工具,能力更全面,可以让开发者以更高效、更沉浸的方式完成编码任务,通过全程对话协作的方式,就能完成从 0 到 1 的业务需求开发、问题修复、单元测试批量生成等复杂编码任务。
286 65
|
3天前
|
人工智能 数据处理 语音技术
Pipecat实战:5步快速构建语音与AI整合项目,创建你的第一个多模态语音 AI 助手
Pipecat 是一个开源的 Python 框架,专注于构建语音和多模态对话代理,支持与多种 AI 服务集成,提供实时处理能力,适用于语音助手、企业服务等场景。
41 23
Pipecat实战:5步快速构建语音与AI整合项目,创建你的第一个多模态语音 AI 助手
|
3天前
|
机器学习/深度学习 人工智能 自然语言处理
三行代码实现实时语音转文本,支持自动断句和语音唤醒,用 RealtimeSTT 轻松创建高效语音 AI 助手
RealtimeSTT 是一款开源的实时语音转文本库,支持低延迟应用,具备语音活动检测、唤醒词激活等功能,适用于语音助手、实时字幕等场景。
48 18
三行代码实现实时语音转文本,支持自动断句和语音唤醒,用 RealtimeSTT 轻松创建高效语音 AI 助手
|
5天前
|
人工智能 开发框架 自然语言处理
Eko:一句话就能快速构建复杂工作流的 AI 代理开发框架!快速实现自动操作电脑和浏览器完成任务
Eko 是 Fellou AI 推出的开源 AI 代理开发框架,支持自然语言驱动,帮助开发者快速构建从简单指令到复杂工作流的智能代理。
97 12
Eko:一句话就能快速构建复杂工作流的 AI 代理开发框架!快速实现自动操作电脑和浏览器完成任务
|
17天前
|
存储 人工智能 开发框架
Eliza:TypeScript 版开源 AI Agent 开发框架,快速搭建智能、个性的 Agents 系统
Eliza 是一个开源的多代理模拟框架,支持多平台连接、多模型集成,能够快速构建智能、高效的AI系统。
125 8
Eliza:TypeScript 版开源 AI Agent 开发框架,快速搭建智能、个性的 Agents 系统
|
2天前
|
人工智能 JavaScript 前端开发
一段 JavaScript 代码,集成网站AI语音助手
根据本教程,只需通过白屏化的界面操作,即可快速构建一个专属的AI智能体。

热门文章

最新文章