1818 query_response ,
1919 select_model_and_provider_id ,
2020 validate_attachments_metadata ,
21+ get_topic_summary ,
2122)
2223from authentication import get_auth_dependency
2324from authentication .interface import AuthTuple
2728import metrics
2829from models .config import Action
2930from models .database .conversations import UserConversation
31+ from app .database import get_session
3032from models .requests import QueryRequest
3133from models .responses import QueryResponse
3234from utils .endpoints import (
@@ -102,13 +104,27 @@ async def query_endpoint_handler_v2(
102104 # Update metrics for the LLM call
103105 metrics .llm_calls_total .labels (provider_id , model_id ).inc ()
104106
107+ # Compute topic summary if this is a brand new conversation
108+ topic_summary = None
109+ with get_session () as session :
110+ existing_conversation = (
111+ session .query (UserConversation )
112+ .filter_by (id = conversation_id )
113+ .first ()
114+ )
115+ if not existing_conversation :
116+ topic_summary = await get_topic_summary (
117+ query_request .query , client , model_id
118+ )
119+
105120 process_transcript_and_persist_conversation (
106121 user_id = user_id ,
107122 conversation_id = conversation_id ,
108123 model_id = model_id ,
109124 provider_id = provider_id ,
110125 query_request = query_request ,
111126 summary = summary ,
127+ topic_summary = topic_summary ,
112128 )
113129
114130 return QueryResponse (
@@ -350,6 +366,7 @@ def process_transcript_and_persist_conversation(
350366 provider_id : str ,
351367 query_request : QueryRequest ,
352368 summary : TurnSummary ,
369+ topic_summary : str | None = None ,
353370) -> None :
354371 """Process transcript storage and persist conversation details."""
355372 if not is_transcripts_enabled ():
@@ -374,4 +391,5 @@ def process_transcript_and_persist_conversation(
374391 conversation_id = conversation_id ,
375392 model = model_id ,
376393 provider_id = provider_id ,
394+ topic_summary = topic_summary ,
377395 )
0 commit comments