网页浏览器集成智能对话机器人大模型问答
效果展示
概览
调用ApplyForStreamAccessToken接口。参考文档:ApplyForStreamAccessToken - 获取流式调用的连接信息
ApplyForStreamAccessToken接口,返回的连接签名信息有效期2小时,必须在到期前重新获取
接收到用户发送的消息,并调用自定义的代理SSE接口
计算会话接口签名。参考文档:会话接口签名
调用会话接口,监听SSE事件,获取大模型流式输出。参考文档:流式会话接口
大模型流式接口会多次返回,由前端SDK解析并渲染大模型的回复。前端SDK
示例
示例工程代码
如何运行
本示例工程的运行环境要求为JDK 8,参考文档:在Windows安装JDK
将上面提到的参数填写到示例工程的
application.properties
配置文件中运行
com.aliyun.chatbot.channel.WebApplication
浏览器打开 http://localhost:8080/ 即可进行对话问答
示例工程中的参数
名称 | 描述 |
ALIYUN_ACCESS_KEY | 阿里云账号AK |
ALIYUN_SECRET_KEY | 阿里云账号SK |
CHATBOT_INSTANCE_ID | 机器人id |
CHATBOT_AGENT_KEY | 业务空间AgentKey,获取地址:业务空间管理 |
智能对话机器人配置
进入智能对话机器人控制台,https://chatbot.console.aliyun.com
机器人创建,获取机器人id,发布机器人(如无发布按钮则跳过本步骤)
获取业务空间AgentKey,地址:业务空间管理
阿里云账号AKSK获取,地址:AccessKey
前端SDK使用常见问题
如何支持Post请求
requests.send方法中写请求处理,返回Promise结果,Promise结果要求将对话机器人的返回结果原样返回,注意首字母要保持大写。
对头像等样式不满意,如何自定义样式
通过css选择器对头像等进行样式覆盖
头像没有展示
ChatSDK的config.avatarWhiteList参数需要配置下要展示头像的卡片列表
点赞点踩没有展示
ChatSDK需要配置requests.evaluate请求方法,并且检查下答案经过isvParser转换后的数据的meta.evaluable是否为true
假如返回结果经过后端处理,将首字母改为了小写,则isvParser处理前需要先将首字母改为大写,处理代码参考
function upperCaseBotMsg(msg) { let newMsg = msg; if (msg instanceof Array) { newMsg = msg.map((item) => { return upperCaseBotMsg(item); }); } else if (typeof msg == 'object' && msg) { newMsg = {}; for (const key in msg) { newMsg[key.substring(0, 1).toUpperCase() + key.substring(1)] = upperCaseBotMsg(msg[key]); } } return newMsg; }