ГЛОБАЛЬНЫЙ РЕФАКТОРИНГ АРХИТЕКТУРЫ - Рефакторинг этапов Stage 3.6 Усилина оркестрация и детект data-scope для живого сленга. Убрана шаблонность soft-refusal в limited-ответах. Подрезана словарнаю жирность в фильтр-экстракторе
This commit is contained in:
@@ -202,6 +202,11 @@ export const __evalRouteTestUtils = {
|
||||
normalizeRuntimeQuestions
|
||||
};
|
||||
|
||||
export const __evalRouteAsyncTestUtils = {
|
||||
readReportedCaseIds,
|
||||
syncJobWithSessions
|
||||
};
|
||||
|
||||
function normalizeCaseIds(value: unknown): string[] | undefined {
|
||||
if (!Array.isArray(value)) {
|
||||
return undefined;
|
||||
@@ -365,10 +370,30 @@ function readSessionConversation(runId: string, caseId: string): EvalAsyncCaseIn
|
||||
}
|
||||
}
|
||||
|
||||
function readReportedCaseIds(job: EvalAsyncJob): Set<string> {
|
||||
const output = new Set<string>();
|
||||
const reportRecord = toRecord(job.report);
|
||||
const reportResults = toArray(reportRecord?.results)
|
||||
.map((item) => toRecord(item))
|
||||
.filter((item): item is Record<string, unknown> => item !== null);
|
||||
|
||||
for (const result of reportResults) {
|
||||
const caseId = toStringSafe(result.case_id);
|
||||
if (!caseId) continue;
|
||||
output.add(caseId);
|
||||
}
|
||||
return output;
|
||||
}
|
||||
|
||||
function isTerminalCaseStatus(status: EvalAsyncStatus): boolean {
|
||||
return status === "completed" || status === "failed";
|
||||
}
|
||||
|
||||
function syncJobWithSessions(job: EvalAsyncJob): void {
|
||||
if (!job.run_id || !job.eval_target.startsWith("assistant_")) {
|
||||
return;
|
||||
}
|
||||
const reportCaseIds = readReportedCaseIds(job);
|
||||
let completed = 0;
|
||||
let hasRunning = false;
|
||||
for (const item of job.cases) {
|
||||
@@ -376,11 +401,16 @@ function syncJobWithSessions(job: EvalAsyncJob): void {
|
||||
item.messages = messages;
|
||||
const assistantMessages = messages.filter((entry) => entry.role === "assistant").length;
|
||||
const userMessages = messages.filter((entry) => entry.role === "user").length;
|
||||
if (assistantMessages >= item.turns_total && item.turns_total > 0) {
|
||||
const reportMarkedDone = reportCaseIds.has(item.case_id);
|
||||
if ((assistantMessages >= item.turns_total && item.turns_total > 0) || reportMarkedDone) {
|
||||
item.status = "completed";
|
||||
completed += 1;
|
||||
continue;
|
||||
}
|
||||
if (isTerminalCaseStatus(item.status) && isTerminalCaseStatus(job.status)) {
|
||||
completed += 1;
|
||||
continue;
|
||||
}
|
||||
if (userMessages > 0 || messages.length > 0) {
|
||||
item.status = "running";
|
||||
hasRunning = true;
|
||||
|
||||
Reference in New Issue
Block a user