Skip to content

Latest commit

 

History

History
181 lines (144 loc) · 4.25 KB

File metadata and controls

181 lines (144 loc) · 4.25 KB

流式推送功能升级说明

概述

为了提升用户体验,让对话感觉更加实时和自然,我们已经将整个LLM对话系统升级为支持流式推送。现在无论是传统LLM模式还是AutoGen多智能体模式,都支持实时的流式文本显示。

主要改进

1. AutoGen多智能体流式推送

新增流式方法

  • handleRoundRobinStream() - 轮询模式流式处理
  • handleGroupChatStream() - 群聊模式流式处理
  • handleSequentialStream() - 顺序模式流式处理
  • generateAgentResponseStream() - 智能体流式回复生成
  • callLLMStream() - LLM API流式调用

流式事件处理

流式更新通过事件驱动的方式工作,支持以下事件类型:

// 智能体选择事件(仅群聊模式)
{
    type: 'agent_selected',
    agent: selectedAgent,
    reason: '根据消息内容智能选择'
}

// 智能体开始回复
{
    type: 'agent_start', 
    agent: currentAgent,
    message: responseMessage
}

// 内容实时更新
{
    type: 'content_update',
    content: chunk,           // 新增的文本片段
    fullContent: fullText,    // 完整的文本内容
    message: responseMessage
}

// 智能体完成回复
{
    type: 'agent_complete',
    agent: currentAgent,
    message: responseMessage
}

// 顺序模式特有事件
{
    type: 'sequence_start',
    agent: agent,
    index: i,
    total: totalAgents
}

2. 传统LLM模式流式推送

传统模式现在也支持流式显示:

  • 创建空白消息占位
  • 实时更新消息内容
  • 自动滚动到底部
  • 状态指示(thinking → idle)

3. 用户界面改进

状态指示

  • thinking: 正在思考/生成中
  • idle: 空闲状态
  • streaming: 流式推送中

实时体验

  • 文字逐字显示,而非一次性出现
  • 自动滚动跟随最新内容
  • 智能体状态实时更新
  • 流畅的视觉过渡

技术实现

流式API调用

// 启用流式响应
const response = await fetch(endpoint, {
    method: 'POST',
    headers: {
        'Authorization': `Bearer ${apiKey}`,
        'Content-Type': 'application/json'
    },
    body: JSON.stringify({
        model: model,
        messages: messages,
        stream: true  // 关键:启用流式
    })
});

// 处理流式数据
const reader = response.body.getReader();
const decoder = new TextDecoder();

while (true) {
    const { done, value } = await reader.read();
    if (done) break;
    
    const chunk = decoder.decode(value);
    // 解析SSE格式数据
    // 实时更新UI
}

AutoGen集成

// 使用流式更新回调
const updatedConversation = await autogenService.sendMessage(
    conversationId, 
    content, 
    'user', 
    handleStreamUpdate  // 流式更新处理器
);

兼容性

向后兼容

  • 保留了所有原有的非流式方法
  • 现有配置和数据无需修改
  • 渐进式升级,平滑过渡

API要求

确保您使用的LLM API支持Server-Sent Events (SSE)格式的流式响应:

  • OpenAI API ✅
  • Ollama ✅
  • 阿里云DashScope ✅
  • 其他兼容OpenAI格式的API ✅

性能优化

减少延迟

  • 首字符响应时间显著减少
  • 用户可以立即看到回复开始
  • 更好的并发处理能力

资源管理

  • 自动清理流式连接
  • 内存占用优化
  • 错误处理机制

使用建议

最佳实践

  1. 网络环境: 在稳定的网络环境下效果最佳
  2. 消息长度: 对于长文本响应,流式效果尤其明显
  3. 多智能体: 顺序模式下可以看到智能体依次实时回复

故障排除

如果遇到流式显示问题:

  1. 检查网络连接稳定性
  2. 确认LLM API支持流式响应
  3. 查看浏览器控制台错误信息
  4. 确保API密钥和端点配置正确

未来计划

下一步改进

  • 支持暂停/恢复流式输出
  • 添加打字机音效
  • 流式内容的实时语音合成
  • 更精细的流式控制选项
  • 流式内容的搜索和高亮

高级功能

  • 流式内容的实时翻译
  • 基于内容的动态主题切换
  • 流式响应的性能分析
  • 智能体协作的可视化流程

通过这次升级,用户现在可以享受到更加流畅、实时的对话体验,无论是单个LLM对话还是多智能体协作场景。