Spaces:
Sleeping
Sleeping
Report failed chain steps in the export
Browse files- api-tester.html +7 -3
api-tester.html
CHANGED
|
@@ -747,6 +747,7 @@
|
|
| 747 |
prompts: [],
|
| 748 |
responses: [],
|
| 749 |
steps: laneRuns.get(laneId)?.steps || [],
|
|
|
|
| 750 |
stats: aggregateLaneStats(laneRuns.get(laneId)?.steps || [])
|
| 751 |
};
|
| 752 |
|
|
@@ -790,9 +791,10 @@
|
|
| 790 |
|
| 791 |
lane.prompts.forEach((prompt, i) => {
|
| 792 |
text += `[Prompt ${i+1}]: ${prompt.slice(0, 100)}${prompt.length > 100 ? '...' : ''}\n`;
|
| 793 |
-
const step = lane.steps
|
| 794 |
if (!step) {
|
| 795 |
-
|
|
|
|
| 796 |
return;
|
| 797 |
}
|
| 798 |
text += `[Response ${i+1}]: ${describeStep(step)}\n`;
|
|
@@ -1418,7 +1420,7 @@
|
|
| 1418 |
statsSection.style.display = 'grid';
|
| 1419 |
|
| 1420 |
let previousResponseId = null;
|
| 1421 |
-
const laneRun = { steps: [] };
|
| 1422 |
laneRuns.set(laneId, laneRun);
|
| 1423 |
|
| 1424 |
for (let step = 1; step <= chainCount; step++) {
|
|
@@ -1458,6 +1460,7 @@
|
|
| 1458 |
});
|
| 1459 |
|
| 1460 |
previousResponseId = result.responseId;
|
|
|
|
| 1461 |
laneRun.steps.push(result.summary);
|
| 1462 |
const stats = aggregateLaneStats(laneRun.steps);
|
| 1463 |
for (const key of ['ttft', 'tps', 'out', 'tools', 'total', 'cost']) {
|
|
@@ -1472,6 +1475,7 @@
|
|
| 1472 |
} catch (error) {
|
| 1473 |
document.getElementById(`${laneId}-output-${step}`).textContent = `Error: ${error.message}`;
|
| 1474 |
document.getElementById(`${laneId}-dot-${step}`).className = 'status-dot error';
|
|
|
|
| 1475 |
break; // Stop chain on error
|
| 1476 |
}
|
| 1477 |
}
|
|
|
|
| 747 |
prompts: [],
|
| 748 |
responses: [],
|
| 749 |
steps: laneRuns.get(laneId)?.steps || [],
|
| 750 |
+
failures: Object.fromEntries(laneRuns.get(laneId)?.failures || []),
|
| 751 |
stats: aggregateLaneStats(laneRuns.get(laneId)?.steps || [])
|
| 752 |
};
|
| 753 |
|
|
|
|
| 791 |
|
| 792 |
lane.prompts.forEach((prompt, i) => {
|
| 793 |
text += `[Prompt ${i+1}]: ${prompt.slice(0, 100)}${prompt.length > 100 ? '...' : ''}\n`;
|
| 794 |
+
const step = lane.steps.find(s => s.step === i + 1);
|
| 795 |
if (!step) {
|
| 796 |
+
const failure = lane.failures[i + 1];
|
| 797 |
+
text += `[Response ${i+1}]: ${failure ? `failed 路 ${failure}` : '(not run)'}\n\n`;
|
| 798 |
return;
|
| 799 |
}
|
| 800 |
text += `[Response ${i+1}]: ${describeStep(step)}\n`;
|
|
|
|
| 1420 |
statsSection.style.display = 'grid';
|
| 1421 |
|
| 1422 |
let previousResponseId = null;
|
| 1423 |
+
const laneRun = { steps: [], failures: new Map() };
|
| 1424 |
laneRuns.set(laneId, laneRun);
|
| 1425 |
|
| 1426 |
for (let step = 1; step <= chainCount; step++) {
|
|
|
|
| 1460 |
});
|
| 1461 |
|
| 1462 |
previousResponseId = result.responseId;
|
| 1463 |
+
result.summary.step = step;
|
| 1464 |
laneRun.steps.push(result.summary);
|
| 1465 |
const stats = aggregateLaneStats(laneRun.steps);
|
| 1466 |
for (const key of ['ttft', 'tps', 'out', 'tools', 'total', 'cost']) {
|
|
|
|
| 1475 |
} catch (error) {
|
| 1476 |
document.getElementById(`${laneId}-output-${step}`).textContent = `Error: ${error.message}`;
|
| 1477 |
document.getElementById(`${laneId}-dot-${step}`).className = 'status-dot error';
|
| 1478 |
+
laneRun.failures.set(step, error.message);
|
| 1479 |
break; // Stop chain on error
|
| 1480 |
}
|
| 1481 |
}
|