Skip to content

Commit 44a05f9

Browse files
committed
keep createStreamFromWorkflowContext
1 parent 85aa6ed commit 44a05f9

File tree

3 files changed

+24
-16
lines changed

3 files changed

+24
-16
lines changed

templates/components/multiagent/typescript/express/chat.controller.ts

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@ import {
55
retrieveMessageContent,
66
} from "./llamaindex/streaming/annotations";
77
import { createWorkflow } from "./workflow/factory";
8-
import { createStreamFromWorkflowContext } from "./workflow/stream";
8+
import {
9+
createStreamFromWorkflowContext,
10+
streamToAsyncIterable,
11+
} from "./workflow/stream";
912

1013
export const chat = async (req: Request, res: Response) => {
1114
try {
@@ -27,10 +30,13 @@ export const chat = async (req: Request, res: Response) => {
2730

2831
const { stream, dataStream } =
2932
await createStreamFromWorkflowContext(context);
30-
31-
const streamResponse = LlamaIndexAdapter.toDataStreamResponse(stream, {
32-
data: dataStream,
33-
});
33+
const streamIterable = streamToAsyncIterable(stream);
34+
const streamResponse = LlamaIndexAdapter.toDataStreamResponse(
35+
streamIterable,
36+
{
37+
data: dataStream,
38+
},
39+
);
3440
if (streamResponse.body) {
3541
const reader = streamResponse.body.getReader();
3642
while (true) {

templates/components/multiagent/typescript/nextjs/route.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@ import {
88
retrieveMessageContent,
99
} from "./llamaindex/streaming/annotations";
1010
import { createWorkflow } from "./workflow/factory";
11-
import { createStreamFromWorkflowContext } from "./workflow/stream";
11+
import {
12+
createStreamFromWorkflowContext,
13+
streamToAsyncIterable,
14+
} from "./workflow/stream";
1215

1316
initObservability();
1417
initSettings();
@@ -41,7 +44,10 @@ export async function POST(request: NextRequest) {
4144
});
4245
const { stream, dataStream } =
4346
await createStreamFromWorkflowContext(context);
44-
return LlamaIndexAdapter.toDataStreamResponse(stream, { data: dataStream });
47+
const streamIterable = streamToAsyncIterable(stream);
48+
return LlamaIndexAdapter.toDataStreamResponse(streamIterable, {
49+
data: dataStream,
50+
});
4551
} catch (error) {
4652
console.error("[LlamaIndex]", error);
4753
return NextResponse.json(

templates/components/multiagent/typescript/workflow/stream.ts

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import { AgentRunEvent } from "./type";
1313

1414
export async function createStreamFromWorkflowContext<Input, Output, Context>(
1515
context: WorkflowContext<Input, Output, Context>,
16-
): Promise<{ stream: AsyncIterable<EngineResponse>; dataStream: StreamData }> {
16+
): Promise<{ stream: ReadableStream<string>; dataStream: StreamData }> {
1717
const dataStream = new StreamData();
1818
const encoder = new TextEncoder();
1919
let generator: AsyncGenerator<ChatResponseChunk> | undefined;
@@ -51,14 +51,10 @@ export async function createStreamFromWorkflowContext<Input, Output, Context>(
5151
},
5252
});
5353

54-
const stream = mainStream
55-
.pipeThrough(createStreamDataTransformer())
56-
.pipeThrough(new TextDecoderStream());
57-
58-
const streamIterable = streamToAsyncIterable(stream);
59-
6054
return {
61-
stream: streamIterable,
55+
stream: mainStream
56+
.pipeThrough(createStreamDataTransformer())
57+
.pipeThrough(new TextDecoderStream()),
6258
dataStream,
6359
};
6460
}
@@ -80,7 +76,7 @@ function handleEvent(
8076
}
8177
}
8278

83-
function streamToAsyncIterable(stream: ReadableStream<string>) {
79+
export function streamToAsyncIterable(stream: ReadableStream<string>) {
8480
const streamIterable: AsyncIterable<EngineResponse> = {
8581
[Symbol.asyncIterator]() {
8682
const reader = stream.getReader();

0 commit comments

Comments
 (0)