AI Agent流式输出:一个字一个字显示,用户不等急
🩺 摘要
Agent思考要3秒,用户盯着空白页面等。流式输出让LLM边生成边显示,用户体验好很多。
📝 详情
等待3秒=流失30%用户
数据说话:页面加载超过3秒,30%的用户会离开。Agent的响应也一样——用户看到一片空白,第一反应是刷新页面。
流式输出原理
LLM生成文本时是一个token一个token出来的。传统方式等全部生成完再返回,流式方式边生成边推送。
FastAPI实现
from fastapi.responses import StreamingResponse
def stream_agent(query):
def generate():
for chunk in agent.stream(query):
yield f'data: {json.dumps({"text": chunk})}\n\n'
return StreamingResponse(generate(), media_type='text/event-stream')
前端接收
const eventSource = new EventSource('/agent/chat?q=' + query);
eventSource.onmessage = (e) => {
const data = JSON.parse(e.data);
document.getElementById('output').textContent += data.text;
};
效果
用户看到的不再是空白页面等3秒,而是第0.5秒就开始看到文字出现。感知速度提升6倍。
总结
流式输出改动不大,前后端各加几行代码。但用户体验从等半天变成实时显示。
💬 评论 (0)