# 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. 设置正确的响应头并返回给客户端 ### 超时避免机制 - **持续数据流**:流式响应确保连接始终有数据传输 - **连接保活**:避免因长时间无响应导致的连接断开 - **渐进式处理**:边接收边处理,减少总体等待时间 ## 配置示例 ```json { "model": "gpt-4", "type": 1, "plugin": { "stream-fake": { "enable": true } } } ``` ## 配置字段说明 | 字段 | 类型 | 必填 | 默认值 | 说明 | |------|------|------|--------|------| | `enable` | bool | 是 | false | 是否启用 Stream Fake 插件以避免超时问题 | ## 超时场景示例 ### 场景1:长文本生成超时 **问题**:请求生成 5000 字的技术文档,非流式请求在 60 秒后超时 **原始请求**: ```json { "model": "gpt-4", "messages": [ { "role": "user", "content": "请写一份详细的 5000 字技术文档,介绍微服务架构的设计原则和最佳实践" } ], "stream": false, "max_tokens": 4000 } ``` **插件处理**: 1. 自动转换为 `"stream": true` 2. 实时接收响应片段,避免超时 3. 重构为完整的非流式响应返回 ### 场景2:复杂推理任务超时 **问题**:复杂数学问题需要长时间思考,导致请求超时 **解决方案**: - 插件确保在模型思考过程中连接保持活跃 - 即使推理时间很长也不会导致超时 - 客户端最终收到完整的推理结果 ## 性能优势 ### 超时避免 - **消除连接超时**:流式传输保持连接活跃 - **避免代理超时**:中间代理不会因长时间无数据而断开 - **减少重试次数**:避免因超时导致的请求重试 ### 响应时间 - **感知响应更快**:虽然总时间基本相同,但避免了超时重试 - **更好的用户体验**:避免请求失败和重新发起请求 - **资源利用率提升**:减少因超时导致的资源浪费