Open XPStone opened 3 months ago
request 这个 api 的第三个参数是一个 signal,把这个属性传给浏览器的 sse 请求,当点击终止的时候,会停止这个 sse 的
@ONLY-yours 您好,我做了以下处理,但是只能停止前端的浏览器的输出,后端模型仍然在调用,并且浏览器停止回答也有延迟
const [abortController, setAbortController] = useState<AbortController | null>(null);
<div style={{ backgroundColor: theme.colorBgLayout }}> {/* 使用主题的背景色 */}
{showComponent && (
<ProChat
style={{ height: '100vh', width: '100vw' }}
// 定义ProChat的请求处理函数
request={async (messages) => {
const controller = new AbortController(); // 创建AbortController实例
setAbortController(controller);
const response = await fetch('/api/qwenstream', {
method: 'POST',
body: JSON.stringify({ messages: messages, stream: true }),
signal:controller.signal,
});
@ONLY-yours 您好,我做了以下处理,但是只能停止前端的浏览器的输出,后端模型仍然在调用,并且浏览器停止回答也有延迟
const [abortController, setAbortController] = useState<AbortController | null>(null); <div style={{ backgroundColor: theme.colorBgLayout }}> {/* 使用主题的背景色 */} {showComponent && ( <ProChat style={{ height: '100vh', width: '100vw' }} // 定义ProChat的请求处理函数 request={async (messages) => { const controller = new AbortController(); // 创建AbortController实例 setAbortController(controller); const response = await fetch('/api/qwenstream', { method: 'POST', body: JSON.stringify({ messages: messages, stream: true }), signal:controller.signal, });
还是我回复的那个解决办法
request={async (messages,_,signal) => {
// 把这个 signal 传给 fetch 里面
const response = await fetch('/api/qwenstream', {
method: 'POST',
body: JSON.stringify({ messages: messages, stream: true }),
signal:signal
});
}
我稍后补充一个关于 request 的文档吧,有一次大更新
future.cancel(true);
🧐 问题描述
💻 示例代码
🚑 其他信息