Spaces:
Running on Zero
Running on Zero
Download test_guide_sync.cjs from ibm-granite/LLMON-Attention-Visualization: direct link, hf CLI and curl.
- Browser
- Download file 3.55 kB
-
https://huggingface.co/spaces/ibm-granite/LLMON-Attention-Visualization/resolve/main/test_guide_sync.cjs
- Command line
-
hf download hf://spaces/ibm-granite/LLMON-Attention-Visualization/test_guide_sync.cjs
-
curl -L -o test_guide_sync.cjs https://huggingface.co/spaces/ibm-granite/LLMON-Attention-Visualization/resolve/main/test_guide_sync.cjs
3.55 kB
| // The teaching example must agree with the actual prompt, not only its metadata. | |
| // These offline checks complement test_guide.cjs and the mocked browser audit. | |
| const assert = require('node:assert/strict'); | |
| const { readFile } = require('node:fs/promises'); | |
| (async () => { | |
| const { GUIDE_EXAMPLE, GUIDE_FLOW_URL, chooseInitialExample, flowCategoryColor, flowCurveAppearance } = | |
| await import('./frontend/flow-content.mjs'); | |
| const examples = (await readFile('new_dlb_examples.jsonl', 'utf8')).trim().split('\n').map(JSON.parse); | |
| const example = examples.find(row => row.id === GUIDE_EXAMPLE.id); | |
| assert(example, 'The guide must open an existing bundled example'); | |
| assert.equal(GUIDE_EXAMPLE.instruction, example.instruction); | |
| assert.equal(GUIDE_EXAMPLE.input, example.input); | |
| const prompt = example.llmon_prompt_dirty; | |
| const instructionId = prompt.match(/exec<\|\.\|>instruction<\|close\|>instr<\|:\|>(.*?)<\|open_end\|>/)[1]; | |
| const inputId = prompt.match(/exec<\|\.\|>input<\|close\|>data<\|:\|>(.*?)<\|open_end\|>/)[1]; | |
| for (const [kind, targetId, rows] of [ | |
| ['instr', instructionId, GUIDE_EXAMPLE.instructions], ['data', inputId, GUIDE_EXAMPLE.inputs], | |
| ]) { | |
| const spans = [...prompt.matchAll(/<\|open\|>(instr|data)<\|:\|>(.*?)<\|close\|>(.*?)<\|open_end\|>/g)] | |
| .filter(match => match[1] === kind); | |
| let distractor = 0; | |
| assert.deepEqual(rows.map(({ text, category }) => ({ text, category })), spans.map(match => ({ | |
| text: match[3], category: match[2] === targetId ? `${kind}_t` : `${kind}_d${++distractor}`, | |
| })), 'Guide targets, distractors and ordering must match the exec rule in the real prompt'); | |
| } | |
| assert.equal(GUIDE_EXAMPLE.expectedAnswer, String(example.input.split(',').map(Number).reduce((a, b) => a + b))); | |
| const query = new URL(GUIDE_FLOW_URL, 'http://local').search; | |
| assert.equal(chooseInitialExample(examples, query), example.id); | |
| assert.equal(chooseInitialExample([...examples].reverse(), query), example.id); | |
| assert.equal(chooseInitialExample([...examples].reverse(), '?example=0'), 0); | |
| for (const search of ['', '?example=999', '?example=-2', '?example=not-a-number']) { | |
| assert.equal(chooseInitialExample(examples, search), examples[0].id, 'Unknown links fall back to a valid example'); | |
| } | |
| assert.equal(chooseInitialExample([], query), null); | |
| // Preserve the existing live palette while applying it to the guide too. | |
| assert.equal(flowCategoryColor('instr_t'), '#42be65'); | |
| assert.equal(flowCategoryColor('data_t'), '#4589ff'); | |
| assert.equal(flowCategoryColor('instr_d1'), '#da1e28'); | |
| assert.equal(flowCategoryColor('instr_d2', false, 1), '#ee5396'); | |
| assert.equal(flowCategoryColor('instr_d1', true), '#E69F00'); | |
| assert.equal(flowCategoryColor('data_d1', true), '#CC79A7'); | |
| // A first token has no earlier output: threshold zero must not invent a curve. | |
| for (const weight of [0, undefined, NaN]) assert.equal(flowCurveAppearance(weight, .3, 0), null); | |
| assert.equal(flowCurveAppearance(.01, .3, .02), null); | |
| assert.equal(flowCurveAppearance(.1, 0, 0), null); | |
| assert.equal(flowCurveAppearance(.02, .3, .02).strokeWidth > 0, true); | |
| assert.equal(flowCurveAppearance(.1, .2).strokeWidth, 4); | |
| assert.equal(flowCurveAppearance(.1, .4).strokeWidth, 2, 'Widths are relative within each step, not absolute percentages'); | |
| console.log('PASS: illustrated task/input/roles match the actual prompt; example links, category colors and zero/threshold curve behavior.'); | |
| })().catch(error => { console.error(error); process.exitCode = 1; }); | |