import { createUIMessageStream, streamText } from "ai";
import { createOpenAI } from "@ai-sdk/openai";
import * as wmill from "windmill-client@1.545.0";
export async function main() {
return streamMe();
}
async function* streamMe(): AsyncGenerator<any> {
const prompt = "write me a poen about nature";
const { api_key } = (await wmill.getResource(
"f/openai_key"
)) as { api_key: string };
const openai = createOpenAI({ apiKey: api_key });
const result = streamText({
model: openai("gpt-4o-mini"),
prompt
});
const uiStream = createUIMessageStream({
execute: ({ writer }) => {
writer.merge(
result.toUIMessageStream({
sendReasoning: true,
onError: error =>
error instanceof Error ? error.message : String(error),
})
);
},
});
const reader = uiStream.getReader();
try {
while (true) {
const { value, done } = await reader.read();
if (done) {
break;
}
yield JSON.stringify(value);
}
} finally {
reader.releaseLock();
}
}
import { createUIMessageStream, streamText } from "ai";
import { createOpenAI } from "@ai-sdk/openai";
import * as wmill from "windmill-client@1.545.0";
export async function main() {
return streamMe();
}
async function* streamMe(): AsyncGenerator<any> {
const prompt = "write me a poen about nature";
const { api_key } = (await wmill.getResource(
"f/openai_key"
)) as { api_key: string };
const openai = createOpenAI({ apiKey: api_key });
const result = streamText({
model: openai("gpt-4o-mini"),
prompt
});
const uiStream = createUIMessageStream({
execute: ({ writer }) => {
writer.merge(
result.toUIMessageStream({
sendReasoning: true,
onError: error =>
error instanceof Error ? error.message : String(error),
})
);
},
});
const reader = uiStream.getReader();
try {
while (true) {
const { value, done } = await reader.read();
if (done) {
break;
}
yield JSON.stringify(value);
}
} finally {
reader.releaseLock();
}
}