This commit is contained in:
+36
-13
@@ -191,6 +191,14 @@ type CompletionStreamHandlers = {
|
||||
onError?: (payload: { message: string }) => void;
|
||||
};
|
||||
|
||||
function dispatchCompletionStreamEvent(handlers: CompletionStreamHandlers, eventName: string, payload: any) {
|
||||
if (eventName === "meta") handlers.onMeta?.(payload);
|
||||
else if (eventName === "tool_call") handlers.onToolCall?.(payload);
|
||||
else if (eventName === "delta") handlers.onDelta?.(payload);
|
||||
else if (eventName === "done") handlers.onDone?.(payload);
|
||||
else if (eventName === "error") handlers.onError?.(payload);
|
||||
}
|
||||
|
||||
type CreateChatRequest = {
|
||||
title?: string;
|
||||
provider?: Provider;
|
||||
@@ -627,13 +635,34 @@ export async function runCompletionStream(
|
||||
signal: options?.signal,
|
||||
});
|
||||
|
||||
await readSseStream(response, (eventName, payload) => {
|
||||
if (eventName === "meta") handlers.onMeta?.(payload);
|
||||
else if (eventName === "tool_call") handlers.onToolCall?.(payload);
|
||||
else if (eventName === "delta") handlers.onDelta?.(payload);
|
||||
else if (eventName === "done") handlers.onDone?.(payload);
|
||||
else if (eventName === "error") handlers.onError?.(payload);
|
||||
await readSseStream(response, (eventName, payload) => dispatchCompletionStreamEvent(handlers, eventName, payload));
|
||||
}
|
||||
|
||||
export async function runQuickQuestionStream(
|
||||
body: {
|
||||
provider: Provider;
|
||||
model: string;
|
||||
question: string;
|
||||
},
|
||||
handlers: CompletionStreamHandlers,
|
||||
options?: { signal?: AbortSignal }
|
||||
) {
|
||||
const headers = new Headers({
|
||||
Accept: "text/event-stream",
|
||||
"Content-Type": "application/json",
|
||||
});
|
||||
if (authToken) {
|
||||
headers.set("Authorization", `Bearer ${authToken}`);
|
||||
}
|
||||
|
||||
const response = await fetch(`${API_BASE_URL}/v1/quick-questions/stream`, {
|
||||
method: "POST",
|
||||
headers,
|
||||
body: JSON.stringify(body),
|
||||
signal: options?.signal,
|
||||
});
|
||||
|
||||
await readSseStream(response, (eventName, payload) => dispatchCompletionStreamEvent(handlers, eventName, payload));
|
||||
}
|
||||
|
||||
export async function attachCompletionStream(chatId: string, handlers: CompletionStreamHandlers, options?: { signal?: AbortSignal }) {
|
||||
@@ -650,11 +679,5 @@ export async function attachCompletionStream(chatId: string, handlers: Completio
|
||||
signal: options?.signal,
|
||||
});
|
||||
|
||||
await readSseStream(response, (eventName, payload) => {
|
||||
if (eventName === "meta") handlers.onMeta?.(payload);
|
||||
else if (eventName === "tool_call") handlers.onToolCall?.(payload);
|
||||
else if (eventName === "delta") handlers.onDelta?.(payload);
|
||||
else if (eventName === "done") handlers.onDone?.(payload);
|
||||
else if (eventName === "error") handlers.onError?.(payload);
|
||||
});
|
||||
await readSseStream(response, (eventName, payload) => dispatchCompletionStreamEvent(handlers, eventName, payload));
|
||||
}
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
import type { Provider } from "./api";
|
||||
|
||||
export function buildQuickQuestionRequest({
|
||||
provider,
|
||||
model,
|
||||
content,
|
||||
}: {
|
||||
provider: Provider;
|
||||
model: string;
|
||||
content: string;
|
||||
}) {
|
||||
return {
|
||||
provider,
|
||||
model,
|
||||
question: content,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user