feat(harness): add information gain stop and audit
This commit is contained in:
@@ -107,8 +107,7 @@ public final class ChatApplicationUseCase {
|
||||
|
||||
PathResult path = executePath(
|
||||
intent, context, request.query(), previousTurn.orElse(null), observer);
|
||||
core.checkActive(context);
|
||||
core.completeSuccess(context);
|
||||
completePath(context, intent, path);
|
||||
String safeJson = write(path.content());
|
||||
persistFinish(context, intent, path.outcome(), safeJson,
|
||||
path.publishedResult(), durationMillis(startedNanos));
|
||||
@@ -131,6 +130,20 @@ public final class ChatApplicationUseCase {
|
||||
}
|
||||
}
|
||||
|
||||
private void completePath(RunContext context, IntentType intent, PathResult path) {
|
||||
if (path.handledBudgetTermination()) {
|
||||
if (intent != IntentType.DIAGNOSIS
|
||||
|| path.outcome() != ReleaseOutcome.FALLBACK
|
||||
|| path.publishedResult() != null
|
||||
|| context.lifecycle().state() != RunState.BUDGET_EXHAUSTED) {
|
||||
throw new IllegalStateException("Invalid handled Diagnosis budget fallback");
|
||||
}
|
||||
return;
|
||||
}
|
||||
core.checkActive(context);
|
||||
core.completeSuccess(context);
|
||||
}
|
||||
|
||||
private PathResult executePath(IntentType intent,
|
||||
RunContext context,
|
||||
String query,
|
||||
@@ -140,18 +153,19 @@ public final class ChatApplicationUseCase {
|
||||
case SYSTEM_CHAT -> {
|
||||
observer.onStatus(ChatApplicationStatus.SYSTEM_RESPONDING);
|
||||
yield new PathResult(
|
||||
ReleaseOutcome.SUCCESS, systemChat.execute(context, query), null);
|
||||
ReleaseOutcome.SUCCESS, systemChat.execute(context, query), null, false);
|
||||
}
|
||||
case KNOWLEDGE_QUERY -> {
|
||||
observer.onStatus(ChatApplicationStatus.KNOWLEDGE_SEARCHING);
|
||||
observer.onStatus(ChatApplicationStatus.KNOWLEDGE_ANSWERING);
|
||||
yield new PathResult(
|
||||
ReleaseOutcome.SUCCESS, knowledgeQuery.execute(context, query), null);
|
||||
ReleaseOutcome.SUCCESS, knowledgeQuery.execute(context, query), null, false);
|
||||
}
|
||||
case DIAGNOSIS -> {
|
||||
DiagnosisExecutionResult result = diagnosis.execute(
|
||||
context, query, previousTurn, observer::onStatus);
|
||||
yield new PathResult(result.outcome(), result.content(), result.publishedResult());
|
||||
yield new PathResult(result.outcome(), result.content(), result.publishedResult(),
|
||||
result.handledBudgetTermination());
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -251,7 +265,8 @@ public final class ChatApplicationUseCase {
|
||||
private record PathResult(
|
||||
ReleaseOutcome outcome,
|
||||
ChatApplicationContent content,
|
||||
PublishedResult publishedResult) {
|
||||
PublishedResult publishedResult,
|
||||
boolean handledBudgetTermination) {
|
||||
}
|
||||
|
||||
private static final class CoreRunControl implements ChatRunControl {
|
||||
|
||||
Reference in New Issue
Block a user