feat: wire AI chat to LLM with full LEGO multi-track generation#851
feat: wire AI chat to LLM with full LEGO multi-track generation#851fspecii wants to merge 1 commit intoace-step:mainfrom
Conversation
Add llmChatService with OpenRouter integration and LEGO pipeline support. Remove hardcoded API key. Add crypto.randomUUID polyfill. Wire uiStore to stream from real LLM with fallback to built-in assistant.
ReviewThanks for the contribution! The LEGO multi-track generation pipeline via LLM is a great idea. However, this PR needs some work before it can be merged: Must Fix
Should Fix
Please address items 1-6 and push an updated branch. Happy to re-review! |
|
Hi @fspecii — thanks for taking the time to put this together! We appreciate the effort. That said, ACE-Step DAW is currently in an intensive solo-development phase with very frequent updates landing daily, which makes it difficult to keep external PRs in sync and properly integrated. The LLM chat + multi-track generation feature you've built here is definitely on our roadmap — we plan to have it implemented end-to-end by our agent-driven development pipeline (Claude Code handles all implementation work on this project). For these reasons we're going to close this PR for now. We're not accepting external contributions at this stage, but this may change as the project matures. Thanks again for your interest in the project! 🙏 Generated by Claude Code |
This adds a real LLM backend to the AI chat panel and wires it to the full LEGO multi-track generation pipeline.
What was added
A new llmChatService supports any OpenAI compatible provider (OpenRouter, OpenAI, DeepSeek, etc). When the user asks for a song the LLM responds with a structured action block that triggers generateBatch to create all tracks in parallel using a shared seed and global caption for musical coherence.
The service includes a genre aware system prompt with detailed production DNA for trap, boom bap, lo-fi, pop, house, R&B, jazz, rock and afrobeats so the model generates genre accurate tags instead of generic ones.
A crypto.randomUUID polyfill was added to index.html for compatibility with older browsers.
Tested with OpenRouter using the Gemini Flash model and works fine on my tests.