ГЛОБАЛЬНЫЙ РЕФАКТОРИНГ АРХИТЕКТУРЫ - Рефакторинг этапов 2.12.23: декомпозиция deep-turn пайплайна ассистента в runtime-адаптеры
This commit is contained in:
@@ -0,0 +1,122 @@
|
||||
import type {
|
||||
AnswerGroundingCheck,
|
||||
AssistantRequirement,
|
||||
RequirementCoverageReport,
|
||||
UnifiedRetrievalResult
|
||||
} from "../types/assistant";
|
||||
import type { NormalizeResponsePayload, RouteHintSummary } from "../types/normalizer";
|
||||
import type { AssistantRequirementExtractionResult, AssistantCoverageEvaluationResult } from "./assistantOrchestrationRuntimeAdapter";
|
||||
import { runAssistantCoverageGroundingPipeline } from "./assistantOrchestrationRuntimeAdapter";
|
||||
import type { AssistantDeepTurnGroundingEligibilityOutput } from "./assistantDeepTurnGuardRuntimeAdapter";
|
||||
import { applyAssistantDeepTurnGroundingEligibility } from "./assistantDeepTurnGuardRuntimeAdapter";
|
||||
|
||||
export interface AssistantDeepTurnGroundingRuntimeInput {
|
||||
claimType: string;
|
||||
retrievalResults: UnifiedRetrievalResult[];
|
||||
rbpPlanAudit: unknown;
|
||||
faPlanAudit: unknown;
|
||||
routeSummary: RouteHintSummary | null;
|
||||
normalizedPayload: NormalizeResponsePayload["normalized"] | null | undefined;
|
||||
userMessage: string;
|
||||
requirementExtraction: AssistantRequirementExtractionResult;
|
||||
extractRequirements: (
|
||||
routeSummary: RouteHintSummary | null,
|
||||
normalized: NormalizeResponsePayload["normalized"] | null | undefined,
|
||||
userMessage: string
|
||||
) => AssistantRequirementExtractionResult;
|
||||
evaluateCoverage: (
|
||||
requirements: AssistantRequirement[],
|
||||
retrievalResults: UnifiedRetrievalResult[]
|
||||
) => AssistantCoverageEvaluationResult;
|
||||
checkGrounding: (
|
||||
userMessage: string,
|
||||
requirements: AssistantRequirement[],
|
||||
coverage: RequirementCoverageReport,
|
||||
retrievalResults: UnifiedRetrievalResult[]
|
||||
) => AnswerGroundingCheck;
|
||||
temporalGuard: unknown;
|
||||
polarityAudit: unknown;
|
||||
evidenceAudit: unknown;
|
||||
claimAnchorAudit: unknown;
|
||||
targetedEvidenceHitRate?: number | null;
|
||||
businessScopeResolved?: string[] | null;
|
||||
collectRbpLiveRouteAudit: (input: {
|
||||
claimType: string;
|
||||
retrievalResults: UnifiedRetrievalResult[];
|
||||
planAudit: unknown;
|
||||
}) => unknown;
|
||||
collectFaLiveRouteAudit: (input: {
|
||||
claimType: string;
|
||||
retrievalResults: UnifiedRetrievalResult[];
|
||||
planAudit: unknown;
|
||||
}) => unknown;
|
||||
runCoverageGroundingPipelineFn?: typeof runAssistantCoverageGroundingPipeline;
|
||||
applyGroundingEligibilityFn?: (input: {
|
||||
groundingCheckBase: AnswerGroundingCheck;
|
||||
temporalGuard: unknown;
|
||||
polarityAudit: unknown;
|
||||
evidenceAudit: unknown;
|
||||
claimAnchorAudit?: unknown;
|
||||
targetedEvidenceHitRate?: number | null;
|
||||
businessScopeResolved?: string[] | null;
|
||||
}) => AssistantDeepTurnGroundingEligibilityOutput<AnswerGroundingCheck>;
|
||||
}
|
||||
|
||||
export interface AssistantDeepTurnGroundingRuntimeOutput {
|
||||
rbpLiveRouteAudit: unknown;
|
||||
faLiveRouteAudit: unknown;
|
||||
coverageEvaluation: AssistantCoverageEvaluationResult;
|
||||
groundingCheckBase: AnswerGroundingCheck;
|
||||
groundedAnswerEligibilityGuard: unknown;
|
||||
groundingCheck: AnswerGroundingCheck;
|
||||
}
|
||||
|
||||
export function runAssistantDeepTurnGroundingRuntime(
|
||||
input: AssistantDeepTurnGroundingRuntimeInput
|
||||
): AssistantDeepTurnGroundingRuntimeOutput {
|
||||
const runCoverageGroundingPipelineSafe = input.runCoverageGroundingPipelineFn ?? runAssistantCoverageGroundingPipeline;
|
||||
const applyGroundingEligibilitySafe =
|
||||
input.applyGroundingEligibilityFn ??
|
||||
((payload) => applyAssistantDeepTurnGroundingEligibility(payload as any) as any);
|
||||
|
||||
const rbpLiveRouteAudit = input.collectRbpLiveRouteAudit({
|
||||
claimType: input.claimType,
|
||||
retrievalResults: input.retrievalResults,
|
||||
planAudit: input.rbpPlanAudit
|
||||
});
|
||||
const faLiveRouteAudit = input.collectFaLiveRouteAudit({
|
||||
claimType: input.claimType,
|
||||
retrievalResults: input.retrievalResults,
|
||||
planAudit: input.faPlanAudit
|
||||
});
|
||||
const orchestrationRuntime = runCoverageGroundingPipelineSafe({
|
||||
routeSummary: input.routeSummary,
|
||||
normalized: input.normalizedPayload,
|
||||
userMessage: input.userMessage,
|
||||
retrievalResults: input.retrievalResults,
|
||||
requirementExtraction: input.requirementExtraction,
|
||||
extractRequirements: input.extractRequirements,
|
||||
evaluateCoverage: input.evaluateCoverage,
|
||||
checkGrounding: input.checkGrounding
|
||||
});
|
||||
const coverageEvaluation = orchestrationRuntime.coverageEvaluation;
|
||||
const groundingCheckBase = orchestrationRuntime.groundingCheckBase;
|
||||
const groundingEligibilityRuntime = applyGroundingEligibilitySafe({
|
||||
groundingCheckBase,
|
||||
temporalGuard: input.temporalGuard,
|
||||
polarityAudit: input.polarityAudit,
|
||||
evidenceAudit: input.evidenceAudit,
|
||||
claimAnchorAudit: input.claimAnchorAudit,
|
||||
targetedEvidenceHitRate: input.targetedEvidenceHitRate,
|
||||
businessScopeResolved: input.businessScopeResolved
|
||||
});
|
||||
|
||||
return {
|
||||
rbpLiveRouteAudit,
|
||||
faLiveRouteAudit,
|
||||
coverageEvaluation,
|
||||
groundingCheckBase,
|
||||
groundedAnswerEligibilityGuard: groundingEligibilityRuntime.groundedAnswerEligibilityGuard,
|
||||
groundingCheck: groundingEligibilityRuntime.groundingCheck
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user