前端使用fetch-event-source处理返回的流式输出,请求接受处理Dify模型返回的流式输出,dify的请求后端中间嫁接了一层,Dify官网已经接入了deepseek
【代码】前端使用“@microsoft/fetch-event-source“: “^2.0.1“,请求接受处理dify模型,dify的请求接口通过后端给的接口请求。
·
使用插件依赖“@microsoft/fetch-event-source“: “^2.0.1“
文件引用
import { fetchEventSource } from "@microsoft/fetch-event-source";
const that = this;
let data = {
inputs: { type: "chat" },
query: "请写出木兰诗的内容", // 问题
responseMode: "streaming", // 选择流式回答
conversationId: "", // 会话id,已经对过话的会返回会话id,没有就空着
user: "用户", // 用户
autoGenerateName: true, // 自动生成标题默认为true, 如果是false可通过调用会话重命名接口设置标题
};
let getHeaders = {
"Content-Type": "application/json", // "application/json",//"text/event-stream"
accept: "*/*",
"Cache-Control": "no-cache",
Connection: "keep-alive",
};
// getHeaders["Authorization"] = "Bearer " + getToken();
const postData = JSON.stringify(data); // 请求体
that.controller = new AbortController(); //用于控制异步操作的中断
let urlParams = `${process.env.VUE_APP_BASE_API}/system/ai/chat-messages`;
try {
fetchEventSource(urlParams, {
method: "POST",
headers: getHeaders,
signal: that.controller.signal,
body: postData,
openWhenHidden: true,
reconnect: false, // 禁用自动重连
onmessage(res) {
if (res?.data) {
let getData = JSON.parse(res.data);
if (getData?.event === "error") {
// 处理接受内容
}
if (getData?.answer) {
// 处理接受内容
}
}
},
onclose() {
that.controller.abort();
console.log("连接关闭");
}
},
onerror(err) {
that.controller.abort();
console.error("连接错误", err);
},
});
} catch (err) {
that.controller.abort();
console.log("err", err);
}
更多推荐


所有评论(0)