README.cn.md 4.3 KB

Stream Fake Plugin 配置指南

概述

Stream Fake Plugin 是一个专门用于解决非流式请求超时问题的插件。当 AI 模型响应时间较长时,非流式请求可能会因为等待完整响应而导致超时。该插件通过在内部将非流式请求转换为流式请求来避免超时问题,然后将流式响应重新组装为非流式格式返回给客户端,从而在保持客户端兼容性的同时解决超时问题。

功能特性

  • 超时避免:通过流式传输避免长时间等待导致的请求超时
  • 透明转换:自动将非流式请求转换为流式格式,客户端无感知
  • 响应重构:收集所有流式数据块并重构为完整的非流式响应
  • 内容完整性:确保所有内容类型都被正确处理和聚合:
    • 常规内容
    • 推理内容(适用于支持思考过程的模型)
    • 工具调用及其正确合并
    • 对数概率
  • 连接保持:通过流式传输保持连接活跃,避免网络超时

解决的问题

主要问题:上游请求超时

  • 长响应超时:AI 模型生成长文本或复杂响应时,非流式请求容易超时
  • 网络超时:在网络不稳定环境下,长时间等待完整响应导致连接超时
  • 代理超时:通过代理服务器时,代理可能因为长时间无数据而断开连接

解决方案

通过内部流式传输,连接始终保持活跃状态,避免各种超时问题,同时客户端仍然接收到期望的非流式响应格式。

使用场景

  1. 长文本生成:生成长篇文章、报告或代码时避免超时
  2. 复杂推理任务:需要较长思考时间的复杂问题处理
  3. 不稳定网络环境:网络延迟较高或不稳定的环境
  4. 严格超时限制:客户端或中间件有严格的超时限制
  5. 遗留系统兼容:无法修改客户端超时设置的遗留系统

工作原理

问题识别

  1. 检测到非流式聊天完成请求("stream": false 或未设置)
  2. 识别可能导致超时的长响应场景

内部转换

  1. 将请求修改为流式格式("stream": true
  2. 转发修改后的请求到上游 API
  3. 开始接收流式响应数据

响应处理

  1. 实时接收流式数据块,保持连接活跃
  2. 聚合所有响应内容
  3. 处理不同类型的内容片段
  4. 重构完整的非流式响应格式
  5. 设置正确的响应头并返回给客户端

超时避免机制

  • 持续数据流:流式响应确保连接始终有数据传输
  • 连接保活:避免因长时间无响应导致的连接断开
  • 渐进式处理:边接收边处理,减少总体等待时间

配置示例

{
    "model": "gpt-4",
    "type": 1,
    "plugin": {
        "stream-fake": {
            "enable": true
        }
    }
}

配置字段说明

字段 类型 必填 默认值 说明
enable bool false 是否启用 Stream Fake 插件以避免超时问题

超时场景示例

场景1:长文本生成超时

问题:请求生成 5000 字的技术文档,非流式请求在 60 秒后超时

原始请求

{
    "model": "gpt-4",
    "messages": [
        {
            "role": "user",
            "content": "请写一份详细的 5000 字技术文档,介绍微服务架构的设计原则和最佳实践"
        }
    ],
    "stream": false,
    "max_tokens": 4000
}

插件处理

  1. 自动转换为 "stream": true
  2. 实时接收响应片段,避免超时
  3. 重构为完整的非流式响应返回

场景2:复杂推理任务超时

问题:复杂数学问题需要长时间思考,导致请求超时

解决方案

  • 插件确保在模型思考过程中连接保持活跃
  • 即使推理时间很长也不会导致超时
  • 客户端最终收到完整的推理结果

性能优势

超时避免

  • 消除连接超时:流式传输保持连接活跃
  • 避免代理超时:中间代理不会因长时间无数据而断开
  • 减少重试次数:避免因超时导致的请求重试

响应时间

  • 感知响应更快:虽然总时间基本相同,但避免了超时重试
  • 更好的用户体验:避免请求失败和重新发起请求
  • 资源利用率提升:减少因超时导致的资源浪费