UNPKG

@juspay/neurolink

Version:

Universal AI Development Platform with working MCP integration, multi-provider support, voice (TTS/STT/realtime), and professional CLI. 58+ external MCP servers discoverable, multimodal file processing, RAG pipelines. Build, test, and deploy AI applicatio

81 lines 3.82 kB
/** * @file This file exports the main Evaluator class, which serves as the central entry point for the evaluation system. */ import { ContextBuilder } from "./contextBuilder.js"; import { RAGASEvaluator } from "./ragasEvaluator.js"; import { mapToEvaluationData } from "./scoring.js"; // Re-export errors export * from "./errors/index.js"; // Re-export hooks export * from "./hooks/index.js"; // Re-export pipeline export * from "./pipeline/index.js"; // Re-export reporting export * from "./reporting/index.js"; // Re-export scorers export * from "./scorers/index.js"; // Re-export Factory and Registry export { BatchEvaluator } from "./BatchEvaluator.js"; export { EvaluationAggregator } from "./EvaluationAggregator.js"; export { EvaluatorFactory, getEvaluatorFactory } from "./EvaluatorFactory.js"; export { EvaluatorRegistry, getEvaluatorRegistry, } from "./EvaluatorRegistry.js"; // Re-export internal RAGAS classes so callers (and the evaluation test // suite) can instantiate them directly from the public surface. export { RAGASEvaluator } from "./ragasEvaluator.js"; export { RetryManager } from "./retryManager.js"; /** * A centralized class for performing response evaluations. It supports different * evaluation strategies, with RAGAS-style model-based evaluation as the default. * This class orchestrates the context building and evaluation process. */ export class Evaluator { contextBuilder; config; ragasEvaluator; constructor(config = {}) { this.config = config; this.contextBuilder = new ContextBuilder(); this.ragasEvaluator = new RAGASEvaluator(this.config.evaluationModel, this.config.provider, this.config.threshold, this.config.promptGenerator); } /** * The main entry point for performing an evaluation. It selects the evaluation * strategy based on the configuration and executes it. * * @param options The original `TextGenerationOptions` from the user request. * @param result The `GenerateResult` from the provider. * @returns A promise that resolves to the `EvaluationResult`. */ async evaluate(options, result, threshold, config) { const evaluationStrategy = this.config.evaluationStrategy || "ragas"; const customEvaluator = this.config.customEvaluator; switch (evaluationStrategy) { case "ragas": { const { evaluationResult, evalContext } = await this.evaluateWithRAGAS(options, result); const evaluationData = mapToEvaluationData(evalContext, evaluationResult, threshold, config.offTopicThreshold, config.highSeverityThreshold); return evaluationData; } case "custom": { if (customEvaluator) { const { evaluationResult, evalContext } = await customEvaluator(options, result); return mapToEvaluationData(evalContext, evaluationResult, threshold, config.offTopicThreshold, config.highSeverityThreshold); } throw new Error("Custom evaluator function not provided in config."); } default: throw new Error(`Unsupported evaluation strategy: ${evaluationStrategy} `); } } /** * Performs evaluation using the RAGAS-style model-based evaluator. * * @param options The original `TextGenerationOptions`. * @param result The `GenerateResult` to be evaluated. * @returns A promise that resolves to the `EvaluationResult`. */ async evaluateWithRAGAS(options, result) { const evalContext = this.contextBuilder.buildContext(options, result); const evaluationResult = await this.ragasEvaluator.evaluate(evalContext); return { evaluationResult, evalContext }; } } //# sourceMappingURL=index.js.map