@tanstack/ai
Version:
Core TanStack AI library - Open source AI SDK
65 lines (64 loc) • 1.73 kB
JavaScript
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