fix(chat): feed title model raw turns instead of post-build_context messages
_generate_title was receiving the full messages list from build_context, which prepends RAG snippets, RSS excerpts, URL content, and briefing article dumps INTO the user-role message string. The role=="user" filter inside _generate_title then handed that composite blob (capped at 300 chars) to gemma3:4b as "the user's message", so the background model was titling conversations based on article excerpts instead of what the user actually typed — producing wildly wrong titles like "Briefing Profile Preferences & Schedule" for a plain calendar query. See #109. Pass the raw history + user_content + assistant reply instead. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -527,9 +527,22 @@ async def run_generation(
|
|||||||
should_gen_title = not conv_title or (msg_count > 0 and msg_count % 10 == 0)
|
should_gen_title = not conv_title or (msg_count > 0 and msg_count % 10 == 0)
|
||||||
|
|
||||||
if should_gen_title:
|
if should_gen_title:
|
||||||
title_messages = messages + [
|
# Feed the title model the *raw* conversation turns only — never
|
||||||
{"role": "assistant", "content": buf.content_so_far}
|
# the post-build_context ``messages`` list. ``build_context``
|
||||||
|
# prepends RAG snippets, RSS excerpts, URL content, and briefing
|
||||||
|
# article dumps INTO the user message string itself, so filtering
|
||||||
|
# by role="user" downstream still surfaces that noise as the
|
||||||
|
# "user's message". That pollution caused wildly-wrong titles
|
||||||
|
# (bug #109) — the small background model was staring at article
|
||||||
|
# excerpts instead of what the user actually typed. Pass the
|
||||||
|
# original history + the raw user_content + the assistant reply.
|
||||||
|
title_messages: list[dict] = [
|
||||||
|
{"role": m["role"], "content": m.get("content") or ""}
|
||||||
|
for m in history
|
||||||
|
if m.get("role") in ("user", "assistant")
|
||||||
]
|
]
|
||||||
|
title_messages.append({"role": "user", "content": user_content})
|
||||||
|
title_messages.append({"role": "assistant", "content": buf.content_so_far})
|
||||||
|
|
||||||
async def _bg_title() -> None:
|
async def _bg_title() -> None:
|
||||||
try:
|
try:
|
||||||
|
|||||||
Reference in New Issue
Block a user