UNPKG

genkitx-azure-openai

Version:
1 lines 5.33 kB
{"version":3,"sources":["../src/dalle.ts"],"sourcesContent":["/**\n * Copyright 2026 Xavier Portilla Edo\n * Copyright 2026 Google LLC\n * Copyright 2026 Bloom Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { GenerateRequest, GenerateResponseData, Genkit } from \"genkit\";\nimport { GenerationCommonConfigSchema, Message, z } from \"genkit\";\nimport type { ModelAction } from \"genkit/model\";\nimport { modelRef } from \"genkit/model\";\nimport AzureOpenAI from \"openai\";\nimport { ImageGenerateParams, ImagesResponse } from \"openai/resources/images\";\n\nexport const DallE3ConfigSchema = GenerationCommonConfigSchema.extend({\n size: z.enum([\"1024x1024\", \"1792x1024\", \"1024x1792\"]).optional(),\n style: z.enum([\"vivid\", \"natural\"]).optional(),\n user: z.string().optional(),\n quality: z.enum([\"standard\", \"hd\"]).optional(),\n response_format: z.enum([\"b64_json\", \"url\"]).optional(),\n});\n\nexport const dallE3 = modelRef({\n name: \"azure-openai/dall-e-3\",\n info: {\n label: \"OpenAI - DALL-E 3\",\n supports: {\n media: false,\n output: [\"media\"],\n multiturn: false,\n tools: false,\n systemRole: false,\n },\n },\n configSchema: DallE3ConfigSchema,\n});\n\nfunction toDallE3Request(\n request: GenerateRequest & {\n config?: { custom?: z.infer<typeof DallE3ConfigSchema> };\n },\n): ImageGenerateParams {\n const options: Partial<ImageGenerateParams> = {\n model: \"dall-e-3\",\n prompt: new Message(request.messages[0]).text,\n n: request.candidates || 1,\n size: request.config?.custom?.size,\n style: request.config?.custom?.style,\n user: request.config?.custom?.user,\n quality: request.config?.custom?.quality,\n response_format: request.config?.custom?.response_format || \"b64_json\",\n };\n for (const k in options) {\n if (options[k as keyof typeof options] === undefined) {\n delete options[k as keyof typeof options];\n }\n }\n return options as ImageGenerateParams;\n}\n\nfunction toGenerateResponse(result: ImagesResponse): GenerateResponseData {\n interface ImageData {\n url?: string;\n b64_json?: string;\n revised_prompt?: string;\n }\n const candidates: GenerateResponseData[\"candidates\"] = (\n result.data || []\n ).map((image: ImageData, index: number) => ({\n index: index,\n finishReason: \"stop\",\n custom: { revisedPrompt: image.revised_prompt },\n message: {\n role: \"model\",\n content: [\n {\n media: {\n contentType: \"image/png\",\n url: image.url || `data:image/png;base64,${image.b64_json}`,\n },\n },\n ],\n },\n }));\n return { candidates };\n}\n\nexport function dallE3Model(\n ai: Genkit,\n client: AzureOpenAI,\n): ModelAction<typeof DallE3ConfigSchema> {\n return ai.defineModel<typeof DallE3ConfigSchema>(\n {\n name: dallE3.name,\n ...dallE3.info,\n configSchema: dallE3.configSchema,\n },\n async (request) => {\n const result = await client.images.generate(toDallE3Request(request));\n return toGenerateResponse(result as ImagesResponse);\n },\n );\n}\n"],"mappings":"AAmBA,SAAS,8BAA8B,SAAS,SAAS;AAEzD,SAAS,gBAAgB;AAIlB,MAAM,qBAAqB,6BAA6B,OAAO;AAAA,EACpE,MAAM,EAAE,KAAK,CAAC,aAAa,aAAa,WAAW,CAAC,EAAE,SAAS;AAAA,EAC/D,OAAO,EAAE,KAAK,CAAC,SAAS,SAAS,CAAC,EAAE,SAAS;AAAA,EAC7C,MAAM,EAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,SAAS,EAAE,KAAK,CAAC,YAAY,IAAI,CAAC,EAAE,SAAS;AAAA,EAC7C,iBAAiB,EAAE,KAAK,CAAC,YAAY,KAAK,CAAC,EAAE,SAAS;AACxD,CAAC;AAEM,MAAM,SAAS,SAAS;AAAA,EAC7B,MAAM;AAAA,EACN,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,MACR,OAAO;AAAA,MACP,QAAQ,CAAC,OAAO;AAAA,MAChB,WAAW;AAAA,MACX,OAAO;AAAA,MACP,YAAY;AAAA,IACd;AAAA,EACF;AAAA,EACA,cAAc;AAChB,CAAC;AAED,SAAS,gBACP,SAGqB;AACrB,QAAM,UAAwC;AAAA,IAC5C,OAAO;AAAA,IACP,QAAQ,IAAI,QAAQ,QAAQ,SAAS,CAAC,CAAC,EAAE;AAAA,IACzC,GAAG,QAAQ,cAAc;AAAA,IACzB,MAAM,QAAQ,QAAQ,QAAQ;AAAA,IAC9B,OAAO,QAAQ,QAAQ,QAAQ;AAAA,IAC/B,MAAM,QAAQ,QAAQ,QAAQ;AAAA,IAC9B,SAAS,QAAQ,QAAQ,QAAQ;AAAA,IACjC,iBAAiB,QAAQ,QAAQ,QAAQ,mBAAmB;AAAA,EAC9D;AACA,aAAW,KAAK,SAAS;AACvB,QAAI,QAAQ,CAAyB,MAAM,QAAW;AACpD,aAAO,QAAQ,CAAyB;AAAA,IAC1C;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,mBAAmB,QAA8C;AAMxE,QAAM,cACJ,OAAO,QAAQ,CAAC,GAChB,IAAI,CAAC,OAAkB,WAAmB;AAAA,IAC1C;AAAA,IACA,cAAc;AAAA,IACd,QAAQ,EAAE,eAAe,MAAM,eAAe;AAAA,IAC9C,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA,QACP;AAAA,UACE,OAAO;AAAA,YACL,aAAa;AAAA,YACb,KAAK,MAAM,OAAO,yBAAyB,MAAM,QAAQ;AAAA,UAC3D;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,EAAE;AACF,SAAO,EAAE,WAAW;AACtB;AAEO,SAAS,YACd,IACA,QACwC;AACxC,SAAO,GAAG;AAAA,IACR;AAAA,MACE,MAAM,OAAO;AAAA,MACb,GAAG,OAAO;AAAA,MACV,cAAc,OAAO;AAAA,IACvB;AAAA,IACA,OAAO,YAAY;AACjB,YAAM,SAAS,MAAM,OAAO,OAAO,SAAS,gBAAgB,OAAO,CAAC;AACpE,aAAO,mBAAmB,MAAwB;AAAA,IACpD;AAAA,EACF;AACF;","names":[]}