feat(rag): feed whole matched documents to the LLM — no context truncation (A7 revised)
This commit is contained in:
@@ -26,6 +26,11 @@ Implements just enough of the aipi surface:
|
||||
- system prompt containing ``<tuning>`` (phase 15, steering notes) ->
|
||||
the composed answer ends with `` (tuning: <first note line>)`` —
|
||||
makes prompt injection observable in the UI deterministically.
|
||||
- user message containing ``show the end of your notes`` (phase 24,
|
||||
whole-document context) -> the answer quotes the **last 160 chars of
|
||||
the document context** — a tail echo, byte-stable across runs, so a
|
||||
sentinel placed at the *end* of a document appears in the rendered
|
||||
answer iff the whole document was in the prompt.
|
||||
|
||||
``max_tokens`` is honored deterministically (token ≈ whitespace word),
|
||||
like a real endpoint: an answer longer than the cap is truncated. This
|
||||
@@ -104,6 +109,13 @@ THINKING_TRIGGER = "think out loud"
|
||||
SLOW_PRETOKEN_TRIGGER = "think out loud then hesitate"
|
||||
PRE_CONTENT_PAUSE_S = 4.0
|
||||
|
||||
#: Phase 24 (whole-document-context story): a user message containing this
|
||||
#: substring (case-insensitive) gets an answer quoting the TAIL of the
|
||||
#: document context (see the module docstring). Verified 2026-08-24: no
|
||||
#: existing E2E question or fixture file contains the phrase, so every
|
||||
#: other suite is unaffected.
|
||||
END_OF_NOTES_TRIGGER = "show the end of your notes"
|
||||
|
||||
|
||||
def long_answer() -> str:
|
||||
"""~900-word deterministic walkthrough (phase 11): numbered steps plus
|
||||
@@ -151,6 +163,16 @@ def compose_answer(body: dict[str, Any]) -> str:
|
||||
"kubernetes, backups, or deploying a new service — I know those inside out. "
|
||||
"You've got this!"
|
||||
)
|
||||
elif END_OF_NOTES_TRIGGER in user.lower():
|
||||
# Whole-document-context story (phase 24): echo the tail of the
|
||||
# context. Byte-stable across runs — a sentinel on the document's
|
||||
# last line appears in the answer iff the whole document was in
|
||||
# the prompt. (The tail includes the closing </documents> —
|
||||
# harmless for the E2E sentinel assertions.)
|
||||
answer = (
|
||||
f"…and the very end of my notes reads: “{_context(body)[-160:]}” "
|
||||
"(Deterministic mock answer for E2E.)"
|
||||
)
|
||||
else:
|
||||
ctx = _context(body)
|
||||
snippet = ctx[:220].replace("\n", " ").strip()
|
||||
|
||||
Reference in New Issue
Block a user