fix(rag): lift chat output cap to 32768 tokens — long answers no longer cut off
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
# Story: Long Answers (No Truncation)
|
||||
|
||||
**Phase:** `11_long_answers.md` · **E2E:** `tests/e2e/test_long_answers.py`
|
||||
|
||||
## Narrative
|
||||
|
||||
As **a user**, I want Brain to be able to answer at full length (up to
|
||||
32 768 output tokens) so complex questions ("walk me through the whole
|
||||
setup", "list every service and its config") get a **complete** answer
|
||||
instead of one that stops mid-sentence.
|
||||
|
||||
- **Given** any question that deserves a long answer
|
||||
- **When** Brain streams its reply
|
||||
- **Then** the reply runs to its natural end — the model is allowed up to
|
||||
32 768 output tokens, not a hard 700-token cap.
|
||||
|
||||
## Acceptance criteria
|
||||
1. `LLMClient.chat_stream` sends `max_tokens` from settings
|
||||
(`BOR_MAX_OUTPUT_TOKENS`, default **32 768**) — the hard-coded 700 is
|
||||
gone.
|
||||
2. A genuinely long streamed answer (several thousand words) arrives
|
||||
**complete** in the browser — final line intact (E2E).
|
||||
3. Setting is overridable via env; unit-tested.
|
||||
4. Unit + integration green, `app/` coverage >90%, story E2E green in
|
||||
isolation, one `--no-gpg-sign` commit.
|
||||
|
||||
## Playwright Mapping Rule
|
||||
**Test Scenario → `tests/e2e/test_long_answers.py`** (mock LLM, seeded KB):
|
||||
1. `test_long_answer_streams_to_completion` — question with the
|
||||
"write a long answer" trigger → mock emits a ~4 000-word deterministic
|
||||
answer and **honors `max_tokens`** (word-based) → the browser shows the
|
||||
final line of the answer; under the old 700 cap the tail is missing.
|
||||
2. `test_normal_answer_unaffected` — a normal question still streams a
|
||||
complete, short answer.
|
||||
Reference in New Issue
Block a user