genkitx-azure-openai
Version:
Genkit AI framework plugin for Azure OpenAI APIs.
79 lines • 2.1 kB
JavaScript
import { GenerationCommonConfigSchema, Message, z } from "genkit";
import { modelRef } from "genkit/model";
const DallE3ConfigSchema = GenerationCommonConfigSchema.extend({
size: z.enum(["1024x1024", "1792x1024", "1024x1792"]).optional(),
style: z.enum(["vivid", "natural"]).optional(),
user: z.string().optional(),
quality: z.enum(["standard", "hd"]).optional(),
response_format: z.enum(["b64_json", "url"]).optional()
});
const dallE3 = modelRef({
name: "azure-openai/dall-e-3",
info: {
label: "OpenAI - DALL-E 3",
supports: {
media: false,
output: ["media"],
multiturn: false,
tools: false,
systemRole: false
}
},
configSchema: DallE3ConfigSchema
});
function toDallE3Request(request) {
const options = {
model: "dall-e-3",
prompt: new Message(request.messages[0]).text,
n: request.candidates || 1,
size: request.config?.custom?.size,
style: request.config?.custom?.style,
user: request.config?.custom?.user,
quality: request.config?.custom?.quality,
response_format: request.config?.custom?.response_format || "b64_json"
};
for (const k in options) {
if (options[k] === void 0) {
delete options[k];
}
}
return options;
}
function toGenerateResponse(result) {
const candidates = (result.data || []).map((image, index) => ({
index,
finishReason: "stop",
custom: { revisedPrompt: image.revised_prompt },
message: {
role: "model",
content: [
{
media: {
contentType: "image/png",
url: image.url || `data:image/png;base64,${image.b64_json}`
}
}
]
}
}));
return { candidates };
}
function dallE3Model(ai, client) {
return ai.defineModel(
{
name: dallE3.name,
...dallE3.info,
configSchema: dallE3.configSchema
},
async (request) => {
const result = await client.images.generate(toDallE3Request(request));
return toGenerateResponse(result);
}
);
}
export {
DallE3ConfigSchema,
dallE3,
dallE3Model
};
//# sourceMappingURL=dalle.mjs.map