Follow-ups in the same chat ignore the previous turn.
Ask for a stroller/carrier. The answer lists specific products. Ask to put that list in a table with prices and ratings. The reply says it does not have the list in the sources, and does not use the products it just named.
Ask for a joke. Ask "I don't know, why?". The reply searches the web and answers from an unrelated page about form error messages, with a citation, instead of explaining the joke.
The activity panel shows "Searching the web" on the joke follow-up.
Why
use_conversation_context defaults to false, so AsyncLLMService sends an empty history. The live turn is only the latest sentence plus web sources.
Grounded instructions say to answer only from live sources, so a follow-up cannot reuse the previous answer even when history is present.
The grounding decider sees only the latest sentence. "I don't know, why?" is treated as a new lookup.
Prompt rows for a conversation are loaded with no order_by (get_messages in both consumers, ConversationDetailView). History can be assembled out of chronological order, and clean[:-1] then drops the wrong turn.
Fix
Default same-chat history on, and turn it on for existing accounts. The account toggle stays an opt-out.
Always load conversation prompts oldest-first (created, then id).
Drop the current user turn from history by matching its text, not by assuming it is the last row.
Let grounded answers use the conversation for follow-ups. Cite sources only for facts that come from them. Do not claim the previous list is missing when it is already in the thread.
Skip web retrieval for a pure follow-up ("I don't know, why?") when the thread already has prior turns. Still search when the follow-up asks for a new external fact such as price or rating.
Display order of the bubbles is the matching chat_web_app ticket.
## What happens
Follow-ups in the same chat ignore the previous turn.
1. Ask for a stroller/carrier. The answer lists specific products. Ask to put that list in a table with prices and ratings. The reply says it does not have the list in the sources, and does not use the products it just named.
2. Ask for a joke. Ask "I don't know, why?". The reply searches the web and answers from an unrelated page about form error messages, with a citation, instead of explaining the joke.
The activity panel shows "Searching the web" on the joke follow-up.
## Why
- `use_conversation_context` defaults to false, so `AsyncLLMService` sends an empty history. The live turn is only the latest sentence plus web sources.
- Grounded instructions say to answer only from live sources, so a follow-up cannot reuse the previous answer even when history is present.
- The grounding decider sees only the latest sentence. "I don't know, why?" is treated as a new lookup.
- `Prompt` rows for a conversation are loaded with no `order_by` (`get_messages` in both consumers, `ConversationDetailView`). History can be assembled out of chronological order, and `clean[:-1]` then drops the wrong turn.
## Fix
- Default same-chat history on, and turn it on for existing accounts. The account toggle stays an opt-out.
- Always load conversation prompts oldest-first (`created`, then `id`).
- Drop the current user turn from history by matching its text, not by assuming it is the last row.
- Let grounded answers use the conversation for follow-ups. Cite sources only for facts that come from them. Do not claim the previous list is missing when it is already in the thread.
- Skip web retrieval for a pure follow-up ("I don't know, why?") when the thread already has prior turns. Still search when the follow-up asks for a new external fact such as price or rating.
Display order of the bubbles is the matching `chat_web_app` ticket.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
What happens
Follow-ups in the same chat ignore the previous turn.
The activity panel shows "Searching the web" on the joke follow-up.
Why
use_conversation_contextdefaults to false, soAsyncLLMServicesends an empty history. The live turn is only the latest sentence plus web sources.Promptrows for a conversation are loaded with noorder_by(get_messagesin both consumers,ConversationDetailView). History can be assembled out of chronological order, andclean[:-1]then drops the wrong turn.Fix
created, thenid).Display order of the bubbles is the matching
chat_web_appticket.Display-order half of this bug is chat_web_app#136.