Архитектура: ввести answer-inspection follow-up contract и закрыть phase15 replay
This commit is contained in:
@@ -38,6 +38,7 @@ export interface AssistantLivingModePolicy {
|
||||
hasDataRetrievalRequestSignal: (text: unknown) => boolean;
|
||||
hasOrganizationFactLookupSignal: (text: unknown) => boolean;
|
||||
hasMetaAnswerFollowupSignal: (text: unknown) => boolean;
|
||||
hasAnswerInspectionFollowupSignal: (text: unknown) => boolean;
|
||||
hasConversationMemoryRecallFollowupSignal: (text: unknown) => boolean;
|
||||
hasHistoricalCapabilityFollowupSignal: (text: unknown) => boolean;
|
||||
hasOrganizationFactFollowupSignal: (userMessage: unknown, items: unknown[]) => boolean;
|
||||
@@ -160,6 +161,30 @@ export function createAssistantLivingModePolicy(deps: AssistantLivingModePolicyD
|
||||
hasStrongDataIntentSignal(sample));
|
||||
}
|
||||
|
||||
function hasAnswerInspectionFollowupSignal(userMessage) {
|
||||
const rawText = compactWhitespace(String(userMessage ?? "").toLowerCase());
|
||||
const repairedText = compactWhitespace(repairAddressMojibake(String(userMessage ?? "")).toLowerCase());
|
||||
const samples = [rawText, repairedText]
|
||||
.filter((item) => item.length > 0)
|
||||
.map((item) => item.replace(/ё/g, "е"));
|
||||
if (samples.length === 0) {
|
||||
return false;
|
||||
}
|
||||
const hasInspectionCue = samples.some((sample) => /(?:ошибк|неверн|не так|перепутал|у тебя написано|ты написал|это ошибка|правильно ли|корректн)/iu.test(sample));
|
||||
if (!hasInspectionCue) {
|
||||
return false;
|
||||
}
|
||||
const hasAnswerObjectCue = samples.some((sample) => /(?:контрагент|покупател|поставщик|поле|ответ|позици|номенклат|документ)/iu.test(sample));
|
||||
if (!hasAnswerObjectCue) {
|
||||
return false;
|
||||
}
|
||||
const hasFreshRetrievalAction = samples.some((sample) => /(?:покажи|выведи|найди|список|проверь по базе|подними документы|достань|рассчитай|посчитай|сколько|кто\s+нам|кто\s+у\s+нас)/iu.test(sample));
|
||||
if (hasFreshRetrievalAction) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function hasConversationMemoryRecallFollowupSignal(userMessage) {
|
||||
const rawText = compactWhitespace(String(userMessage ?? "").toLowerCase());
|
||||
const repairedText = compactWhitespace(repairAddressMojibake(String(userMessage ?? "")).toLowerCase());
|
||||
@@ -421,6 +446,7 @@ export function createAssistantLivingModePolicy(deps: AssistantLivingModePolicyD
|
||||
hasDataRetrievalRequestSignal,
|
||||
hasOrganizationFactLookupSignal,
|
||||
hasMetaAnswerFollowupSignal,
|
||||
hasAnswerInspectionFollowupSignal,
|
||||
hasConversationMemoryRecallFollowupSignal,
|
||||
hasHistoricalCapabilityFollowupSignal,
|
||||
hasOrganizationFactFollowupSignal,
|
||||
|
||||
Reference in New Issue
Block a user