@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
JavaScript
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