@genkit-ai/vertexai
Version:
Genkit AI framework plugin for Google Cloud Vertex AI APIs including Gemini APIs, Imagen, and more.
106 lines • 3.02 kB
JavaScript
import { GenkitError } from "genkit";
import { GoogleAuth } from "google-auth-library";
import { CLOUD_PLATFORM_OAUTH_SCOPE } from "./constants.mjs";
function extractErrMsg(e) {
let errorMessage = "An unknown error occurred";
if (e instanceof Error) {
errorMessage = e.message;
} else if (typeof e === "string") {
errorMessage = e;
} else {
try {
errorMessage = JSON.stringify(e);
} catch (stringifyError) {
errorMessage = "Failed to stringify error object";
}
}
return errorMessage;
}
function modelName(name) {
if (!name) return name;
const escapedPrefixes = [
"background-model/",
"model/",
"models/",
"embedders/",
"vertex-model-garden/",
"vertex-rerankers/",
"vertexai/"
];
const prefixesToRemove = new RegExp(escapedPrefixes.join("|"), "g");
return name.replace(prefixesToRemove, "");
}
function checkModelName(name) {
const version = modelName(name);
if (!version) {
throw new GenkitError({
status: "INVALID_ARGUMENT",
message: "Model name is required."
});
}
return version;
}
const TEST_ONLY = { setFakeDerivedOptions };
function setFakeDerivedOptions(options) {
__fake_getDerivedOptions = options;
}
let __fake_getDerivedOptions;
function parseFirebaseProjectId() {
if (!process.env.FIREBASE_CONFIG) return void 0;
try {
return JSON.parse(process.env.FIREBASE_CONFIG).projectId;
} catch {
return void 0;
}
}
async function getDerivedOptions(pluginName, options) {
if (__fake_getDerivedOptions) {
return __fake_getDerivedOptions;
}
let authOptions = options?.googleAuth;
let authClient;
const providedProjectId = options?.projectId || process.env.GCLOUD_PROJECT || parseFirebaseProjectId();
if (process.env.GCLOUD_SERVICE_ACCOUNT_CREDS) {
const serviceAccountCreds = JSON.parse(
process.env.GCLOUD_SERVICE_ACCOUNT_CREDS
);
authOptions = {
credentials: serviceAccountCreds,
scopes: [CLOUD_PLATFORM_OAUTH_SCOPE],
projectId: providedProjectId
};
authClient = new GoogleAuth(authOptions);
} else {
authClient = new GoogleAuth(
authOptions ?? {
scopes: [CLOUD_PLATFORM_OAUTH_SCOPE],
projectId: providedProjectId
}
);
}
const projectId = options?.projectId || await authClient.getProjectId();
const location = options?.location || "us-central1";
if (!location) {
throw new Error(
`${pluginName} Plugin is missing the 'location' configuration. Please set the 'GCLOUD_LOCATION' environment variable or explicitly pass 'location' into genkit config.`
);
}
if (!projectId) {
throw new Error(
`${pluginName} Plugin is missing the 'project' configuration. Please set the 'GCLOUD_PROJECT' environment variable or explicitly pass 'project' into genkit config.`
);
}
return {
location,
projectId,
authClient
};
}
export {
TEST_ONLY,
checkModelName,
extractErrMsg,
getDerivedOptions,
modelName
};
//# sourceMappingURL=utils.mjs.map