diff --git a/app/services/conversations.py b/app/services/conversations.py index 8e06e18..bb95f9c 100644 --- a/app/services/conversations.py +++ b/app/services/conversations.py @@ -308,6 +308,11 @@ class ConversationService: yield {"type": "error", "message": "LLM 未返回有效内容"} return + if persist_reply is not None: + assistant_message = await persist_reply(reply, semantics) + yield {"type": "done", "data": {"assistantMessageId": assistant_message.id}} + return + # Persist the complete assistant text before optional card enrichment. # A slow or failed RAG/score lookup must not lose the conversation turn. assistant_message = ConversationMessage( @@ -378,6 +383,8 @@ class ConversationService: conversation: Conversation, current_text: str, semantics: dict[str, Any], + *, + external_context: str | None = None, ) -> Sequence[dict[str, str]]: messages = reply_system_messages(semantics) messages.append( @@ -390,6 +397,8 @@ class ConversationService: structured_context = ConversationService._structured_context(conversation, summary=is_summary) if structured_context: messages.append({"role": "system", "content": structured_context}) + if external_context: + messages.append({"role": "system", "content": external_context}) if is_summary: messages.append( {