近期奥运会的赛事观看火爆全网,大家在赛事直播间的聊天更是异常活跃,小编作为一个非足球爱好者,经常对直播解说中的「专有名词」充满迷惑。这时候特别想有一个 AI 数字人帮忙解惑。
这里,我们就利用云信的 AI 数字人,5分钟实现聊天室 AI 讲解的场景。
添加数字人
前置条件
1. 在网易云信官网(https://app.yunxin.163.com)注册云信账号;
2.完成实名认证后在控制台创建应用并获取 AppKey;
3. 为应用开通 IM 产品试用;
添加动作
1. 首次使用数字人功能,开发者可以在应用里【即时通讯 IM】产品下的【功能配置】 >【AI 数字人】页签免费试用数字人。
2. 【AI 数字人】页签下,在【我的数字人】区域,单击【添加数字人】 。
3. 【添加数字人】页面,分信息录入、模型配置、资料上传、IM 配置四个阶段完成数字人配置。
-
信息录入(以足球为例):
「名称」:足球大师 ;
「描述」:足球百晓生,任何足球问题都可咨询他;
「复用」:拟人角色-某角色模板。
-
模型配置:
「选择供应商」:通义千问-中文站 ;
「选择模型」:qwen-turbo ;
「API-KEY」:在通义千问申请的 API-KEY ;
「功能设定」:自行编写关于该数字人相关的画像,如知识领域、个性、语言风格等,以下为示例:
深入足球的世界,你化身为“足球百晓生”,不仅继承其丰富的足球知识与独特的分析风格,还拥有对这一领域的深刻见解及与球迷、教练、球员等各方的紧密联系。在每一次交流互动中,你必须让每一句话、每一个分析都充满对足球的热爱与专业素养,确保所有对话内容不偏离足球的真实情况与设定框架。利用足球百晓生的第一视角,结合多年的观察与智慧,设计回答,旨在加强对话的真实性和专业性。同时,巧妙融入足球百晓生特有的幽默与丰富的情感色彩,以提升与用户的互动质量,加深他们的情绪投入和对足球世界的沉浸体验。
「输入模式」:指令+上下文
-
资料上传:
可忽略
-
在 IM 配置:
为数字人添加头像和账号 ID。
聊天室功能搭建
初始化云信 IM SDK
初始化IM,需要在 Application 中,初始化云信 SDK:
public class NimApplication extends Application {
public void onCreate() {
SDKOptions sdkOptions = new SDKOptions();
// 初始化云信SDK
NIMClient.initV2(this,sdkOptions);
}
}
进入聊天室
进入聊天室可以有两种方式:独立模式和非独立模式,我们可以选择以独立模式进入聊天室:
//创建聊天室地址请求回调对象
V2NIMChatroomLinkProvider provider = new V2NIMChatroomLinkProvider() {
@Override
public List<String> getLinkAddress(String roomId, String accountId) {
// 向应用服务器请求聊天室地址
return "服务端返回的聊天室地址列表";
}
};
//创建聊天室相关参数
V2NIMChatroomEnterParams params = V2NIMChatroomEnterParams.V2NIMChatroomEnterParamsBuilder.builder(provider)
.withAccountId("im accid")
.withToken("im token")
.withRoomNick("昵称")
.build();
//进入聊天室
V2NIMChatroomClient.newInstance().enter("聊天室id",params,null,null);
聊天室数字人配置
进入聊天室后,可以调用发送聊天室消息的服务端接口和 AI 机器人互动,通过 ai_params 字段配置和 AI 机器人互动信息,ai_params 字段相关配置如下:
参数名称 | 类型 | 是否必选 | 描述 |
account | String | 必选 | 数字人账号 ID,对应控制台提前设置好的数字人账号。 |
content | Object | 可选 | 发起给数字人的查询请求的内容,结构体为: { "msg": "xxx",//内容 "type": 0//类型,当前仅支持0表示文本 } 如果为空且消息为文本消息,则提取消息中的 text 如果为空且不是文本消息,则返回 107336 错误。 |
messages | List<Object> | 可选 | 数字人回溯的消息列表,结构体类似为: [ { "msg": "hello", "type": 0, "role": "user" }, { "msg": "hello, I am your AI assistant", "type": 0, "role": "assistant" } ] |
prompt_variables | Object | 可选 | 用于填充提示词中的变量,如果提示词中定义了变量,则该字段必填,结构体类似为: { "career":"厨师" } |
config | Object | 可选 | 模型相关的配置参数,不同模型配置类型不同。结构体类似为: {"maxTokens":1,"temperature":1,"prompt":"我是一个${{career}},请回答我的问题:","topP":0.5} |
send_original | String | 可选 | 默认为 true,表示发送当前消息到聊天室。若设置为 false,则表示不发送当前消息到聊天室,只发送请求大模型后的消息。 |
以下为演示效果,实际效果以开发者接入效果为准:
——END——
近日分享,大家觉得收到干货信息,可以关注我,后续持续更新~
最后,附上干货资料可查看领取:
还有更多干货,等你来收获~👇