UNPKG

@genkit-ai/vertexai

Version:

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

1 lines 6.46 kB
{"version":3,"sources":["../../../src/modelgarden/v2/llama.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 { ActionMetadata, GenkitError, z, type ModelReference } from 'genkit';\nimport {\n ModelInfo,\n modelRef,\n type GenerateRequest,\n type ModelAction,\n} from 'genkit/model';\nimport type { GoogleAuth } from 'google-auth-library';\nimport OpenAI from 'openai';\nimport { getGenkitClientHeader } from '../../common/index.mjs';\nimport {\n OpenAIConfigSchema,\n defineOpenaiCompatibleModel,\n} from './openai_compatibility.mjs';\nimport { PluginOptions } from './types.mjs';\nimport { checkModelName } from './utils.mjs';\n\nexport const LlamaConfigSchema = OpenAIConfigSchema.extend({\n location: z.string().optional(),\n}).passthrough();\nexport type LlamaConfigSchemaType = typeof LlamaConfigSchema;\nexport type LlamaConfig = z.infer<LlamaConfigSchemaType>;\n\ntype ConfigSchemaType = LlamaConfigSchemaType;\n\nfunction commonRef(\n name: string,\n info?: ModelInfo,\n configSchema: ConfigSchemaType = LlamaConfigSchema\n): ModelReference<ConfigSchemaType> {\n return modelRef({\n name: `vertex-model-garden/${name}`,\n configSchema,\n info: info ?? {\n supports: {\n multiturn: true,\n tools: true,\n media: true,\n systemRole: true,\n output: ['text', 'json'],\n },\n },\n });\n}\n\nexport const GENERIC_MODEL = commonRef('llama');\n\nexport const KNOWN_MODELS = {\n 'meta/llama-4-maverick-17b-128e-instruct-maas': commonRef(\n 'meta/llama-4-maverick-17b-128e-instruct-maas'\n ),\n 'meta/llama-4-scout-17b-16e-instruct-maas': commonRef(\n 'meta/llama-4-scout-17b-16e-instruct-maas'\n ),\n 'meta/llama-3.3-70b-instruct-maas': commonRef(\n 'meta/llama-3.3-70b-instruct-maas'\n ),\n};\nexport type KnownModels = keyof typeof KNOWN_MODELS;\nexport type LlamaModelName = `meta/llama-${string}`;\nexport function isLlamaModelName(value?: string): value is LlamaModelName {\n return !!value?.startsWith('meta/llama-');\n}\n\nexport function model(\n version: string,\n options: LlamaConfig = {}\n): ModelReference<LlamaConfigSchemaType> {\n const name = checkModelName(version);\n\n return modelRef({\n name: `vertex-model-garden/${name}`,\n config: options,\n configSchema: LlamaConfigSchema,\n info: {\n ...GENERIC_MODEL.info,\n },\n });\n}\n\nexport interface ClientOptions {\n location: string; // e.g. 'us-central1' or 'us-east5'\n projectId: string;\n authClient: GoogleAuth;\n baseUrlTemplate?: string;\n}\n\nexport function listActions(clientOptions: ClientOptions): ActionMetadata[] {\n // TODO: figure out where to get the list of models.\n return [];\n}\n\nexport function listKnownModels(\n clientOptions: ClientOptions,\n pluginOptions?: PluginOptions\n) {\n return Object.keys(KNOWN_MODELS).map((name) =>\n defineModel(name, clientOptions, pluginOptions)\n );\n}\n\nexport function defineModel(\n name: string,\n clientOptions: ClientOptions,\n pluginOptions?: PluginOptions\n): ModelAction<LlamaConfigSchemaType> {\n const ref = model(name);\n const clientFactory = async (\n request: GenerateRequest<LlamaConfigSchemaType>\n ): Promise<OpenAI> => {\n const options = await resolveOptions(clientOptions, request.config);\n return new OpenAI(options);\n };\n return defineOpenaiCompatibleModel(ref, clientFactory);\n}\n\nasync function resolveOptions(\n clientOptions: ClientOptions,\n requestConfig?: LlamaConfig\n) {\n const baseUrlTemplate =\n clientOptions.baseUrlTemplate ??\n 'https://{location}-aiplatform.googleapis.com/v1/projects/{projectId}/locations/{location}/endpoints/openapi';\n const location = requestConfig?.location || clientOptions.location;\n const baseURL = baseUrlTemplate\n .replace(/{location}/g, location)\n .replace(/{projectId}/g, clientOptions.projectId);\n const apiKey = await clientOptions.authClient.getAccessToken();\n if (!apiKey) {\n throw new GenkitError({\n status: 'PERMISSION_DENIED',\n message: 'Unable to get accessToken',\n });\n }\n const defaultHeaders = {\n 'X-Goog-Api-Client': getGenkitClientHeader(),\n };\n return { baseURL, apiKey, defaultHeaders };\n}\n"],"mappings":"AAgBA,SAAyB,aAAa,SAA8B;AACpE;AAAA,EAEE;AAAA,OAGK;AAEP,OAAO,YAAY;AACnB,SAAS,6BAA6B;AACtC;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP,SAAS,sBAAsB;AAExB,MAAM,oBAAoB,mBAAmB,OAAO;AAAA,EACzD,UAAU,EAAE,OAAO,EAAE,SAAS;AAChC,CAAC,EAAE,YAAY;AAMf,SAAS,UACP,MACA,MACA,eAAiC,mBACC;AAClC,SAAO,SAAS;AAAA,IACd,MAAM,uBAAuB,IAAI;AAAA,IACjC;AAAA,IACA,MAAM,QAAQ;AAAA,MACZ,UAAU;AAAA,QACR,WAAW;AAAA,QACX,OAAO;AAAA,QACP,OAAO;AAAA,QACP,YAAY;AAAA,QACZ,QAAQ,CAAC,QAAQ,MAAM;AAAA,MACzB;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEO,MAAM,gBAAgB,UAAU,OAAO;AAEvC,MAAM,eAAe;AAAA,EAC1B,gDAAgD;AAAA,IAC9C;AAAA,EACF;AAAA,EACA,4CAA4C;AAAA,IAC1C;AAAA,EACF;AAAA,EACA,oCAAoC;AAAA,IAClC;AAAA,EACF;AACF;AAGO,SAAS,iBAAiB,OAAyC;AACxE,SAAO,CAAC,CAAC,OAAO,WAAW,aAAa;AAC1C;AAEO,SAAS,MACd,SACA,UAAuB,CAAC,GACe;AACvC,QAAM,OAAO,eAAe,OAAO;AAEnC,SAAO,SAAS;AAAA,IACd,MAAM,uBAAuB,IAAI;AAAA,IACjC,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,MAAM;AAAA,MACJ,GAAG,cAAc;AAAA,IACnB;AAAA,EACF,CAAC;AACH;AASO,SAAS,YAAY,eAAgD;AAE1E,SAAO,CAAC;AACV;AAEO,SAAS,gBACd,eACA,eACA;AACA,SAAO,OAAO,KAAK,YAAY,EAAE;AAAA,IAAI,CAAC,SACpC,YAAY,MAAM,eAAe,aAAa;AAAA,EAChD;AACF;AAEO,SAAS,YACd,MACA,eACA,eACoC;AACpC,QAAM,MAAM,MAAM,IAAI;AACtB,QAAM,gBAAgB,OACpB,YACoB;AACpB,UAAM,UAAU,MAAM,eAAe,eAAe,QAAQ,MAAM;AAClE,WAAO,IAAI,OAAO,OAAO;AAAA,EAC3B;AACA,SAAO,4BAA4B,KAAK,aAAa;AACvD;AAEA,eAAe,eACb,eACA,eACA;AACA,QAAM,kBACJ,cAAc,mBACd;AACF,QAAM,WAAW,eAAe,YAAY,cAAc;AAC1D,QAAM,UAAU,gBACb,QAAQ,eAAe,QAAQ,EAC/B,QAAQ,gBAAgB,cAAc,SAAS;AAClD,QAAM,SAAS,MAAM,cAAc,WAAW,eAAe;AAC7D,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI,YAAY;AAAA,MACpB,QAAQ;AAAA,MACR,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AACA,QAAM,iBAAiB;AAAA,IACrB,qBAAqB,sBAAsB;AAAA,EAC7C;AACA,SAAO,EAAE,SAAS,QAAQ,eAAe;AAC3C;","names":[]}