【4】天猫精灵开放实验平台实验—创建百科小助手

简介: 【4】天猫精灵开放实验平台实验—创建百科小助手

一、创建新技能


1、打开AliGenie技能应用平台,点击“创建新技能”。



2、填写基本信息。点击“确认创建”。




3、创建后端服务。(过程参考前文博客)



4、选择“地理小百科”。



5、后端调试代码示例。


package com.alibaba.ailabs;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.concurrent.ConcurrentHashMap;
import com.alibaba.ailabs.common.AbstractEntry;
import com.alibaba.da.coin.ide.spi.meta.ExecuteCode;
import com.alibaba.da.coin.ide.spi.meta.ResultType;
import com.alibaba.da.coin.ide.spi.standard.ResultModel;
import com.alibaba.da.coin.ide.spi.standard.TaskQuery;
import com.alibaba.da.coin.ide.spi.standard.TaskResult;
import com.alibaba.fastjson.JSON;
import com.aliyun.fc.runtime.Context;
/**
 * @Description 天猫精灵技能函数入口,FC handler:com.alibaba.ailabs.GenieEntry::handleRequest
 * @Version 1.0
 **/
public class GenieEntry extends AbstractEntry {
    private static final Map<String, LinkedList<Integer>> USER_MAP = new ConcurrentHashMap<>();
    private static final List<String> KNOWLEDGE;
    private static Random random = new Random();
    static {
        KNOWLEDGE = Arrays.asList(
            "世界热极:巴士拉(伊拉克)最高记录58.8摄氏度",
            "世界冷极:东方站(南极)最低记录-89.2摄氏度",
            "世界湿极:怀厄莱阿莱(太平洋上的一个岛屿)每年平均有335天下雨,年降水量达12244毫米",
            "世界干极:阿塔卡马沙漠(南美洲)平均年降水量小于0.1毫米,1845年~1936年的91年间未曾下雨",
            "海拔最高的山峰:珠穆朗玛峰(海拔8844.43米)",
            "地球上体积最大的山及火山:冒纳罗亚火山(MaunaLoa,夏威夷岛,海拔4169米,火山体积达7万5000立方公里)",
            "地球上最高的活火山:奥霍斯德尔萨拉多山(海拔6893米)",
            "太阳系内已知的最高、体积最大的山及火山:奥林帕斯火山(火星,高达约27公里)",
            "最大的岛屿:格陵兰岛(面积达2166086平方公里)",
            "人口最多的岛屿:爪哇岛(人口达12400万)",
            "唯一分属三个国家的岛屿:加里曼丹岛",
            "最大的湖泊及咸水湖:里海(面积达371000平方公里)",
            "最大的淡水湖:坦噶尼喀湖(非洲)",
            "最深的湖泊及淡水湖:贝加尔湖(水深达1940米)",
            "海拔最低的湖泊:死海(湖面海拔负392米,是已露出陆地的最低点)",
            "最咸的湖泊:死海(湖水盐度达300‰,为一般海水的8.6倍)",
            "最古老的湖泊:贝加尔湖(已经在地球上存在超过2500万年)",
            "最长的河流:尼罗河(全长6671公里)",
            "流域面积最大的河流:亚马逊河(面积达7050000平方公里)",
            "含沙最多的河流:黄河(1977年录得最高含沙量达每立方米920千克沙)",
            "流经最多国家的河流:多瑙河(流经西欧至东欧共18个国家)",
            "最早的运河:古苏伊士运河(建于公元前19世纪,完成于前500年,8世纪被毁弃,19世纪重建。)",
            "海拔最高的长河:雅鲁藏布江(河床海拔平均在3000米以上)",
            "太阳系已知的最大峡谷:水手号峡谷(火星,长达4500公里,阔200公里,深11公里)",
            "最大的沙漠:撒哈拉沙漠(面积约有960多万平方千米)",
            "面积最大的盆地:刚果盆地",
            "世界上已知体积最大的独立岩石:艾尔斯巨石(高348米,底沿周长约9400米,占地面积约1200公顷)",
            "质量最大的行星:木星(约为其余八大行星质量总和的2倍)",
            "太阳系中最大的卫星:木卫三",
            "最深的海沟:马里亚纳海沟(深11034米)",
            "最长的洋流:南极环流(长达21000公里)"
        );
    }
    @Override
    public ResultModel<TaskResult> execute(TaskQuery taskQuery, Context context) {
        context.getLogger().info("taskQuery: " + JSON.toJSONString(taskQuery));
        String userId = taskQuery.getRequestData().get("userOpenId");
        userId = userId == null ? "testUser" : userId;
        LinkedList<Integer> list = USER_MAP.get(userId);
        //欢迎意图 或 用户缓存数据为空
        if ("welcome".equals(taskQuery.getIntentName()) || list == null) {
            list = new LinkedList<>();
            int randomIndex = random.nextInt(KNOWLEDGE.size());
            list.addLast(randomIndex);
            USER_MAP.put(userId, list);
            return intentChangeReply(KNOWLEDGE.get(randomIndex));
        }
        //下一个意图,随机选择一个内容回复,并将index追加到用户数据的LinkedList集合最后
        if ("next".equals(taskQuery.getIntentName())) {
            int randomIndex = random.nextInt(KNOWLEDGE.size());
            list.addLast(randomIndex);
            return intentChangeReply(KNOWLEDGE.get(randomIndex));
        }
        //上一个意图,将用户数据的LinkedList集合中最后一个index移除,并返回该index的内容。首先要判断集合内是否有元素,没有则不需要移除
        if ("prev".equals(taskQuery.getIntentName())) {
            if (list.size() > 0) {
                list.removeLast();
            }
            if (list.size() == 0) {
                return intentChangeReply("这已经是第一个了。");
            }
            return intentChangeReply(KNOWLEDGE.get(list.get(list.size() - 1)));
        }
        //退出意图,清除用户缓存
        if ("exit".equals(taskQuery.getIntentName())) {
            USER_MAP.remove(userId);
            return reply("已为您退出,再见。");
        }
        return reply("请检查意图名称是否正确,或者新增的意图没有在代码里添加对应的处理分支。");
    }
    /**
     * 结束对话的回复,回复后音箱闭麦
     */
    private ResultModel<TaskResult> reply(String reply) {
        return getResult(reply, ResultType.RESULT);
    }
    /**
     * 未指定追问参数,音箱自动开麦,用户的回答可跳转到其它意图
     */
    private ResultModel<TaskResult> intentChangeReply(String reply) {
        return getResult(reply, ResultType.ASK_INF);
    }
    private ResultModel<TaskResult> getResult(String reply, ResultType askInf) {
        ResultModel<TaskResult> res = new ResultModel<>();
        TaskResult taskResult = new TaskResult();
        taskResult.setReply(reply);
        taskResult.setExecuteCode(ExecuteCode.SUCCESS);
        taskResult.setResultType(askInf);
        res.setReturnCode("0");
        res.setReturnValue(taskResult);
        return res;
    }
}


