AI Agent流式输出:一个字一个字显示,用户不等急

📘 AI教程 💬 🔥 Trending

🩺 摘要

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倍。

总结

流式输出改动不大,前后端各加几行代码。但用户体验从等半天变成实时显示。