Skip to content

Commit 6e0b90c

Browse files
committed
handle sending hook results when streaming responses
1 parent dfd5b2a commit 6e0b90c

File tree

2 files changed

+27
-14
lines changed

2 files changed

+27
-14
lines changed

src/handlers/responseHandlers.ts

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -99,23 +99,21 @@ export async function responseHandler(
9999
responseTransformerFunction = undefined;
100100
}
101101

102-
if (
103-
streamingMode &&
104-
isSuccessStatusCode &&
105-
isCacheHit &&
106-
responseTransformerFunction
107-
) {
108-
const streamingResponse = await handleJSONToStreamResponse(
109-
response,
110-
provider,
111-
responseTransformerFunction
112-
);
113-
return { response: streamingResponse, responseJson: null };
114-
}
115102
if (streamingMode && isSuccessStatusCode) {
116103
const hooksManager = c.get('hooksManager');
117104
const span = hooksManager.getSpan(hookSpanId) as HookSpan;
118105
const hooksResult = span.getHooksResult();
106+
if (isCacheHit && responseTransformerFunction) {
107+
const streamingResponse = await handleJSONToStreamResponse(
108+
response,
109+
provider,
110+
responseTransformerFunction,
111+
strictOpenAiCompliance,
112+
responseTransformer as endpointStrings,
113+
hooksResult
114+
);
115+
return { response: streamingResponse, responseJson: null };
116+
}
119117
return {
120118
response: handleStreamingMode(
121119
response,

src/handlers/streamHandler.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -405,7 +405,10 @@ export function handleStreamingMode(
405405
export async function handleJSONToStreamResponse(
406406
response: Response,
407407
provider: string,
408-
responseTransformerFunction: Function
408+
responseTransformerFunction: Function,
409+
strictOpenAiCompliance: boolean,
410+
fn: endpointStrings,
411+
hooksResult: HookSpan['hooksResult']
409412
): Promise<Response> {
410413
const { readable, writable } = new TransformStream();
411414
const writer = writable.getWriter();
@@ -419,6 +422,12 @@ export async function handleJSONToStreamResponse(
419422
) {
420423
const generator = responseTransformerFunction(responseJSON, provider);
421424
(async () => {
425+
if (!strictOpenAiCompliance) {
426+
const hookResultChunk = constructHookResultChunk(hooksResult, fn);
427+
if (hookResultChunk) {
428+
await writer.write(encoder.encode(hookResultChunk));
429+
}
430+
}
422431
while (true) {
423432
const chunk = generator.next();
424433
if (chunk.done) {
@@ -434,6 +443,12 @@ export async function handleJSONToStreamResponse(
434443
provider
435444
);
436445
(async () => {
446+
if (!strictOpenAiCompliance) {
447+
const hookResultChunk = constructHookResultChunk(hooksResult, fn);
448+
if (hookResultChunk) {
449+
await writer.write(encoder.encode(hookResultChunk));
450+
}
451+
}
437452
for (const chunk of streamChunkArray) {
438453
await writer.write(encoder.encode(chunk));
439454
}

0 commit comments

Comments
 (0)