/** * SSE 流解析工具 * * 提供通用的 SSE 流解析能力,供 ChatCompletionsProxy 和 ResponsesProxy 共用。 * 支持 Node.js ReadableStream(fetch response.body)的 SSE 解析。 */ import type { SSECallbacks } from './types'; /** * 解析 SSE 流(适用于 Node.js fetch response.body) * * 使用方法: * ```ts * const response = await fetch(url, options); * const reader = response.body!.getReader(); * await parseSSEStream(reader, callbacks, abortSignal); * ``` */ export declare function parseSSEStream(reader: ReadableStreamDefaultReader, callbacks: SSECallbacks, abortSignal?: AbortSignal): Promise; /** * Chat Completions SSE 流解析器 * * 解析 OpenAI Chat Completions 格式的 SSE 流,处理: * - 文本内容 delta * - 思考/推理内容(reasoning_content) * - 工具调用 delta(按 index 累积) * - Token 用量统计 */ export declare function parseChatCompletionsStream(reader: ReadableStreamDefaultReader, callbacks: SSECallbacks, abortSignal?: AbortSignal): Promise; /** * Responses API SSE 流解析器 * * 解析 OpenAI Responses 格式的 SSE 流,处理: * - response.output_text.delta(文本 delta) * - response.reasoning_text.delta(推理 delta) * - response.function_call_arguments.delta/done(工具调用) * - response.completed(完成事件 + usage) * - response.failed(失败事件) */ export declare function parseResponsesStream(reader: ReadableStreamDefaultReader, callbacks: SSECallbacks, abortSignal?: AbortSignal): Promise; /** SSE 流式 HTTP POST 请求 */ export declare function fetchSSEPost(url: string, body: Record, headers: Record, signal?: AbortSignal): Promise; /** streamWithRetry 配置 */ export interface StreamRetryOptions { /** 最大重试次数(默认 2) */ maxRetries?: number; /** 提供商标签(用于日志) */ providerLabel?: string; /** 重试间隔毫秒数(默认 800) */ retryIntervalMs?: number; /** 当流中断并准备重试时,附带本次已经输出的内容文本 */ onRetry?: (context: { attempt: number; emittedText: string; }) => Promise | void; } /** * 将已输出的 assistant 文本追加到下次重试请求中,避免流断开后上下文丢失。 */ export declare function appendPartialAssistantContent>(payload: T, partialText: string): T; /** * 带自动重试的 fetch + SSE 流解析 * * 封装整个 fetch → stream parse 生命周期,当 SSE 流在传输过程中 * 被中断(对端关闭 socket / terminated)时,自动重试整个请求。 * * 重试条件: * - 错误可重试(连接超时、50x、terminated、SocketError 等) * - 如果本次流已经输出了内容,会把这些内容带到下一次重试请求中,尽量让上游继续生成剩余内容。 * * @param fetcher 返回 Response 的函数(可使用 fetchWithRetry) * @param parser 流解析函数(如 parseChatCompletionsStream / parseResponsesStream) * @param callbacks SSE 回调 * @param options 重试配置 */ export declare function streamWithRetry(fetcher: () => Promise, parser: (reader: ReadableStreamDefaultReader, callbacks: SSECallbacks) => Promise, callbacks: SSECallbacks, options?: StreamRetryOptions): Promise; //# sourceMappingURL=sse-utils.d.ts.map