diff --git a/src/proxy/middleware/response/handle-streamed-response.ts b/src/proxy/middleware/response/handle-streamed-response.ts index fc6afa3..56ced3f 100644 --- a/src/proxy/middleware/response/handle-streamed-response.ts +++ b/src/proxy/middleware/response/handle-streamed-response.ts @@ -81,7 +81,8 @@ export const handleStreamedResponse: RawResponseBodyHandler = async ( // Transformer converts server-sent events from one vendor's API message // format to another. const transformer = new SSEMessageTransformer({ - inputFormat: req.outboundApi, + inputFormat: req.outboundApi, // The format of the upstream service's events + outputFormat: req.inboundApi, // The format the client requested inputApiVersion: String(req.headers["anthropic-version"]), logger: req.log, requestId: String(req.id), diff --git a/src/proxy/middleware/response/streaming/sse-message-transformer.ts b/src/proxy/middleware/response/streaming/sse-message-transformer.ts index 90c0313..800b286 100644 --- a/src/proxy/middleware/response/streaming/sse-message-transformer.ts +++ b/src/proxy/middleware/response/streaming/sse-message-transformer.ts @@ -20,6 +20,7 @@ type SSEMessageTransformerOptions = TransformOptions & { requestId: string; inputFormat: APIFormat; inputApiVersion?: string; + outputFormat?: APIFormat; logger: typeof logger; }; @@ -47,7 +48,8 @@ export class SSEMessageTransformer extends Transform { this.msgCount = 0; this.transformFn = getTransformer( options.inputFormat, - options.inputApiVersion + options.inputApiVersion, + options.outputFormat ); this.inputFormat = options.inputFormat; this.fallbackId = options.requestId;