6、预发环境,部署。




7、意图已经自动创建完成。



8、在线测试完成。


相关文章
|
12天前
|
人工智能 并行计算 安全
从零到一,打造专属AI王国!大模型私有化部署全攻略,手把手教你搭建、优化与安全设置
【10月更文挑战第24天】本文详细介绍从零开始的大模型私有化部署流程,涵盖需求分析、环境搭建、模型准备、模型部署、性能优化和安全设置六个关键步骤,并提供相应的示例代码,确保企业能够高效、安全地将大型AI模型部署在本地或私有云上。
102 7
|
6月前
|
人工智能 IDE JavaScript
Comate:百度智能云推出的基于大模型的代码编写助手
【2月更文挑战第13天】Comate:百度智能云推出的基于大模型的代码编写助手
112 2
Comate:百度智能云推出的基于大模型的代码编写助手
|
6月前
|
人工智能 机器人 Go
飞书+ChatGPT搭建智能AI助手,无公网ip实现公网访问飞书聊天界面
飞书+ChatGPT搭建智能AI助手,无公网ip实现公网访问飞书聊天界面
657 0
|
人工智能 Java
零基础五步骤,从零开始天猫精灵
零基础五步骤,从零开始天猫精灵
974 1
零基础五步骤,从零开始天猫精灵
|
4月前
|
人工智能 前端开发 搜索推荐
详解基于百炼平台及函数计算快速上线网页AI助手
通过阿里云百炼平台,企业可在10分钟内为其网站添加智能客服系统,提升用户体验并降低成本。流程包括:创建大模型应用、配置参数(如温度系数以控制回复的随机性)、发布应用获取API密钥;使用函数计算快速搭建示例网站,并通过简单的代码更改启用AI助手功能;还可导入私有知识库增强助手的能力。前端基于NLUX开发,支持定制化需求如样式调整和历史会话管理。服务端代码提供了调用大模型获取答案的接口。借助百炼平台,企业能迅速部署即时且个性化的在线服务,适应数字化转型的需求。
|
4月前
|
自然语言处理 监控 搜索推荐
阿里云百炼知识检索应用评测:搭建个人/企业专属智能问答助手
阿里云百炼知识检索应用评测:搭建个人/企业专属智能问答助手
236 3
|
4月前
|
弹性计算 人工智能 运维
60分钟深度测评阿里云基于大模型构建的操作系统智能助手
OS Copilot 概要 OS Copilot 是阿里巴巴云针对Linux操作系统开发的智能助手,集成在Alibaba Cloud Linux中,利用大模型技术提供自然语言问答、命令行辅助、阿里云CLI调用和系统运维功能。它尤其适合新手,直观的交互方式提升效率。此外,OS Copilot支持在操作系统内直接管理阿里云资源,简化运维任务。目前,该助手仅在特定版本的Alibaba Cloud Linux上可用。体验者可以通过提供的链接和指南进行实操,体验其功能,如命令行的自然语言交互和环境变量配置。OS Copilot在提高用户体验和工作流集成方面的创新,预示着未来AI在操作系统中的广泛应用。
|
4月前
|
运维 自然语言处理 Linux
阿里云智能助手OS Copilot实验测评报告
阿里云OS Copilot是针对Linux的智能助手,融合大模型技术,提供自然语言问答、命令执行和运维调优等服务。在活动中,体验了创建AccessKey、运行Python代码监控网络流量等功能,还展示了其知识回答和辅助编程能力。尽管操作手册有待完善,但OS Copilot的快速响应和全面功能给人留下深刻印象,期待未来改进和更多成就。
|
6月前
|
自然语言处理 机器人 Go
如何在飞书创建企业ChatGPT智能问答助手应用并实现公网远程访问(1)-1
如何在飞书创建企业ChatGPT智能问答助手应用并实现公网远程访问(1)-1
|
6月前
|
自然语言处理 机器人
如何在飞书创建企业ChatGPT智能问答助手应用并实现公网远程访问(1)-3
如何在飞书创建企业ChatGPT智能问答助手应用并实现公网远程访问(1)-3
下一篇
无影云桌面