genkitx-openai
Version:
Firebase Genkit AI framework plugin for OpenAI APIs.
1 lines • 4.93 kB
Source Map (JSON)
{"version":3,"sources":["../src/dalle.ts"],"sourcesContent":["/**\n * Copyright 2024 The Fire Company\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 */\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 type OpenAI from 'openai';\nimport {\n type ImageGenerateParams,\n type ImagesResponse,\n} from 'openai/resources/images.mjs';\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: 'openai/dall-e-3',\n info: {\n label: 'OpenAI - DALL-E 3',\n supports: {\n media: false,\n output: ['media'],\n multiturn: false,\n systemRole: false,\n tools: false,\n },\n },\n configSchema: DallE3ConfigSchema,\n});\n\nfunction toDallE3Request(\n request: GenerateRequest<typeof DallE3ConfigSchema>\n): ImageGenerateParams {\n const options = {\n model: 'dall-e-3',\n prompt: new Message(request.messages[0]).text,\n n: request.candidates || 1,\n size: request.config?.size,\n style: request.config?.style,\n user: request.config?.user,\n quality: request.config?.quality,\n response_format: request.config?.response_format || 'b64_json',\n };\n for (const k in options) {\n if (options[k] === undefined) {\n delete options[k];\n }\n }\n return options;\n}\n\nfunction toGenerateResponse(result: ImagesResponse): GenerateResponseData {\n const candidates: GenerateResponseData['candidates'] = result.data.map(\n (image, index) => ({\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 );\n return { candidates };\n}\n\nexport function dallE3Model(\n ai: Genkit,\n client: OpenAI\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);\n }\n );\n}\n"],"mappings":";;;;;AAgBA,SAAS,8BAA8B,SAAS,SAAS;AAEzD,SAAS,gBAAgB;AAOlB,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,YAAY;AAAA,MACZ,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,cAAc;AAChB,CAAC;AAED,SAAS,gBACP,SACqB;AAlDvB;AAmDE,QAAM,UAAU;AAAA,IACd,OAAO;AAAA,IACP,QAAQ,IAAI,QAAQ,QAAQ,SAAS,CAAC,CAAC,EAAE;AAAA,IACzC,GAAG,QAAQ,cAAc;AAAA,IACzB,OAAM,aAAQ,WAAR,mBAAgB;AAAA,IACtB,QAAO,aAAQ,WAAR,mBAAgB;AAAA,IACvB,OAAM,aAAQ,WAAR,mBAAgB;AAAA,IACtB,UAAS,aAAQ,WAAR,mBAAgB;AAAA,IACzB,mBAAiB,aAAQ,WAAR,mBAAgB,oBAAmB;AAAA,EACtD;AACA,aAAW,KAAK,SAAS;AACvB,QAAI,QAAQ,CAAC,MAAM,QAAW;AAC5B,aAAO,QAAQ,CAAC;AAAA,IAClB;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,mBAAmB,QAA8C;AACxE,QAAM,aAAiD,OAAO,KAAK;AAAA,IACjE,CAAC,OAAO,WAAW;AAAA,MACjB;AAAA,MACA,cAAc;AAAA,MACd,QAAQ,EAAE,eAAe,MAAM,eAAe;AAAA,MAC9C,SAAS;AAAA,QACP,MAAM;AAAA,QACN,SAAS;AAAA,UACP;AAAA,YACE,OAAO;AAAA,cACL,aAAa;AAAA,cACb,KAAK,MAAM,OAAO,yBAAyB,MAAM,QAAQ;AAAA,YAC3D;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,SAAO,EAAE,WAAW;AACtB;AAEO,SAAS,YACd,IACA,QACwC;AACxC,SAAO,GAAG;AAAA,IACR;AAAA,MACE,MAAM,OAAO;AAAA,OACV,OAAO,OAFZ;AAAA,MAGE,cAAc,OAAO;AAAA,IACvB;AAAA,IACA,CAAO,YAAY;AACjB,YAAM,SAAS,MAAM,OAAO,OAAO,SAAS,gBAAgB,OAAO,CAAC;AACpE,aAAO,mBAAmB,MAAM;AAAA,IAClC;AAAA,EACF;AACF;","names":[]}