You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Merge branch 'main' into router/2385-collection.router_recipe_dispatch
Resolve conflicts from #2519 (parser/store) and #2548 (classifier services)
landing on main after this branch forked:
- routing_classifier_services.{h,cpp}: keep main's reviewed parse/validation
body (validate_score_range, try_extract_chat_text) and re-add this branch's
build_route_context + collect_text_from_content/content_has_image helpers,
which #2385 dispatch needs.
- routing_policy_store.{h,cpp}, test_routing_policy_store.cpp,
test_routing_classifier_services.cpp: take main (strict superset — C++20
TODO, case-insensitive .json, added tests).
- model_manager.cpp USER_DEFINED_MODEL_PROPS: keep "version" (router policies
carry a required root version) on top of main's "routing".
- server.cpp download-skip: is_model_collection_recipe (omni OR router) — a
collection.router has no checkpoint and must skip the generic HF download;
main's is_omni_collection_recipe would wrongly route it through HF.
lemond builds; routing parser/engine/deterministic/classifier-services/
collection-validation unit tests pass.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Audio Generation API. You provide a text prompt and receive a generated audio clip. The loaded model decides the kind of audio: music with ACE-Step models (e.g. `ACE-Step-Music`), sound effects with ThinkSound models (e.g. `ThinkSound-SFX`).
695
+
696
+
This endpoint is not part of the OpenAI API (OpenAI's audio endpoints cover speech and transcription only), so it is a Lemonade-specific extension.
697
+
698
+
> **Performance:** generation runs on the GPU (Vulkan, ROCm, or CUDA) and takes from seconds (short sound effects) to minutes (full-length music) depending on duration and hardware.
699
+
700
+
### Parameters
701
+
702
+
| Parameter | Required | Description |
703
+
|-----------|----------|-------------|
704
+
|`model`| Yes | The audio-generation model to use (e.g., `ThinkSound-SFX`, `ACE-Step-Music`). |
705
+
|`prompt`| Yes | Text description of the music or sound effect to generate. |
706
+
|`duration`| No | Length of the clip in seconds. Defaults to the backend's native default. |
707
+
|`steps`| No | Number of inference steps. Lower is faster, higher can improve quality. |
708
+
|`cfg`| No | Classifier-free guidance strength (ThinkSound only). |
709
+
|`seed`| No | Random seed for reproducibility. |
710
+
|`response_format`| No | Output encoding. Only formats the backend natively produces are accepted (currently `wav`); other values are rejected with `400 Bad Request`. Default: `wav`. |
711
+
712
+
### Response
713
+
714
+
On success the raw audio bytes are returned with the matching content type (`audio/wav`). On failure the response is JSON with an `error` object: `400` for invalid requests, `404` for unknown models, `500` when the backend reports an error, and `502` when the backend produces no output.
715
+
716
+
### Example request
717
+
718
+
```bash
719
+
curl -X POST http://localhost:13305/v1/audio/generations \
Copy file name to clipboardExpand all lines: docs/dev/contribute.md
+28-1Lines changed: 28 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -41,9 +41,36 @@ Each contribution needs to:
41
41
- Reviewers: make sure to check the code *before* allowing CI to run!
42
42
3. Sustain the overall code quality and standards of the rest of the repo.
43
43
44
+
### Making Pull Requests Easy to Review
45
+
46
+
Maintainers try to review contributions quickly, but review time is limited. The easiest pull requests to review are small, focused, and easy to verify.
47
+
48
+
Before opening a PR, please make sure that:
49
+
50
+
1. The PR solves one clear problem.
51
+
2. The changes are limited to what is necessary.
52
+
3. There are no unrelated local changes included.
53
+
4. The PR description explains what changed and why.
54
+
5. The PR describes how the change was tested, including any platforms that could not be tested locally.
55
+
6. Larger refactoring is separated from bug fixes or feature changes.
56
+
57
+
Some areas of the codebase are more sensitive than they may appear. Small changes can sometimes have large side effects, especially in recently reworked, complex, or platform-specific code. In these cases, reviewers may ask you to reduce the scope, add tests, or follow a specific implementation approach. If you need help testing on a platform you do not have access to, please mention it in the PR and ask for support in the Lemonade Discord.
58
+
59
+
The fastest way to build trust as a new contributor is to submit small, clear, well-tested PRs that are easy to review and easy to verify.
60
+
44
61
### AI Policy
45
62
46
-
Contributors are encouraged to use AI to code their project. However, please review your AI's code yourself before asking another human to review it.
63
+
Contributors are welcome to use AI tools while working on Lemonade. However, contributors remain fully responsible for the code they submit.
64
+
65
+
If you use AI-assisted coding, please make sure that you:
66
+
67
+
1. Understand the generated code before submitting it.
68
+
2. Review the full diff yourself.
69
+
3. Remove unrelated or unnecessary changes.
70
+
4. Test the result locally where possible.
71
+
5. Keep the PR especially small and focused.
72
+
73
+
AI can make it easy to generate large changes, but large or unfocused changes are harder for maintainers to review and are less likely to be accepted quickly.
47
74
48
75
Reviewers are expected to use tools like Claude Code's `/review` to save time by analyzing code quality and edge cases. If AI tools generate PR comments, please clearly identify which comments are AI-generated and which are authored by you.
Copy file name to clipboardExpand all lines: docs/guide/configuration/README.md
+12Lines changed: 12 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -35,6 +35,12 @@ Values set in the user's `config.json` always take precedence over these seeded
35
35
```json
36
36
{
37
37
"_generated": "GENERATED by docs/tools/gen_backend_boilerplate.py -- do not hand-edit per-recipe sections (they come from each backend's descriptor config_defaults()). Global keys are hand-maintained in this file. Regenerate and verify with that script; CI --check fails on drift.",
38
+
"acestep": {
39
+
"backend": "auto",
40
+
"cuda_bin": "builtin",
41
+
"rocm_bin": "builtin",
42
+
"vulkan_bin": "builtin"
43
+
},
38
44
"cloud_providers": [],
39
45
"config_version": 2,
40
46
"ctx_size": -1,
@@ -112,6 +118,12 @@ Values set in the user's `config.json` always take precedence over these seeded
Copy file name to clipboardExpand all lines: docs/guide/configuration/custom-models.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -71,7 +71,7 @@ Supported registration flags:
71
71
| Flag | Description |
72
72
|------|-------------|
73
73
|`--checkpoint TYPE CHECKPOINT`| Add a checkpoint entry. Repeat for multi-file models such as `main` + `mmproj` or `main` + `vae`. |
74
-
|`--recipe RECIPE`| Recipe to associate with the new `user.*` model. Common values: <!-- BEGIN GENERATED: recipe-values -->`llamacpp`, `whispercpp`, `moonshine`, `kokoro`, `sd-cpp`, `flm`, `ryzenai-llm`, `vllm`, `collection.omni`<!-- END GENERATED: recipe-values -->. |
74
+
|`--recipe RECIPE`| Recipe to associate with the new `user.*` model. Common values: <!-- BEGIN GENERATED: recipe-values -->`llamacpp`, `whispercpp`, `moonshine`, `kokoro`, `sd-cpp`, `flm`, `ryzenai-llm`, `vllm`, `thinksound`, `acestep`, `collection.omni`<!-- END GENERATED: recipe-values -->. |
75
75
|`--label LABEL`| Add a label to the new model. Repeatable. Valid labels include `coding`, `embeddings`, `hot`, `mtp`, `reasoning`, `reranking`, `tool-calling`, `vision`. |
76
76
|`--components MODEL [MODEL ...]`| Components for an omni collection (see below). Use with `--recipe collection.omni`. |
0 commit comments