UNPKG

@genkit-ai/vertexai

Version:

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

98 lines 2.93 kB
import { GenkitError, z } from "genkit"; import { modelRef } from "genkit/model"; import OpenAI from "openai"; import { getGenkitClientHeader } from "../../common/index.mjs"; import { OpenAIConfigSchema, defineOpenaiCompatibleModel } from "./openai_compatibility.mjs"; import { checkModelName } from "./utils.mjs"; const LlamaConfigSchema = OpenAIConfigSchema.extend({ location: z.string().optional() }).passthrough(); function commonRef(name, info, configSchema = LlamaConfigSchema) { return modelRef({ name: `vertex-model-garden/${name}`, configSchema, info: info ?? { supports: { multiturn: true, tools: true, media: true, systemRole: true, output: ["text", "json"] } } }); } const GENERIC_MODEL = commonRef("llama"); const KNOWN_MODELS = { "meta/llama-4-maverick-17b-128e-instruct-maas": commonRef( "meta/llama-4-maverick-17b-128e-instruct-maas" ), "meta/llama-4-scout-17b-16e-instruct-maas": commonRef( "meta/llama-4-scout-17b-16e-instruct-maas" ), "meta/llama-3.3-70b-instruct-maas": commonRef( "meta/llama-3.3-70b-instruct-maas" ) }; function isLlamaModelName(value) { return !!value?.startsWith("meta/llama-"); } function model(version, options = {}) { const name = checkModelName(version); return modelRef({ name: `vertex-model-garden/${name}`, config: options, configSchema: LlamaConfigSchema, info: { ...GENERIC_MODEL.info } }); } function listActions(clientOptions) { return []; } function listKnownModels(clientOptions, pluginOptions) { return Object.keys(KNOWN_MODELS).map( (name) => defineModel(name, clientOptions, pluginOptions) ); } function defineModel(name, clientOptions, pluginOptions) { const ref = model(name); const clientFactory = async (request) => { const options = await resolveOptions(clientOptions, request.config); return new OpenAI(options); }; return defineOpenaiCompatibleModel(ref, clientFactory); } async function resolveOptions(clientOptions, requestConfig) { const baseUrlTemplate = clientOptions.baseUrlTemplate ?? "https://{location}-aiplatform.googleapis.com/v1/projects/{projectId}/locations/{location}/endpoints/openapi"; const location = requestConfig?.location || clientOptions.location; const baseURL = baseUrlTemplate.replace(/{location}/g, location).replace(/{projectId}/g, clientOptions.projectId); const apiKey = await clientOptions.authClient.getAccessToken(); if (!apiKey) { throw new GenkitError({ status: "PERMISSION_DENIED", message: "Unable to get accessToken" }); } const defaultHeaders = { "X-Goog-Api-Client": getGenkitClientHeader() }; return { baseURL, apiKey, defaultHeaders }; } export { GENERIC_MODEL, KNOWN_MODELS, LlamaConfigSchema, defineModel, isLlamaModelName, listActions, listKnownModels, model }; //# sourceMappingURL=llama.mjs.map