UNPKG

@tanstack/ai

Version:

Core TanStack AI library - Open source AI SDK

65 lines (64 loc) 1.73 kB
import { aiEventClient } from "@tanstack/ai-event-client"; import { streamGenerationResult } from "../stream-generation-result.js"; const kind = "image"; function createId(prefix) { return `${prefix}-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`; } function generateImage(options) { if (options.stream) { return streamGenerationResult( () => runGenerateImage(options) ); } return runGenerateImage(options); } async function runGenerateImage(options) { const { adapter, stream: _stream, ...rest } = options; const model = adapter.model; const requestId = createId("image"); const startTime = Date.now(); aiEventClient.emit("image:request:started", { requestId, provider: adapter.name, model, prompt: rest.prompt, numberOfImages: rest.numberOfImages, size: rest.size, modelOptions: rest.modelOptions, timestamp: startTime }); return adapter.generateImages({ ...rest, model }).then((result) => { const duration = Date.now() - startTime; aiEventClient.emit("image:request:completed", { requestId, provider: adapter.name, model, images: result.images.map((image) => ({ url: image.url, b64Json: image.b64Json })), duration, modelOptions: rest.modelOptions, timestamp: Date.now() }); if (result.usage) { aiEventClient.emit("image:usage", { requestId, model, usage: result.usage, modelOptions: rest.modelOptions, timestamp: Date.now() }); } return result; }); } function createImageOptions(options) { return options; } export { createImageOptions, generateImage, kind }; //# sourceMappingURL=index.js.map