LLM song-tweak: AI Gateway via Vercel AI SDK, budgeted tune flow
Add a ✨ tune button that lets an LLM inspect the proposed visualization and tweak the proc-song knobs so the next generation looks better. Edits only the 7 songbank params (bpm, brightness, noise, noiseColour, dynamics, transition, arrangement) — never the Look — then re-synthesizes and re-generates locally for preview. - ai + @ai-sdk/openai + zod (library per plan) against the Vercel AI Gateway (OpenAI-compatible, configurable via VITE_AI_GATEWAY_URL/MODEL/API_KEY, localStorage override, .env.example). - Structured output (TweakResultSchema) + clampEdits enforces ranges; prompt ≤ ~2.5k tokens, max 2-3 knobs ±0.15 / bpm ±8. - Budget caps: 3/load + 10/session (sessionStorage), checked before network, NO_EDITS refunded, offline/auth/rate-limit mapped. - Prompt split into src/llm/spec.js (pure, node-testable) + llmTweak.js (gateway + digest) to keep `node --test` off the Vite JSON path. - UI: ⚙️ gateway/model/key dialog (localStorage flow-state:llm), confirm(prompt) with hint, diff modal with Apply/Dismiss; Apply synthesizes → FeatureTrack → generateLook → Show.useTrack. - Tests: 7 new LLM cases (clamp, schema, prompt, budget), 18/18 pass. Build + lint:scenes green. Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -59,6 +59,8 @@
|
||||
<button id="btn-reroll" title="New seed for the whole track">reroll</button>
|
||||
<button id="btn-reroll-section" title="New scene for this section only">reroll section</button>
|
||||
<button id="btn-lock" title="Lock this section against rerolls">lock</button>
|
||||
<button id="btn-llm-tweak" title="Let an LLM tune the generated song">✨ tune</button>
|
||||
<button id="btn-llm-config" title="LLM gateway settings">⚙️</button>
|
||||
<button id="btn-hud" title="Toggle debug HUD (D)">hud</button>
|
||||
<button id="btn-osd" title="Toggle the title plate in the corner (O)">osd</button>
|
||||
<button id="btn-segment" title="Render 20s around the playhead at export quality">test render</button>
|
||||
|
||||
Reference in New Issue
Block a user