{"version":3,"sources":["../src/types.ts"],"sourcesContent":["/**\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n  EmbedderArgument,\n  EmbedderReference,\n  ModelArgument,\n  ModelReference,\n  z,\n} from 'genkit';\nimport type { EvalStatusEnum, Score } from 'genkit/evaluator';\n\nexport enum GenkitMetric {\n  FAITHFULNESS = 'FAITHFULNESS',\n  ANSWER_RELEVANCY = 'ANSWER_RELEVANCY',\n  ANSWER_ACCURACY = 'ANSWER_ACCURACY',\n  MALICIOUSNESS = 'MALICIOUSNESS',\n  REGEX = 'REGEX',\n  DEEP_EQUAL = 'DEEP_EQUAL',\n  JSONATA = 'JSONATA',\n}\n\nexport interface BaseGenkitMetricConfig {\n  type: GenkitMetric;\n  statusOverrideFn?: (args: { score: Score }) => EvalStatusEnum;\n}\n\nexport interface FaithfulnessGenkitMetricConfig<\n  ModelCustomOptions extends z.ZodTypeAny,\n> extends BaseGenkitMetricConfig {\n  type: GenkitMetric.FAITHFULNESS;\n  judge: ModelReference<ModelCustomOptions>;\n  judgeConfig?: z.infer<ModelCustomOptions>;\n}\n\nexport interface MaliciousnessGenkitMetricConfig<\n  ModelCustomOptions extends z.ZodTypeAny,\n> extends BaseGenkitMetricConfig {\n  type: GenkitMetric.MALICIOUSNESS;\n  judge: ModelReference<ModelCustomOptions>;\n  judgeConfig?: z.infer<ModelCustomOptions>;\n}\n\nexport interface AnswerAccuracyGenkitMetricConfig<\n  ModelCustomOptions extends z.ZodTypeAny,\n> extends BaseGenkitMetricConfig {\n  type: GenkitMetric.ANSWER_ACCURACY;\n  judge: ModelReference<ModelCustomOptions>;\n  judgeConfig?: z.infer<ModelCustomOptions>;\n}\n\nexport interface AnswerRelevancyGenkitMetricConfig<\n  ModelCustomOptions extends z.ZodTypeAny,\n  EmbedderCustomOptions extends z.ZodTypeAny,\n> extends BaseGenkitMetricConfig {\n  type: GenkitMetric.ANSWER_RELEVANCY;\n  judge: ModelReference<ModelCustomOptions>;\n  judgeConfig?: z.infer<ModelCustomOptions>;\n  embedder: EmbedderReference<EmbedderCustomOptions>;\n  embedderOptions?: z.infer<EmbedderCustomOptions>;\n}\nexport type GenkitMetricConfig<\n  M extends z.ZodTypeAny,\n  E extends z.ZodTypeAny,\n> =\n  | GenkitMetric\n  | FaithfulnessGenkitMetricConfig<M>\n  | MaliciousnessGenkitMetricConfig<M>\n  | AnswerAccuracyGenkitMetricConfig<M>\n  | AnswerRelevancyGenkitMetricConfig<M, E>;\n\nexport interface PluginOptions<\n  ModelCustomOptions extends z.ZodTypeAny,\n  EmbedderCustomOptions extends z.ZodTypeAny,\n> {\n  metrics: Array<GenkitMetricConfig<ModelCustomOptions, EmbedderCustomOptions>>;\n  judge?: ModelArgument<ModelCustomOptions>;\n  judgeConfig?: z.infer<ModelCustomOptions>;\n  embedder?: EmbedderArgument<EmbedderCustomOptions>;\n  embedderOptions?: z.infer<EmbedderCustomOptions>;\n}\n\nexport type ResolvedConfig<\n  ModelCustomOptions extends z.ZodTypeAny,\n  EmbedderCustomOptions extends z.ZodTypeAny,\n> = Omit<PluginOptions<ModelCustomOptions, EmbedderCustomOptions>, 'metrics'> &\n  BaseGenkitMetricConfig;\n\nexport function isGenkitMetricConfig(\n  input: any\n): input is BaseGenkitMetricConfig {\n  return Object.hasOwn(input, 'type');\n}\n"],"mappings":"AAyBO,IAAK,eAAL,kBAAKA,kBAAL;AACL,EAAAA,cAAA,kBAAe;AACf,EAAAA,cAAA,sBAAmB;AACnB,EAAAA,cAAA,qBAAkB;AAClB,EAAAA,cAAA,mBAAgB;AAChB,EAAAA,cAAA,WAAQ;AACR,EAAAA,cAAA,gBAAa;AACb,EAAAA,cAAA,aAAU;AAPA,SAAAA;AAAA,GAAA;AA4EL,SAAS,qBACd,OACiC;AACjC,SAAO,OAAO,OAAO,OAAO,MAAM;AACpC;","names":["GenkitMetric"]}