@amodalai/runtime 0.3.36 → 0.3.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/src/routes/evals.js
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* caller (typically the Studio ArenaPage).
|
|
13
13
|
*/
|
|
14
14
|
import { Router } from 'express';
|
|
15
|
-
import {
|
|
15
|
+
import { evaluateAssertions, computeEvalCost } from '@amodalai/core';
|
|
16
16
|
import { SSEEventType } from '../types.js';
|
|
17
17
|
import { resolveSession } from './session-resolver.js';
|
|
18
18
|
import { asyncHandler } from './route-helpers.js';
|
|
@@ -38,6 +38,7 @@ async function queryViaSession(sessionManager, bundleResolver, shared, message,
|
|
|
38
38
|
let fullResponse = '';
|
|
39
39
|
const toolCalls = [];
|
|
40
40
|
const toolResults = [];
|
|
41
|
+
let turns = 0;
|
|
41
42
|
let usage;
|
|
42
43
|
// Track tool names by tool_id so we can match results
|
|
43
44
|
const toolNames = new Map();
|
|
@@ -56,6 +57,7 @@ async function queryViaSession(sessionManager, bundleResolver, shared, message,
|
|
|
56
57
|
});
|
|
57
58
|
}
|
|
58
59
|
else if (event.type === SSEEventType.ToolCallResult) {
|
|
60
|
+
turns++;
|
|
59
61
|
const result = event.result ?? event.error ?? '';
|
|
60
62
|
const preview = result.length > 300 ? result.substring(0, 300) + '...' : result;
|
|
61
63
|
toolResults.push(preview);
|
|
@@ -87,7 +89,7 @@ async function queryViaSession(sessionManager, bundleResolver, shared, message,
|
|
|
87
89
|
const estimatedInput = estimatedOutput * 3;
|
|
88
90
|
usage = { inputTokens: estimatedInput, outputTokens: estimatedOutput };
|
|
89
91
|
}
|
|
90
|
-
return { response: fullResponse, toolCalls, toolResults, usage };
|
|
92
|
+
return { response: fullResponse, toolCalls, toolResults, turns, usage };
|
|
91
93
|
}
|
|
92
94
|
/**
|
|
93
95
|
* Create a judge provider that runs messages through the session manager.
|
|
@@ -197,10 +199,17 @@ export function createEvalRouter(options) {
|
|
|
197
199
|
if (queryResult.toolResults.length > 0) {
|
|
198
200
|
enrichedResponse += `\n\n## Tool Results\n${queryResult.toolResults.map((r) => `- ${r}`).join('\n')}`;
|
|
199
201
|
}
|
|
200
|
-
//
|
|
201
|
-
const assertions = await judgeAllAssertions(enrichedResponse, ev.assertions, judgeProvider);
|
|
202
|
-
const passed = assertions.every((a) => a.passed);
|
|
202
|
+
// Split assertions into deterministic and LLM-judged
|
|
203
203
|
const durationMs = Date.now() - start;
|
|
204
|
+
const deterministicCtx = {
|
|
205
|
+
response: queryResult.response,
|
|
206
|
+
toolCalls: queryResult.toolCalls,
|
|
207
|
+
durationMs,
|
|
208
|
+
turns: queryResult.turns,
|
|
209
|
+
};
|
|
210
|
+
// Evaluate assertions: deterministic first, then LLM judge for the rest
|
|
211
|
+
const assertions = await evaluateAssertions(enrichedResponse, ev.assertions, deterministicCtx, judgeProvider);
|
|
212
|
+
const passed = assertions.every((a) => a.passed);
|
|
204
213
|
// Compute costs
|
|
205
214
|
const queryCost = queryResult.usage
|
|
206
215
|
? computeEvalCost(queryResult.usage.inputTokens, queryResult.usage.outputTokens, modelName, queryResult.usage.cacheReadInputTokens, queryResult.usage.cacheCreationInputTokens)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evals.js","sourceRoot":"","sources":["../../../src/routes/evals.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;GAOG;AAEH,OAAO,EAAC,MAAM,EAAC,MAAM,SAAS,CAAC;AAG/B,OAAO,EAAC,kBAAkB,EAAE,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAEnE,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAC,cAAc,EAAC,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAC,GAAG,EAAC,MAAM,cAAc,CAAC;AAmCjC,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;;GAGG;AACH,KAAK,UAAU,eAAe,CAC5B,cAAwC,EACxC,cAA8B,EAC9B,MAAuB,EACvB,OAAe,EACf,KAAyC,EACzC,MAAoB;
|
|
1
|
+
{"version":3,"file":"evals.js","sourceRoot":"","sources":["../../../src/routes/evals.ts"],"names":[],"mappings":"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"}
|