feat: 完成对话手动停止的功能

This commit is contained in:
zoujing
2025-08-06 11:47:07 +08:00
parent 6e658c9967
commit 65653525a0
6 changed files with 182 additions and 114 deletions

View File

@@ -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 }