@genkit-ai/vertexai
Version:
Genkit AI framework plugin for Google Cloud Vertex AI APIs including Gemini APIs, Imagen, and more.
371 lines • 11.6 kB
JavaScript
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var evaluation_exports = {};
__export(evaluation_exports, {
VertexAIEvaluationMetricType: () => VertexAIEvaluationMetricType,
vertexEvaluators: () => vertexEvaluators
});
module.exports = __toCommonJS(evaluation_exports);
var import_genkit = require("genkit");
var import_evaluator_factory = require("./evaluator_factory.js");
var VertexAIEvaluationMetricType = /* @__PURE__ */ ((VertexAIEvaluationMetricType2) => {
VertexAIEvaluationMetricType2["BLEU"] = "BLEU";
VertexAIEvaluationMetricType2["ROUGE"] = "ROUGE";
VertexAIEvaluationMetricType2["FLUENCY"] = "FLEUNCY";
VertexAIEvaluationMetricType2["SAFETY"] = "SAFETY";
VertexAIEvaluationMetricType2["GROUNDEDNESS"] = "GROUNDEDNESS";
VertexAIEvaluationMetricType2["SUMMARIZATION_QUALITY"] = "SUMMARIZATION_QUALITY";
VertexAIEvaluationMetricType2["SUMMARIZATION_HELPFULNESS"] = "SUMMARIZATION_HELPFULNESS";
VertexAIEvaluationMetricType2["SUMMARIZATION_VERBOSITY"] = "SUMMARIZATION_VERBOSITY";
return VertexAIEvaluationMetricType2;
})(VertexAIEvaluationMetricType || {});
function stringify(input) {
return typeof input === "string" ? input : JSON.stringify(input);
}
function vertexEvaluators(ai, auth, metrics, projectId, location) {
const factory = new import_evaluator_factory.EvaluatorFactory(auth, location, projectId);
return metrics.map((metric) => {
const metricType = isConfig(metric) ? metric.type : metric;
const metricSpec = isConfig(metric) ? metric.metricSpec : {};
switch (metricType) {
case "BLEU" /* BLEU */: {
return createBleuEvaluator(ai, factory, metricSpec);
}
case "ROUGE" /* ROUGE */: {
return createRougeEvaluator(ai, factory, metricSpec);
}
case "FLEUNCY" /* FLUENCY */: {
return createFluencyEvaluator(ai, factory, metricSpec);
}
case "SAFETY" /* SAFETY */: {
return createSafetyEvaluator(ai, factory, metricSpec);
}
case "GROUNDEDNESS" /* GROUNDEDNESS */: {
return createGroundednessEvaluator(ai, factory, metricSpec);
}
case "SUMMARIZATION_QUALITY" /* SUMMARIZATION_QUALITY */: {
return createSummarizationQualityEvaluator(ai, factory, metricSpec);
}
case "SUMMARIZATION_HELPFULNESS" /* SUMMARIZATION_HELPFULNESS */: {
return createSummarizationHelpfulnessEvaluator(ai, factory, metricSpec);
}
case "SUMMARIZATION_VERBOSITY" /* SUMMARIZATION_VERBOSITY */: {
return createSummarizationVerbosityEvaluator(ai, factory, metricSpec);
}
}
});
}
function isConfig(config) {
return config.type !== void 0;
}
const BleuResponseSchema = import_genkit.z.object({
bleuResults: import_genkit.z.object({
bleuMetricValues: import_genkit.z.array(import_genkit.z.object({ score: import_genkit.z.number() }))
})
});
function createBleuEvaluator(ai, factory, metricSpec) {
return factory.create(
ai,
{
metric: "BLEU" /* BLEU */,
displayName: "BLEU",
definition: "Computes the BLEU score by comparing the output against the ground truth",
responseSchema: BleuResponseSchema
},
(datapoint) => {
return {
bleuInput: {
metricSpec,
instances: [
{
prediction: stringify(datapoint.output),
reference: datapoint.reference
}
]
}
};
},
(response) => {
return {
score: response.bleuResults.bleuMetricValues[0].score
};
}
);
}
const RougeResponseSchema = import_genkit.z.object({
rougeResults: import_genkit.z.object({
rougeMetricValues: import_genkit.z.array(import_genkit.z.object({ score: import_genkit.z.number() }))
})
});
function createRougeEvaluator(ai, factory, metricSpec) {
return factory.create(
ai,
{
metric: "ROUGE" /* ROUGE */,
displayName: "ROUGE",
definition: "Computes the ROUGE score by comparing the output against the ground truth",
responseSchema: RougeResponseSchema
},
(datapoint) => {
return {
rougeInput: {
metricSpec,
instances: {
prediction: stringify(datapoint.output),
reference: datapoint.reference
}
}
};
},
(response) => {
return {
score: response.rougeResults.rougeMetricValues[0].score
};
}
);
}
const FluencyResponseSchema = import_genkit.z.object({
fluencyResult: import_genkit.z.object({
score: import_genkit.z.number(),
explanation: import_genkit.z.string(),
confidence: import_genkit.z.number()
})
});
function createFluencyEvaluator(ai, factory, metricSpec) {
return factory.create(
ai,
{
metric: "FLEUNCY" /* FLUENCY */,
displayName: "Fluency",
definition: "Assesses the language mastery of an output",
responseSchema: FluencyResponseSchema
},
(datapoint) => {
return {
fluencyInput: {
metricSpec,
instance: {
prediction: stringify(datapoint.output)
}
}
};
},
(response) => {
return {
score: response.fluencyResult.score,
details: {
reasoning: response.fluencyResult.explanation
}
};
}
);
}
const SafetyResponseSchema = import_genkit.z.object({
safetyResult: import_genkit.z.object({
score: import_genkit.z.number(),
explanation: import_genkit.z.string(),
confidence: import_genkit.z.number()
})
});
function createSafetyEvaluator(ai, factory, metricSpec) {
return factory.create(
ai,
{
metric: "SAFETY" /* SAFETY */,
displayName: "Safety",
definition: "Assesses the level of safety of an output",
responseSchema: SafetyResponseSchema
},
(datapoint) => {
return {
safetyInput: {
metricSpec,
instance: {
prediction: stringify(datapoint.output)
}
}
};
},
(response) => {
return {
score: response.safetyResult.score,
details: {
reasoning: response.safetyResult.explanation
}
};
}
);
}
const GroundednessResponseSchema = import_genkit.z.object({
groundednessResult: import_genkit.z.object({
score: import_genkit.z.number(),
explanation: import_genkit.z.string(),
confidence: import_genkit.z.number()
})
});
function createGroundednessEvaluator(ai, factory, metricSpec) {
return factory.create(
ai,
{
metric: "GROUNDEDNESS" /* GROUNDEDNESS */,
displayName: "Groundedness",
definition: "Assesses the ability to provide or reference information included only in the context",
responseSchema: GroundednessResponseSchema
},
(datapoint) => {
return {
groundednessInput: {
metricSpec,
instance: {
prediction: stringify(datapoint.output),
context: datapoint.context?.join(". ")
}
}
};
},
(response) => {
return {
score: response.groundednessResult.score,
details: {
reasoning: response.groundednessResult.explanation
}
};
}
);
}
const SummarizationQualityResponseSchema = import_genkit.z.object({
summarizationQualityResult: import_genkit.z.object({
score: import_genkit.z.number(),
explanation: import_genkit.z.string(),
confidence: import_genkit.z.number()
})
});
function createSummarizationQualityEvaluator(ai, factory, metricSpec) {
return factory.create(
ai,
{
metric: "SUMMARIZATION_QUALITY" /* SUMMARIZATION_QUALITY */,
displayName: "Summarization quality",
definition: "Assesses the overall ability to summarize text",
responseSchema: SummarizationQualityResponseSchema
},
(datapoint) => {
return {
summarizationQualityInput: {
metricSpec,
instance: {
prediction: stringify(datapoint.output),
instruction: stringify(datapoint.input),
context: datapoint.context?.join(". ")
}
}
};
},
(response) => {
return {
score: response.summarizationQualityResult.score,
details: {
reasoning: response.summarizationQualityResult.explanation
}
};
}
);
}
const SummarizationHelpfulnessResponseSchema = import_genkit.z.object({
summarizationHelpfulnessResult: import_genkit.z.object({
score: import_genkit.z.number(),
explanation: import_genkit.z.string(),
confidence: import_genkit.z.number()
})
});
function createSummarizationHelpfulnessEvaluator(ai, factory, metricSpec) {
return factory.create(
ai,
{
metric: "SUMMARIZATION_HELPFULNESS" /* SUMMARIZATION_HELPFULNESS */,
displayName: "Summarization helpfulness",
definition: "Assesses the ability to provide a summarization, which contains the details necessary to substitute the original text",
responseSchema: SummarizationHelpfulnessResponseSchema
},
(datapoint) => {
return {
summarizationHelpfulnessInput: {
metricSpec,
instance: {
prediction: stringify(datapoint.output),
instruction: stringify(datapoint.input),
context: datapoint.context?.join(". ")
}
}
};
},
(response) => {
return {
score: response.summarizationHelpfulnessResult.score,
details: {
reasoning: response.summarizationHelpfulnessResult.explanation
}
};
}
);
}
const SummarizationVerbositySchema = import_genkit.z.object({
summarizationVerbosityResult: import_genkit.z.object({
score: import_genkit.z.number(),
explanation: import_genkit.z.string(),
confidence: import_genkit.z.number()
})
});
function createSummarizationVerbosityEvaluator(ai, factory, metricSpec) {
return factory.create(
ai,
{
metric: "SUMMARIZATION_VERBOSITY" /* SUMMARIZATION_VERBOSITY */,
displayName: "Summarization verbosity",
definition: "Aassess the ability to provide a succinct summarization",
responseSchema: SummarizationVerbositySchema
},
(datapoint) => {
return {
summarizationVerbosityInput: {
metricSpec,
instance: {
prediction: stringify(datapoint.output),
instruction: stringify(datapoint.input),
context: datapoint.context?.join(". ")
}
}
};
},
(response) => {
return {
score: response.summarizationVerbosityResult.score,
details: {
reasoning: response.summarizationVerbosityResult.explanation
}
};
}
);
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
VertexAIEvaluationMetricType,
vertexEvaluators
});
//# sourceMappingURL=evaluation.js.map