主要记录AI web服务相关功能。
名词解释
AI助手模式:用户在普通直播间可以开启,开启后检测4中行为:“ 新用户加入”,“nvip加入”,“送礼”和“送礼前三名加入直播间”的行为。
AI托管模式:白名单用户关闭直播间可以选择进入场景。开启AI托管模式。该模式下检测 消息流用户发送消息->发送文本给chatgtp。
不同语气模式:IM调用chatGTP 的时候 在传入text中会加上预设身份的文案(产品给好的文案),调用chatGTP拿到返回结果。目前少男、少女、熟男和熟女四种身份。
AI助手模式实现:
就是用户加入直播间时客户端调用 PHP 接口 /message/videocount ->查询用户身份 是否新用户、是否送礼前三名->发送异步消息给IM->IM在写好内容里面去一个结果随机返回->结果以IM形式下发给客户。
在消息下发中 主播端:按照上面4个时间语音播报的;
用户端:在消息流和ai助手框内展示的(也是根据上面4个事件随机返回文本)。
AI托管模式:
用户在直播间发送消息->IM拦截内容把A用户和gtp聊天上下5轮+风格模式调用gtp->返回结果下发给客户端。
ps:不同用户上传不同的上下文
测试方法:目前还是那种人工问答形式,A用户问 一系列问题,我的名字,爱好,理想啊。B用户在聊天,A用户反问对方你知道你是谁嘛,爱好是什么等等。
IM这边promote 结构三层:背景、用什么语言回答+问题上下文。
ps:语言是开播接口通过cl字段从客户端传过来的
其他api参数都是默认的
不同模式预期词:
女-少女:一名二次元少女,你的名字是milin,尽量与对话进行互动,性格要求活泼、开朗、阳光 如果遇到你特殊问题,你可以修改自己的回答语气,比如生气、激动
女-成熟: 一名成熟的女生,你的名字是simiya,尽量与对话进行互动,性格要求沉稳、大气 如果遇到你特殊问题,你可以修改自己的回答语气,比如生气、激动
男-少年: 一名二次元少年,你的名字是alika,尽量与对话进行互动,性格要求阳光、开朗、自信 如果遇到你特殊问题,你可以修改自己的回答语气,比如生气、激动
男-成熟: 一名成熟的男生,你的名字是jack,尽量与对话进行互动,性格要求沉稳、大气 如果遇到你特殊问题,你可以修改自己的回答语气,比如生气、激动
语言控制:
offon/iveRoomcons 接口返回客户端语言 ,客户端播放对应语言
net服务端接口:
固定模型白名单:
表cl_ai_live_my_model->增加uid加入数据即可
offon/liveRoomIcons
->ailive_entrance 字段判断是不是有智能直播间和客户端对应播放语言
ai_live/info
->主要作用返回给客户端展示 直播主题、音色、随机模型。
数据流转:net->sd 服务获取模式,图片和声音,在随机返回。
从配置文件 ai_live.json,ai_live_prompt.json,ai_liveme_sd_prompt.json
功能:返回模型相关信息
live_theme:回复语气,少年、少女、熟男、熟女->根据用户性别返回对应男女
live_timbre:语音模型->根据用户性别返回对应男女
random_model_cover:随机模型信息
remaining_duration:本周内生育播放时间(一周24小时)
是否支持自己模型入口
在cmlive.cl_ai_live_my_model 写入自己数据后 my_model_cover 字段就有有返回值。
ai_live/start
->开播推流
功能:更新Aurora视频信息->发送直播间消息切换到智能直播->通知IM当前直播主题->写入cl_ai_live_start_record表(数据组统计使用)
还有一个点就是cl要传给IM那边告知当前主播语言。
ai_live/prompt
->获取快捷promote和换装风格
数据:都是服务端写死的返回,涉及到多语言点。
ai_live/switch
->调用sd换装
功能:从缓存取模型id->调用金融扣除金币->调用sd服务生成图片(目前图生图)->发送消息给客户端展示图片->更新数据表cl_ai_live_call_sd_record(大数据使用)
SD参数:
核心参数都是产品备注到文案里面
二期需求(AI智能付费直播)
ai_live/assistant/renewalpanel
从金融服务拉取档位,上线的时候需要产品配置好key
ai_live/assistant/renewal
根据档位id->调用订阅服务 完成扣费->增加对应倒计时
技术方案:扣费和金融倒计时都是金融侧记录和计时。
注意:金融有一个金融流水action需要配置,如果新的类型需要大数据那边支持还可以(主要针对非金币钻石相关类型)
金融流水配置:
流水不展示问题:一般问题不是没有配置,就是详情页没有配置展示
续费:
当时间还剩30s时候会触发自动续费,调用金融服务扣钱。成功和失败都会发送私信给用户。
ai_live/mymodel/submit
①调用金融扣除金币->②调用sd训练模型服务任务接口(api/v1/train/task)(完成模型id训练,该接口返回一般很快) 回调业务范接口->③net更新模型id、发起图生图生成默认图和训练图->④SD制图成功回调业务方->⑤更新我的模型表的图片数据。
①扣除金币 调用金融服务 需要传入金融action和价格
②调用SD服务任务接口
③net服务回调接口:ai_live/callback/model
更新我的模型数据库的model_id 字段的值
发起图片训练默认图逻辑和 发起图片训练封面逻辑 调用SD服务2次这个接口(参数会有一些区别)/api/v1/task/img2img/create
⑤net 服务ai_live/callback/img2img:
更新我的模型数据库字段cover、images和status字段
封面制图: 底图是从用户上传(9-20)张随机选择一个 正反词跟预览图逻辑一致。
预览图:底图
女性 是从给定底图里面随机一个图。
正反词:
金融订阅服务:subscription
1.net服务调用 金融创建订阅
接口
ai_assistant/create_or_renew:
创建订阅逻辑
ai_assistant/get:
直接读取cl_subscription 订阅表最新一条数据,返回订阅状态。
finan/subscribeAnchor/createSubscription:
创建主播订阅,这个也是
写入 livemefinancex_test.cl_subscription 表数据。是否续订跟物品属性有关系,目前测试环境 第一档位450 才有订阅。
如何测试订阅:修改expired字段时间,测试环境10分钟会有任务去扫,生效以后 expired字段时间会被修改。
生效以后在livemefinancex_test.cl_subscription_history_2023 生成2条记录。
M(链接chatGTP):
AI智能直播 IM只分 AI助手和AI托管。
AI助手:
支持送礼,新用户进入直播间、nvip和送礼前三名进入直播间回复
(新用户进入直播间、nvip和送礼前三名) 数据流转:PHP (/message/videocount)->异步调用IM->IM根据对应类型随机获取写好的缓存列表取值返回
(送礼) 数据流转:监听送礼消息 取price->频率控制( 金币10以下、钻石500以下限制3分钟1次,星光1小时1次,金币10以上、钻石500以上不限制)->随机返回文案
测试方法:这里面难点就是im底层服务入参和出参只能依靠日志:
难点1:上游PHP 调用身份是否正确(是否新用户等属性)->属性值不对,im肯定不会返回。
我的解决办法就是测试场景有问题,先去找闫滨 跟他说清楚场景,让他看日志 提供主播id,vid和观众uid。
难点2:im返回文本是TCP形式给客户端,不知道问题是im没法,还是客户端没有播出来。
这个解决办法这期需求客户端有展示地方。
AI托管:
该模式下会调用chatGTP 回复对应用户互动消息,目前上下文10轮内容传递给chatgtp。