feat: 完成对话手动停止的功能
This commit is contained in:
@@ -7,16 +7,17 @@ const API = '/agent/assistant/chat';
|
||||
* 获取AI聊天流式信息(仅微信小程序支持)
|
||||
* @param {Object} params 请求参数
|
||||
* @param {Function} onChunk 回调,每收到一段数据触发
|
||||
* @returns {Promise}
|
||||
* @returns {Object} 包含Promise和requestTask的对象
|
||||
*/
|
||||
function agentChatStream(params, onChunk) {
|
||||
return new Promise((resolve, reject) => {
|
||||
let requestTask;
|
||||
const promise = new Promise((resolve, reject) => {
|
||||
const token = uni.getStorageSync('token');
|
||||
let hasError = false;
|
||||
|
||||
console.log("发送请求内容: ", params)
|
||||
// #ifdef MP-WEIXIN
|
||||
const requestTask = uni.request({
|
||||
requestTask = uni.request({
|
||||
url: BASE_URL + API, // 替换为你的接口地址
|
||||
method: 'POST',
|
||||
data: params,
|
||||
@@ -28,22 +29,21 @@ function agentChatStream(params, onChunk) {
|
||||
},
|
||||
responseType: 'arraybuffer',
|
||||
success(res) {
|
||||
resolve(res.data);
|
||||
resolve(res.data);
|
||||
},
|
||||
fail(err) {
|
||||
console.log("====> ", JSON.stringify(err))
|
||||
reject(err);
|
||||
reject(err);
|
||||
},
|
||||
complete(res) {
|
||||
complete(res) {
|
||||
if(res.statusCode !== 200) {
|
||||
console.log("====> ", JSON.stringify(res))
|
||||
|
||||
if (onChunk) {
|
||||
onChunk({ error: true, message: '服务器错误', detail: res });
|
||||
}
|
||||
reject(res);
|
||||
}
|
||||
}
|
||||
console.log("====> ", JSON.stringify(res))
|
||||
if (onChunk) {
|
||||
onChunk({ error: true, message: '服务器错误', detail: res });
|
||||
}
|
||||
reject(res);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
requestTask.onHeadersReceived(res => {
|
||||
@@ -75,18 +75,19 @@ function agentChatStream(params, onChunk) {
|
||||
});
|
||||
// #endif
|
||||
});
|
||||
|
||||
return {
|
||||
promise,
|
||||
requestTask
|
||||
};
|
||||
}
|
||||
|
||||
// window.atob兼容性处理
|
||||
const weAtob = (string) => {
|
||||
const b64re =
|
||||
/^(?:[A-Za-z\d+/]{4})*?(?:[A-Za-z\d+/]{2}(?:==)?|[A-Za-z\d+/]{3}=?)?$/;
|
||||
const b64 =
|
||||
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
|
||||
|
||||
const b64re = /^(?:[A-Za-z\d+/]{4})*?(?:[A-Za-z\d+/]{2}(?:==)?|[A-Za-z\d+/]{3}=?)?$/;
|
||||
const b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
|
||||
// 去除空白字符
|
||||
string = String(string).replace(/[\t\n\f\r ]+/g, '');
|
||||
|
||||
// 验证 Base64 编码
|
||||
if (!b64re.test(string)) {
|
||||
throw new TypeError(
|
||||
@@ -150,4 +151,4 @@ function parseSSEChunk(raw) {
|
||||
return results;
|
||||
}
|
||||
|
||||
export { agentChatStream }
|
||||
export { agentChatStream }
|
||||
Reference in New Issue
Block a user