nodebench-mcp 2.8.3 → 2.9.0
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/__tests__/evalHarness.test.js +178 -2
- package/dist/__tests__/evalHarness.test.js.map +1 -1
- package/dist/__tests__/gaiaCapabilityAudioEval.test.js +20 -41
- package/dist/__tests__/gaiaCapabilityAudioEval.test.js.map +1 -1
- package/dist/__tests__/gaiaCapabilityEval.test.js +21 -45
- package/dist/__tests__/gaiaCapabilityEval.test.js.map +1 -1
- package/dist/__tests__/gaiaCapabilityFilesEval.test.js +119 -55
- package/dist/__tests__/gaiaCapabilityFilesEval.test.js.map +1 -1
- package/dist/__tests__/gaiaCapabilityMediaEval.test.js +22 -44
- package/dist/__tests__/gaiaCapabilityMediaEval.test.js.map +1 -1
- package/dist/__tests__/helpers/answerMatch.d.ts +12 -0
- package/dist/__tests__/helpers/answerMatch.js +78 -0
- package/dist/__tests__/helpers/answerMatch.js.map +1 -0
- package/dist/__tests__/helpers/textLlm.d.ts +25 -0
- package/dist/__tests__/helpers/textLlm.js +214 -0
- package/dist/__tests__/helpers/textLlm.js.map +1 -0
- package/dist/__tests__/tools.test.js +174 -7
- package/dist/__tests__/tools.test.js.map +1 -1
- package/dist/__tests__/toolsetGatingEval.test.js +18 -2
- package/dist/__tests__/toolsetGatingEval.test.js.map +1 -1
- package/dist/index.js +60 -0
- package/dist/index.js.map +1 -1
- package/dist/tools/localFileTools.js +138 -12
- package/dist/tools/localFileTools.js.map +1 -1
- package/dist/tools/metaTools.js +92 -1
- package/dist/tools/metaTools.js.map +1 -1
- package/dist/tools/progressiveDiscoveryTools.js +2 -2
- package/dist/tools/progressiveDiscoveryTools.js.map +1 -1
- package/dist/tools/selfEvalTools.js +304 -0
- package/dist/tools/selfEvalTools.js.map +1 -1
- package/dist/tools/toolRegistry.d.ts +1 -1
- package/dist/tools/toolRegistry.js +184 -1
- package/dist/tools/toolRegistry.js.map +1 -1
- package/package.json +3 -3
|
@@ -18,6 +18,7 @@ import path from "node:path";
|
|
|
18
18
|
import { fileURLToPath } from "node:url";
|
|
19
19
|
import { performance } from "node:perf_hooks";
|
|
20
20
|
import { webTools } from "../tools/webTools.js";
|
|
21
|
+
import { createTextLlmClient, generateTextFromHistory, } from "./helpers/textLlm.js";
|
|
21
22
|
const shouldRun = process.env.NODEBENCH_RUN_GAIA_CAPABILITY === "1";
|
|
22
23
|
const shouldWriteReport = process.env.NODEBENCH_WRITE_GAIA_REPORT === "1";
|
|
23
24
|
async function safeWriteJson(filePath, payload) {
|
|
@@ -72,15 +73,6 @@ function loadDotEnvLocalIfPresent() {
|
|
|
72
73
|
process.env[key] = value;
|
|
73
74
|
}
|
|
74
75
|
}
|
|
75
|
-
async function canImport(pkg) {
|
|
76
|
-
try {
|
|
77
|
-
await import(pkg);
|
|
78
|
-
return true;
|
|
79
|
-
}
|
|
80
|
-
catch {
|
|
81
|
-
return false;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
76
|
function normalizeAnswer(value) {
|
|
85
77
|
return value
|
|
86
78
|
.trim()
|
|
@@ -90,30 +82,14 @@ function normalizeAnswer(value) {
|
|
|
90
82
|
.replace(/[.]+$/g, "")
|
|
91
83
|
.toLowerCase();
|
|
92
84
|
}
|
|
93
|
-
async function
|
|
94
|
-
const mod = await import("@google/genai");
|
|
95
|
-
const { GoogleGenAI } = mod;
|
|
96
|
-
const apiKey = process.env.GEMINI_API_KEY || process.env.GOOGLE_AI_API_KEY || "";
|
|
97
|
-
if (!apiKey) {
|
|
98
|
-
throw new Error("Missing GEMINI_API_KEY (or GOOGLE_AI_API_KEY)");
|
|
99
|
-
}
|
|
100
|
-
return new GoogleGenAI({ apiKey });
|
|
101
|
-
}
|
|
102
|
-
async function geminiGenerateText(ai, model, contents) {
|
|
85
|
+
async function llmGenerateText(llm, history) {
|
|
103
86
|
const temperature = Number.parseFloat(process.env.NODEBENCH_GAIA_CAPABILITY_TEMPERATURE ?? "0");
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
config: {
|
|
108
|
-
temperature: Number.isFinite(temperature) ? temperature : 0,
|
|
109
|
-
maxOutputTokens: 1024,
|
|
110
|
-
},
|
|
87
|
+
return generateTextFromHistory(llm, history, {
|
|
88
|
+
temperature: Number.isFinite(temperature) ? temperature : 0,
|
|
89
|
+
maxOutputTokens: 1024,
|
|
111
90
|
});
|
|
112
|
-
const parts = response?.candidates?.[0]?.content?.parts ?? [];
|
|
113
|
-
const text = parts.map((p) => p?.text ?? "").join("").trim();
|
|
114
|
-
return text;
|
|
115
91
|
}
|
|
116
|
-
async function baselineAnswer(
|
|
92
|
+
async function baselineAnswer(llm, task) {
|
|
117
93
|
const contents = [
|
|
118
94
|
{
|
|
119
95
|
role: "user",
|
|
@@ -124,7 +100,7 @@ async function baselineAnswer(ai, task) {
|
|
|
124
100
|
],
|
|
125
101
|
},
|
|
126
102
|
];
|
|
127
|
-
return
|
|
103
|
+
return llmGenerateText(llm, contents);
|
|
128
104
|
}
|
|
129
105
|
function buildToolIndex() {
|
|
130
106
|
const byName = new Map();
|
|
@@ -148,9 +124,8 @@ function extractJsonObject(text) {
|
|
|
148
124
|
return null;
|
|
149
125
|
}
|
|
150
126
|
}
|
|
151
|
-
async function toolAugmentedAnswer(
|
|
127
|
+
async function toolAugmentedAnswer(llm, task, opts) {
|
|
152
128
|
const toolIndex = buildToolIndex();
|
|
153
|
-
const model = process.env.NODEBENCH_GAIA_TOOLS_MODEL ?? "gemini-2.5-flash";
|
|
154
129
|
const forceWebSearch = process.env.NODEBENCH_GAIA_CAPABILITY_FORCE_WEB_SEARCH === "1";
|
|
155
130
|
const forceFetchUrl = process.env.NODEBENCH_GAIA_CAPABILITY_FORCE_FETCH_URL === "1";
|
|
156
131
|
const toolsMode = (process.env.NODEBENCH_GAIA_CAPABILITY_TOOLS_MODE ?? "rag").toLowerCase();
|
|
@@ -198,7 +173,7 @@ async function toolAugmentedAnswer(ai, task, opts) {
|
|
|
198
173
|
],
|
|
199
174
|
},
|
|
200
175
|
];
|
|
201
|
-
const answer = await
|
|
176
|
+
const answer = await llmGenerateText(llm, contents);
|
|
202
177
|
return { answer, toolCalls: 1 + urls.length };
|
|
203
178
|
}
|
|
204
179
|
const toolUsageSummary = [
|
|
@@ -233,7 +208,7 @@ async function toolAugmentedAnswer(ai, task, opts) {
|
|
|
233
208
|
let usedWebSearch = false;
|
|
234
209
|
let usedFetchUrl = false;
|
|
235
210
|
for (let step = 0; step < opts.maxSteps; step++) {
|
|
236
|
-
const out = await
|
|
211
|
+
const out = await llmGenerateText(llm, contents);
|
|
237
212
|
contents.push({ role: "model", parts: [{ text: out }] });
|
|
238
213
|
const parsed = extractJsonObject(out);
|
|
239
214
|
if (!parsed || typeof parsed !== "object") {
|
|
@@ -323,7 +298,7 @@ async function toolAugmentedAnswer(ai, task, opts) {
|
|
|
323
298
|
role: "user",
|
|
324
299
|
parts: [{ text: "Out of steps. Return final answer now as JSON." }],
|
|
325
300
|
});
|
|
326
|
-
const out = await
|
|
301
|
+
const out = await llmGenerateText(llm, contents);
|
|
327
302
|
const parsed = extractJsonObject(out);
|
|
328
303
|
const answer = parsed && parsed.action === "final" ? String(parsed.answer ?? "").trim() : out.trim();
|
|
329
304
|
return { answer, toolCalls };
|
|
@@ -343,9 +318,12 @@ describe("Capability: GAIA accuracy (LLM-only vs LLM+tools)", () => {
|
|
|
343
318
|
if (!existsSync(fixturePath)) {
|
|
344
319
|
throw new Error(`Missing GAIA capability fixture at ${fixturePath}. Generate it with: python packages/mcp-local/src/__tests__/fixtures/generateGaiaCapabilityFixture.py`);
|
|
345
320
|
}
|
|
346
|
-
const
|
|
347
|
-
|
|
348
|
-
const
|
|
321
|
+
const baselineModel = process.env.NODEBENCH_GAIA_BASELINE_MODEL ?? "gemini-2.5-flash";
|
|
322
|
+
const toolsModel = process.env.NODEBENCH_GAIA_TOOLS_MODEL ?? baselineModel;
|
|
323
|
+
const baselineLlm = await createTextLlmClient({ model: baselineModel });
|
|
324
|
+
const toolsLlm = await createTextLlmClient({ model: toolsModel });
|
|
325
|
+
const baselineModelLabel = `${baselineLlm.provider}:${baselineLlm.model}`;
|
|
326
|
+
const toolsModelLabel = `${toolsLlm.provider}:${toolsLlm.model}`;
|
|
349
327
|
const fixture = await loadFixture(fixturePath);
|
|
350
328
|
expect(Array.isArray(fixture.tasks)).toBe(true);
|
|
351
329
|
expect(fixture.tasks.length).toBeGreaterThan(0);
|
|
@@ -367,10 +345,10 @@ describe("Capability: GAIA accuracy (LLM-only vs LLM+tools)", () => {
|
|
|
367
345
|
const expected = normalizeAnswer(task.expectedAnswer);
|
|
368
346
|
try {
|
|
369
347
|
const baseStart = performance.now();
|
|
370
|
-
const base = await baselineAnswer(
|
|
348
|
+
const base = await baselineAnswer(baselineLlm, task);
|
|
371
349
|
const baseMs = performance.now() - baseStart;
|
|
372
350
|
const toolsStart = performance.now();
|
|
373
|
-
const tools = await toolAugmentedAnswer(
|
|
351
|
+
const tools = await toolAugmentedAnswer(toolsLlm, task, { maxSteps, maxToolCalls });
|
|
374
352
|
const toolsMs = performance.now() - toolsStart;
|
|
375
353
|
const baselineCorrect = normalizeAnswer(base) === expected;
|
|
376
354
|
const toolsCorrect = normalizeAnswer(tools.answer) === expected;
|
|
@@ -413,8 +391,6 @@ describe("Capability: GAIA accuracy (LLM-only vs LLM+tools)", () => {
|
|
|
413
391
|
const repoRoot = resolveRepoRoot();
|
|
414
392
|
const generatedAtIso = new Date().toISOString();
|
|
415
393
|
const stamp = generatedAtIso.replace(/[:.]/g, "-");
|
|
416
|
-
const baselineModel = process.env.NODEBENCH_GAIA_BASELINE_MODEL ?? "gemini-2.5-flash";
|
|
417
|
-
const toolsModel = process.env.NODEBENCH_GAIA_TOOLS_MODEL ?? "gemini-2.5-flash";
|
|
418
394
|
const toolsMode = (process.env.NODEBENCH_GAIA_CAPABILITY_TOOLS_MODE ?? "rag").toLowerCase();
|
|
419
395
|
const publicSummary = {
|
|
420
396
|
suiteId: "gaia_capability",
|
|
@@ -425,13 +401,13 @@ describe("Capability: GAIA accuracy (LLM-only vs LLM+tools)", () => {
|
|
|
425
401
|
taskCount: tasks.length,
|
|
426
402
|
concurrency,
|
|
427
403
|
baseline: {
|
|
428
|
-
model:
|
|
404
|
+
model: baselineModelLabel,
|
|
429
405
|
correct: baselineCorrect,
|
|
430
406
|
passRatePct: tasks.length === 0 ? 0 : (baselineCorrect / tasks.length) * 100,
|
|
431
407
|
avgMs: avgBaseMs,
|
|
432
408
|
},
|
|
433
409
|
tools: {
|
|
434
|
-
model:
|
|
410
|
+
model: toolsModelLabel,
|
|
435
411
|
mode: toolsMode,
|
|
436
412
|
correct: toolsCorrect,
|
|
437
413
|
passRatePct: tasks.length === 0 ? 0 : (toolsCorrect / tasks.length) * 100,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gaiaCapabilityEval.test.js","sourceRoot":"","sources":["../../src/__tests__/gaiaCapabilityEval.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"gaiaCapabilityEval.test.js","sourceRoot":"","sources":["../../src/__tests__/gaiaCapabilityEval.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,8 @@ import path from "node:path";
|
|
|
19
19
|
import { fileURLToPath } from "node:url";
|
|
20
20
|
import { performance } from "node:perf_hooks";
|
|
21
21
|
import { localFileTools } from "../tools/localFileTools.js";
|
|
22
|
+
import { createTextLlmClient, generateTextFromHistory, } from "./helpers/textLlm.js";
|
|
23
|
+
import { answersMatch } from "./helpers/answerMatch.js";
|
|
22
24
|
const shouldRun = process.env.NODEBENCH_RUN_GAIA_CAPABILITY === "1";
|
|
23
25
|
const shouldWriteReport = process.env.NODEBENCH_WRITE_GAIA_REPORT === "1";
|
|
24
26
|
async function safeWriteJson(filePath, payload) {
|
|
@@ -70,48 +72,96 @@ function loadDotEnvLocalIfPresent() {
|
|
|
70
72
|
process.env[key] = value;
|
|
71
73
|
}
|
|
72
74
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
75
|
+
function toIntegerOrNullLoose(value) {
|
|
76
|
+
if (value === null || value === undefined)
|
|
77
|
+
return null;
|
|
78
|
+
if (typeof value === "number" && Number.isFinite(value))
|
|
79
|
+
return Math.trunc(value);
|
|
80
|
+
const s = String(value).trim();
|
|
81
|
+
if (!s)
|
|
82
|
+
return null;
|
|
83
|
+
const m = s.match(/-?\d+/);
|
|
84
|
+
if (!m)
|
|
85
|
+
return null;
|
|
86
|
+
const n = Number.parseInt(m[0], 10);
|
|
87
|
+
return Number.isFinite(n) ? n : null;
|
|
81
88
|
}
|
|
82
|
-
function
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
89
|
+
function deriveAddressParityIfRelevant(taskPrompt, extract) {
|
|
90
|
+
const wantsParity = /\bodd\b|\beven\b|odd-?numbered|even-?numbered|parity/i.test(String(taskPrompt ?? ""));
|
|
91
|
+
if (!wantsParity)
|
|
92
|
+
return null;
|
|
93
|
+
const headers = Array.isArray(extract?.headers) ? extract.headers.map((h) => String(h ?? "")) : [];
|
|
94
|
+
const rows = Array.isArray(extract?.rows) ? extract.rows : [];
|
|
95
|
+
if (headers.length === 0 || rows.length === 0)
|
|
96
|
+
return null;
|
|
97
|
+
const addrIdx = headers.findIndex((h) => /address/i.test(h));
|
|
98
|
+
if (addrIdx < 0)
|
|
99
|
+
return null;
|
|
100
|
+
let integerCount = 0;
|
|
101
|
+
let evenCount = 0;
|
|
102
|
+
let oddCount = 0;
|
|
103
|
+
for (const r of rows) {
|
|
104
|
+
const n = toIntegerOrNullLoose(Array.isArray(r) ? r[addrIdx] : null);
|
|
105
|
+
if (n === null)
|
|
106
|
+
continue;
|
|
107
|
+
integerCount++;
|
|
108
|
+
if (Math.abs(n) % 2 === 0)
|
|
109
|
+
evenCount++;
|
|
110
|
+
else
|
|
111
|
+
oddCount++;
|
|
112
|
+
}
|
|
113
|
+
return {
|
|
114
|
+
column: headers[addrIdx],
|
|
115
|
+
columnIndex: addrIdx,
|
|
116
|
+
integerCount,
|
|
117
|
+
evenCount,
|
|
118
|
+
oddCount,
|
|
119
|
+
};
|
|
90
120
|
}
|
|
91
|
-
|
|
92
|
-
const
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
121
|
+
function inferAnswerFromAddressParityIfPossible(taskPrompt, parity) {
|
|
122
|
+
const p = String(taskPrompt ?? "").toLowerCase();
|
|
123
|
+
if (!p)
|
|
124
|
+
return null;
|
|
125
|
+
const oddEast = /odd[^.]*east/.test(p);
|
|
126
|
+
const oddWest = /odd[^.]*west/.test(p);
|
|
127
|
+
const evenEast = /even[^.]*east/.test(p);
|
|
128
|
+
const evenWest = /even[^.]*west/.test(p);
|
|
129
|
+
const lastSunrise = p.lastIndexOf("sunrise");
|
|
130
|
+
const lastSunset = p.lastIndexOf("sunset");
|
|
131
|
+
if (lastSunrise === -1 && lastSunset === -1)
|
|
132
|
+
return null;
|
|
133
|
+
// If both appear, assume the one mentioned last is what the question asks for.
|
|
134
|
+
const wantsSunrise = lastSunrise > lastSunset;
|
|
135
|
+
const wantsSunset = lastSunset > lastSunrise;
|
|
136
|
+
let desiredDirection = wantsSunrise ? "east" : wantsSunset ? "west" : null;
|
|
137
|
+
if (!desiredDirection)
|
|
138
|
+
return null;
|
|
139
|
+
// Some tasks specify the awning is for the *back* of the house, while the
|
|
140
|
+
// prompt gives the facing direction for the street address (front). In that
|
|
141
|
+
// case, invert the facing direction.
|
|
142
|
+
const mentionsBackOfHouse = /\bback\b/.test(p) && /\bhouse\b/.test(p);
|
|
143
|
+
if (mentionsBackOfHouse) {
|
|
144
|
+
desiredDirection = desiredDirection === "east" ? "west" : "east";
|
|
97
145
|
}
|
|
98
|
-
|
|
146
|
+
// Map parity -> facing direction when explicitly stated.
|
|
147
|
+
const oddFaces = oddEast ? "east" : oddWest ? "west" : null;
|
|
148
|
+
const evenFaces = evenEast ? "east" : evenWest ? "west" : null;
|
|
149
|
+
if (!oddFaces || !evenFaces)
|
|
150
|
+
return null;
|
|
151
|
+
if (evenFaces === desiredDirection)
|
|
152
|
+
return String(parity.evenCount);
|
|
153
|
+
if (oddFaces === desiredDirection)
|
|
154
|
+
return String(parity.oddCount);
|
|
155
|
+
return null;
|
|
99
156
|
}
|
|
100
|
-
async function
|
|
157
|
+
async function llmGenerateText(llm, history) {
|
|
101
158
|
const temperature = Number.parseFloat(process.env.NODEBENCH_GAIA_CAPABILITY_TEMPERATURE ?? "0");
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
config: {
|
|
106
|
-
temperature: Number.isFinite(temperature) ? temperature : 0,
|
|
107
|
-
maxOutputTokens: 1024,
|
|
108
|
-
},
|
|
159
|
+
return generateTextFromHistory(llm, history, {
|
|
160
|
+
temperature: Number.isFinite(temperature) ? temperature : 0,
|
|
161
|
+
maxOutputTokens: 1024,
|
|
109
162
|
});
|
|
110
|
-
const parts = response?.candidates?.[0]?.content?.parts ?? [];
|
|
111
|
-
const text = parts.map((p) => p?.text ?? "").join("").trim();
|
|
112
|
-
return text;
|
|
113
163
|
}
|
|
114
|
-
async function baselineAnswer(
|
|
164
|
+
async function baselineAnswer(llm, task) {
|
|
115
165
|
const contents = [
|
|
116
166
|
{
|
|
117
167
|
role: "user",
|
|
@@ -122,7 +172,7 @@ async function baselineAnswer(ai, task) {
|
|
|
122
172
|
],
|
|
123
173
|
},
|
|
124
174
|
];
|
|
125
|
-
return
|
|
175
|
+
return llmGenerateText(llm, contents);
|
|
126
176
|
}
|
|
127
177
|
function buildToolIndex() {
|
|
128
178
|
const byName = new Map();
|
|
@@ -157,9 +207,8 @@ function resolveTaskLocalFilePath(task) {
|
|
|
157
207
|
throw new Error("Task missing filePath/localFilePath");
|
|
158
208
|
return path.join(repoRoot, ".cache", "gaia", "data", filePath);
|
|
159
209
|
}
|
|
160
|
-
async function toolAugmentedAnswerFromFile(
|
|
210
|
+
async function toolAugmentedAnswerFromFile(llm, task, opts) {
|
|
161
211
|
const toolIndex = buildToolIndex();
|
|
162
|
-
const model = process.env.NODEBENCH_GAIA_TOOLS_MODEL ?? "gemini-2.5-flash";
|
|
163
212
|
const toolsMode = (process.env.NODEBENCH_GAIA_CAPABILITY_TOOLS_MODE ?? "rag").toLowerCase();
|
|
164
213
|
const localPath = resolveTaskLocalFilePath(task);
|
|
165
214
|
if (!existsSync(localPath)) {
|
|
@@ -266,13 +315,26 @@ async function toolAugmentedAnswerFromFile(ai, task, opts) {
|
|
|
266
315
|
}
|
|
267
316
|
// Keep the model input bounded. The tools already return bounded previews,
|
|
268
317
|
// but JSON stringification can still be large on wide tables.
|
|
269
|
-
const
|
|
318
|
+
const derivedParity = deriveAddressParityIfRelevant(task.prompt, extract);
|
|
319
|
+
const inferredFromParity = derivedParity && (ext === "csv" || ext === "xlsx")
|
|
320
|
+
? inferAnswerFromAddressParityIfPossible(task.prompt, derivedParity)
|
|
321
|
+
: null;
|
|
322
|
+
if (inferredFromParity) {
|
|
323
|
+
return { answer: inferredFromParity, toolCalls: 1 };
|
|
324
|
+
}
|
|
325
|
+
const enrichedExtract = derivedParity && (ext === "csv" || ext === "xlsx")
|
|
326
|
+
? { ...extract, derivedParity: { address: derivedParity } }
|
|
327
|
+
: extract;
|
|
328
|
+
const extractText = JSON.stringify(enrichedExtract).slice(0, 40000);
|
|
270
329
|
const contents = [
|
|
271
330
|
{
|
|
272
331
|
role: "user",
|
|
273
332
|
parts: [
|
|
274
333
|
{
|
|
275
|
-
text: "Answer the question using
|
|
334
|
+
text: "Answer the question using the provided file extract plus general reasoning. " +
|
|
335
|
+
"Do not browse the web and do not read any other files. " +
|
|
336
|
+
"Reminder: the sun rises in the east and sets in the west. " +
|
|
337
|
+
"If FILE_EXTRACT_JSON contains derivedParity, prefer it over recounting. " +
|
|
276
338
|
"If the extract is insufficient, make the best supported guess.\n\n" +
|
|
277
339
|
"Return ONLY the final answer, no explanation.\n\n" +
|
|
278
340
|
`TASK_ID: ${task.id}\n` +
|
|
@@ -284,12 +346,14 @@ async function toolAugmentedAnswerFromFile(ai, task, opts) {
|
|
|
284
346
|
],
|
|
285
347
|
},
|
|
286
348
|
];
|
|
287
|
-
const answer = await
|
|
349
|
+
const answer = await llmGenerateText(llm, contents);
|
|
288
350
|
return { answer, toolCalls: 1 };
|
|
289
351
|
}
|
|
290
352
|
// "agent" mode: small tool loop. This is more realistic but higher variance.
|
|
291
353
|
const toolUsageSummary = [
|
|
292
354
|
"You have access to deterministic local file tools:",
|
|
355
|
+
"- where ops: eq, ne, contains, starts_with, ends_with, matches_regex, gt, gte, lt, lte, is_empty, not_empty, is_even, is_odd",
|
|
356
|
+
"- Prefer deterministic aggregations (csv_aggregate/xlsx_aggregate) over mental math. For parity rules, use where op is_even/is_odd.",
|
|
293
357
|
"- read_csv_file({path,hasHeader,delimiter,encoding,maxRows,maxCols,maxCellChars})",
|
|
294
358
|
"- csv_select_rows({path,hasHeader,delimiter,encoding,where,returnColumns,offset,limit,maxScanRows,maxCols,maxCellChars})",
|
|
295
359
|
"- csv_aggregate({path,hasHeader,delimiter,encoding,where,operation,value,ignoreNonNumeric,returnRow,returnColumns,maxScanRows,maxCols,maxCellChars})",
|
|
@@ -331,7 +395,7 @@ async function toolAugmentedAnswerFromFile(ai, task, opts) {
|
|
|
331
395
|
];
|
|
332
396
|
let toolCalls = 0;
|
|
333
397
|
for (let step = 0; step < opts.maxSteps; step++) {
|
|
334
|
-
const out = await
|
|
398
|
+
const out = await llmGenerateText(llm, contents);
|
|
335
399
|
contents.push({ role: "model", parts: [{ text: out }] });
|
|
336
400
|
const parsed = extractJsonObject(out);
|
|
337
401
|
if (!parsed || typeof parsed !== "object") {
|
|
@@ -693,7 +757,7 @@ async function toolAugmentedAnswerFromFile(ai, task, opts) {
|
|
|
693
757
|
role: "user",
|
|
694
758
|
parts: [{ text: "Out of steps. Return final answer now as JSON." }],
|
|
695
759
|
});
|
|
696
|
-
const out = await
|
|
760
|
+
const out = await llmGenerateText(llm, contents);
|
|
697
761
|
const parsed = extractJsonObject(out);
|
|
698
762
|
if (parsed?.action === "final") {
|
|
699
763
|
return { answer: String(parsed.answer ?? "").trim(), toolCalls };
|
|
@@ -715,9 +779,12 @@ describe("Capability: GAIA accuracy (file-backed) (LLM-only vs LLM+local tools)"
|
|
|
715
779
|
if (!existsSync(fixturePath)) {
|
|
716
780
|
throw new Error(`Missing GAIA capability files fixture at ${fixturePath}. Generate it with: python packages/mcp-local/src/__tests__/fixtures/generateGaiaCapabilityFilesFixture.py`);
|
|
717
781
|
}
|
|
718
|
-
const
|
|
719
|
-
|
|
720
|
-
const
|
|
782
|
+
const baselineModel = process.env.NODEBENCH_GAIA_BASELINE_MODEL ?? "gemini-2.5-flash";
|
|
783
|
+
const toolsModel = process.env.NODEBENCH_GAIA_TOOLS_MODEL ?? baselineModel;
|
|
784
|
+
const baselineLlm = await createTextLlmClient({ model: baselineModel });
|
|
785
|
+
const toolsLlm = await createTextLlmClient({ model: toolsModel });
|
|
786
|
+
const baselineModelLabel = `${baselineLlm.provider}:${baselineLlm.model}`;
|
|
787
|
+
const toolsModelLabel = `${toolsLlm.provider}:${toolsLlm.model}`;
|
|
721
788
|
const fixture = await loadFixture(fixturePath);
|
|
722
789
|
expect(Array.isArray(fixture.tasks)).toBe(true);
|
|
723
790
|
expect(fixture.tasks.length).toBeGreaterThan(0);
|
|
@@ -736,16 +803,15 @@ describe("Capability: GAIA accuracy (file-backed) (LLM-only vs LLM+local tools)"
|
|
|
736
803
|
if (idx >= tasks.length)
|
|
737
804
|
return;
|
|
738
805
|
const task = tasks[idx];
|
|
739
|
-
const expected = normalizeAnswer(task.expectedAnswer);
|
|
740
806
|
try {
|
|
741
807
|
const baseStart = performance.now();
|
|
742
|
-
const base = await baselineAnswer(
|
|
808
|
+
const base = await baselineAnswer(baselineLlm, task);
|
|
743
809
|
const baseMs = performance.now() - baseStart;
|
|
744
810
|
const toolsStart = performance.now();
|
|
745
|
-
const tools = await toolAugmentedAnswerFromFile(
|
|
811
|
+
const tools = await toolAugmentedAnswerFromFile(toolsLlm, task, { maxSteps, maxToolCalls });
|
|
746
812
|
const toolsMs = performance.now() - toolsStart;
|
|
747
|
-
const baselineCorrect =
|
|
748
|
-
const toolsCorrect =
|
|
813
|
+
const baselineCorrect = answersMatch(task.expectedAnswer, base);
|
|
814
|
+
const toolsCorrect = answersMatch(task.expectedAnswer, tools.answer);
|
|
749
815
|
results[idx] = {
|
|
750
816
|
taskId: task.id,
|
|
751
817
|
baselineCorrect,
|
|
@@ -785,8 +851,6 @@ describe("Capability: GAIA accuracy (file-backed) (LLM-only vs LLM+local tools)"
|
|
|
785
851
|
const repoRoot = resolveRepoRoot();
|
|
786
852
|
const generatedAtIso = new Date().toISOString();
|
|
787
853
|
const stamp = generatedAtIso.replace(/[:.]/g, "-");
|
|
788
|
-
const baselineModel = process.env.NODEBENCH_GAIA_BASELINE_MODEL ?? "gemini-2.5-flash";
|
|
789
|
-
const toolsModel = process.env.NODEBENCH_GAIA_TOOLS_MODEL ?? "gemini-2.5-flash";
|
|
790
854
|
const toolsMode = (process.env.NODEBENCH_GAIA_CAPABILITY_TOOLS_MODE ?? "rag").toLowerCase();
|
|
791
855
|
const publicSummary = {
|
|
792
856
|
suiteId: "gaia_capability_files",
|
|
@@ -797,13 +861,13 @@ describe("Capability: GAIA accuracy (file-backed) (LLM-only vs LLM+local tools)"
|
|
|
797
861
|
taskCount: tasks.length,
|
|
798
862
|
concurrency,
|
|
799
863
|
baseline: {
|
|
800
|
-
model:
|
|
864
|
+
model: baselineModelLabel,
|
|
801
865
|
correct: baselineCorrect,
|
|
802
866
|
passRatePct: tasks.length === 0 ? 0 : (baselineCorrect / tasks.length) * 100,
|
|
803
867
|
avgMs: avgBaseMs,
|
|
804
868
|
},
|
|
805
869
|
tools: {
|
|
806
|
-
model:
|
|
870
|
+
model: toolsModelLabel,
|
|
807
871
|
mode: toolsMode,
|
|
808
872
|
correct: toolsCorrect,
|
|
809
873
|
passRatePct: tasks.length === 0 ? 0 : (toolsCorrect / tasks.length) * 100,
|