| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- import { Message } from "./messages";
- import { Output } from "window.ai";
- export async function getWindowAiChatResponseStream(name: string,messages: Message[]) {
- const stream = new ReadableStream({
- async start(controller: ReadableStreamDefaultController) {
- try {
- const [response]: Output[] = await window.ai.generateText({
- messages,
- }, {
- maxTokens: 400,
- temperature: 0.7,
- stopSequences: [
- "</s>",
- `${name}:`,
- "User:"
- ],
- onStreamResult: (res: Output | null, error: string | null): void => {
- if (res === null) {
- throw new Error("null result from window.ai");
- }
- if (error) {
- throw new Error(error);
- }
- // @ts-ignore
- const piece = res.message?.content;
- if (!! piece) {
- controller.enqueue(piece);
- }
- return;
- },
- });
- } catch (error) {
- controller.error(error);
- } finally {
- controller.close();
- }
- },
- });
- return stream;
- }
|