UNPKG

@genkit-ai/vertexai

Version:

Genkit AI framework plugin for Google Cloud Vertex AI APIs including Gemini APIs, Imagen, and more.

1 lines 5.91 kB
{"version":3,"sources":["../../../src/modelgarden/v2/index.ts"],"sourcesContent":["/**\n * Copyright 2025 Google LLC\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 { GenkitError, ModelReference, z } from 'genkit';\nimport { genkitPluginV2, type GenkitPluginV2 } from 'genkit/plugin';\nimport { ActionType } from 'genkit/registry';\nimport { getDerivedParams } from '../../common/index.mjs';\nimport * as anthropic from './anthropic.mjs';\nimport * as llama from './llama.mjs';\nimport * as mistral from './mistral.mjs';\nimport type { PluginOptions } from './types.mjs';\n\nexport type { PluginOptions };\n\nasync function initializer(pluginOptions?: PluginOptions) {\n const clientOptions = await getDerivedParams(pluginOptions);\n return [\n ...anthropic.listKnownModels(clientOptions, pluginOptions),\n ...mistral.listKnownModels(clientOptions, pluginOptions),\n ...llama.listKnownModels(clientOptions, pluginOptions),\n ];\n}\n\nasync function resolver(\n actionType: ActionType,\n actionName: string,\n pluginOptions?: PluginOptions\n) {\n const clientOptions = await getDerivedParams(pluginOptions);\n switch (actionType) {\n case 'model':\n if (anthropic.isAnthropicModelName(actionName)) {\n return anthropic.defineModel(actionName, clientOptions, pluginOptions);\n } else if (mistral.isMistralModelName(actionName)) {\n return mistral.defineModel(actionName, clientOptions, pluginOptions);\n } else if (llama.isLlamaModelName(actionName)) {\n return llama.defineModel(actionName, clientOptions, pluginOptions);\n }\n break;\n }\n return undefined;\n}\n\nasync function listActions(options?: PluginOptions) {\n try {\n const clientOptions = await getDerivedParams(options);\n return [\n ...anthropic.listActions(clientOptions),\n ...mistral.listActions(clientOptions),\n ...llama.listActions(clientOptions),\n ];\n } catch (e: unknown) {\n return [];\n }\n}\n\n/**\n * Add Google Cloud Vertex AI Model Garden to Genkit.\n */\nexport function vertexModelGardenPlugin(\n options: PluginOptions\n): GenkitPluginV2 {\n let listActionsCache;\n return genkitPluginV2({\n name: 'vertex-model-garden',\n init: async () => await initializer(options),\n resolve: async (actionType: ActionType, actionName: string) =>\n await resolver(actionType, actionName, options),\n list: async () => {\n if (listActionsCache) return listActionsCache;\n listActionsCache = await listActions(options);\n return listActionsCache;\n },\n });\n}\n\nexport type VertexModelGardenPlugin = {\n (pluginOptions?: PluginOptions): GenkitPluginV2;\n model(\n name: anthropic.KnownModels | (anthropic.AnthropicModelName & {}),\n config?: anthropic.AnthropicConfig\n ): ModelReference<anthropic.AnthropicConfigSchemaType>;\n model(\n name: mistral.KnownModels | (mistral.MistralModelName & {}),\n config: mistral.MistralConfig\n ): ModelReference<mistral.MistralConfigSchemaType>;\n model(\n name: llama.KnownModels | (llama.LlamaModelName & {}),\n config: llama.LlamaConfig\n ): ModelReference<llama.LlamaConfigSchemaType>;\n model(name: string, config?: any): ModelReference<z.ZodTypeAny>;\n};\n\nexport const vertexModelGarden =\n vertexModelGardenPlugin as VertexModelGardenPlugin;\n(vertexModelGarden as any).model = (\n name: string,\n config?: any\n): ModelReference<z.ZodTypeAny> => {\n if (anthropic.isAnthropicModelName(name)) {\n return anthropic.model(name, config);\n }\n if (mistral.isMistralModelName(name)) {\n return mistral.model(name, config);\n }\n if (llama.isLlamaModelName(name)) {\n return llama.model(name, config);\n }\n throw new GenkitError({\n status: 'INVALID_ARGUMENT',\n message: `model '${name}' is not a recognized model name`,\n });\n};\n"],"mappings":"AAgBA,SAAS,mBAAsC;AAC/C,SAAS,sBAA2C;AAEpD,SAAS,wBAAwB;AACjC,YAAY,eAAe;AAC3B,YAAY,WAAW;AACvB,YAAY,aAAa;AAKzB,eAAe,YAAY,eAA+B;AACxD,QAAM,gBAAgB,MAAM,iBAAiB,aAAa;AAC1D,SAAO;AAAA,IACL,GAAG,UAAU,gBAAgB,eAAe,aAAa;AAAA,IACzD,GAAG,QAAQ,gBAAgB,eAAe,aAAa;AAAA,IACvD,GAAG,MAAM,gBAAgB,eAAe,aAAa;AAAA,EACvD;AACF;AAEA,eAAe,SACb,YACA,YACA,eACA;AACA,QAAM,gBAAgB,MAAM,iBAAiB,aAAa;AAC1D,UAAQ,YAAY;AAAA,IAClB,KAAK;AACH,UAAI,UAAU,qBAAqB,UAAU,GAAG;AAC9C,eAAO,UAAU,YAAY,YAAY,eAAe,aAAa;AAAA,MACvE,WAAW,QAAQ,mBAAmB,UAAU,GAAG;AACjD,eAAO,QAAQ,YAAY,YAAY,eAAe,aAAa;AAAA,MACrE,WAAW,MAAM,iBAAiB,UAAU,GAAG;AAC7C,eAAO,MAAM,YAAY,YAAY,eAAe,aAAa;AAAA,MACnE;AACA;AAAA,EACJ;AACA,SAAO;AACT;AAEA,eAAe,YAAY,SAAyB;AAClD,MAAI;AACF,UAAM,gBAAgB,MAAM,iBAAiB,OAAO;AACpD,WAAO;AAAA,MACL,GAAG,UAAU,YAAY,aAAa;AAAA,MACtC,GAAG,QAAQ,YAAY,aAAa;AAAA,MACpC,GAAG,MAAM,YAAY,aAAa;AAAA,IACpC;AAAA,EACF,SAAS,GAAY;AACnB,WAAO,CAAC;AAAA,EACV;AACF;AAKO,SAAS,wBACd,SACgB;AAChB,MAAI;AACJ,SAAO,eAAe;AAAA,IACpB,MAAM;AAAA,IACN,MAAM,YAAY,MAAM,YAAY,OAAO;AAAA,IAC3C,SAAS,OAAO,YAAwB,eACtC,MAAM,SAAS,YAAY,YAAY,OAAO;AAAA,IAChD,MAAM,YAAY;AAChB,UAAI,iBAAkB,QAAO;AAC7B,yBAAmB,MAAM,YAAY,OAAO;AAC5C,aAAO;AAAA,IACT;AAAA,EACF,CAAC;AACH;AAmBO,MAAM,oBACX;AACD,kBAA0B,QAAQ,CACjC,MACA,WACiC;AACjC,MAAI,UAAU,qBAAqB,IAAI,GAAG;AACxC,WAAO,UAAU,MAAM,MAAM,MAAM;AAAA,EACrC;AACA,MAAI,QAAQ,mBAAmB,IAAI,GAAG;AACpC,WAAO,QAAQ,MAAM,MAAM,MAAM;AAAA,EACnC;AACA,MAAI,MAAM,iBAAiB,IAAI,GAAG;AAChC,WAAO,MAAM,MAAM,MAAM,MAAM;AAAA,EACjC;AACA,QAAM,IAAI,YAAY;AAAA,IACpB,QAAQ;AAAA,IACR,SAAS,UAAU,IAAI;AAAA,EACzB,CAAC;AACH;","names":[]}