import { z, ModelReference, EmbedderReference, ModelArgument, EmbedderArgument } from 'genkit'; import { Score, EvalStatusEnum } from 'genkit/evaluator'; /** * Copyright 2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ declare enum GenkitMetric { FAITHFULNESS = "FAITHFULNESS", ANSWER_RELEVANCY = "ANSWER_RELEVANCY", ANSWER_ACCURACY = "ANSWER_ACCURACY", MALICIOUSNESS = "MALICIOUSNESS", REGEX = "REGEX", DEEP_EQUAL = "DEEP_EQUAL", JSONATA = "JSONATA" } interface BaseGenkitMetricConfig { type: GenkitMetric; statusOverrideFn?: (args: { score: Score; }) => EvalStatusEnum; } interface FaithfulnessGenkitMetricConfig extends BaseGenkitMetricConfig { type: GenkitMetric.FAITHFULNESS; judge: ModelReference; judgeConfig?: z.infer; } interface MaliciousnessGenkitMetricConfig extends BaseGenkitMetricConfig { type: GenkitMetric.MALICIOUSNESS; judge: ModelReference; judgeConfig?: z.infer; } interface AnswerAccuracyGenkitMetricConfig extends BaseGenkitMetricConfig { type: GenkitMetric.ANSWER_ACCURACY; judge: ModelReference; judgeConfig?: z.infer; } interface AnswerRelevancyGenkitMetricConfig extends BaseGenkitMetricConfig { type: GenkitMetric.ANSWER_RELEVANCY; judge: ModelReference; judgeConfig?: z.infer; embedder: EmbedderReference; embedderOptions?: z.infer; } type GenkitMetricConfig = GenkitMetric | FaithfulnessGenkitMetricConfig | MaliciousnessGenkitMetricConfig | AnswerAccuracyGenkitMetricConfig | AnswerRelevancyGenkitMetricConfig; interface PluginOptions { metrics: Array>; judge?: ModelArgument; judgeConfig?: z.infer; embedder?: EmbedderArgument; embedderOptions?: z.infer; } type ResolvedConfig = Omit, 'metrics'> & BaseGenkitMetricConfig; declare function isGenkitMetricConfig(input: any): input is BaseGenkitMetricConfig; export { type AnswerAccuracyGenkitMetricConfig, type AnswerRelevancyGenkitMetricConfig, type BaseGenkitMetricConfig, type FaithfulnessGenkitMetricConfig, GenkitMetric, type GenkitMetricConfig, type MaliciousnessGenkitMetricConfig, type PluginOptions, type ResolvedConfig, isGenkitMetricConfig };