in src/lib/utils/business.svelte.ts [180:211]
export async function handleStreamingResponse(
conversation: ConversationClass | Conversation,
onChunk: (content: string) => void,
abortController: AbortController
): Promise<void> {
const metadata = await getCompletionMetadata(conversation, abortController.signal);
if (metadata.type === "openai") {
const stream = await metadata.client.chat.completions.create({
...metadata.args,
stream: true,
} as OpenAI.ChatCompletionCreateParamsStreaming);
let out = "";
for await (const chunk of stream) {
if (chunk.choices[0]?.delta?.content) {
out += chunk.choices[0].delta.content;
onChunk(out);
}
}
return;
}
// HuggingFace streaming
let out = "";
for await (const chunk of metadata.client.chatCompletionStream(metadata.args, { signal: abortController.signal })) {
if (chunk.choices && chunk.choices.length > 0 && chunk.choices[0]?.delta?.content) {
out += chunk.choices[0].delta.content;
onChunk(out);
}
}
}