From c07ecbf6d1d1942fcd150ce6644a0058143395f4 Mon Sep 17 00:00:00 2001 From: Chingfeng Li Date: Tue, 18 Nov 2025 18:52:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=A8=E5=BC=82=E6=AD=A5=E5=A4=9A=E8=BD=AE?= =?UTF-8?q?=E5=AF=B9=E8=AF=9D=E4=B8=AD=EF=BC=8C=E4=BC=9A=E4=B8=A2=E5=A4=B1?= =?UTF-8?q?FIRST=20LAST=EF=BC=9B=20FIRST=E4=B8=8ELAST=E6=AF=8F=E6=AC=A1?= =?UTF-8?q?=E5=AF=B9=E8=AF=9D=E9=83=BD=E8=A6=81=E6=9C=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main/xiaozhi-server/core/connection.py | 34 ++++++++++++++------------ 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/main/xiaozhi-server/core/connection.py b/main/xiaozhi-server/core/connection.py index 0a4bb63b..6ad35743 100644 --- a/main/xiaozhi-server/core/connection.py +++ b/main/xiaozhi-server/core/connection.py @@ -726,17 +726,18 @@ class ConnectionHandler: self.logger.bind(tag=TAG).info(f"大模型收到用户消息: {query}") self.llm_finish_task = False - # 为最顶层时新建会话ID和发送FIRST请求 + # depth!=0目前只能表示是非用户发起的请求,与对话逻辑无关,这里所有tts对话都应该发送FIRST和LAST,没有例外 if depth == 0: - self.sentence_id = str(uuid.uuid4().hex) self.dialogue.put(Message(role="user", content=query)) - self.tts.tts_text_queue.put( - TTSMessageDTO( - sentence_id=self.sentence_id, - sentence_type=SentenceType.FIRST, - content_type=ContentType.ACTION, - ) + # 发送开始标记 + self.sentence_id = str(uuid.uuid4().hex) + self.tts.tts_text_queue.put( + TTSMessageDTO( + sentence_id=self.sentence_id, + sentence_type=SentenceType.FIRST, + content_type=ContentType.ACTION, ) + ) # Define intent functions functions = None @@ -826,6 +827,14 @@ class ConnectionHandler: content_detail=content, ) ) + # 发送结束标记 + self.tts.tts_text_queue.put( + TTSMessageDTO( + sentence_id=self.sentence_id, + sentence_type=SentenceType.LAST, + content_type=ContentType.ACTION, + ) + ) # 处理function call if tool_call_flag: bHasError = False @@ -879,14 +888,7 @@ class ConnectionHandler: text_buff = "".join(response_message) self.tts_MessageText = text_buff self.dialogue.put(Message(role="assistant", content=text_buff)) - if depth == 0: - self.tts.tts_text_queue.put( - TTSMessageDTO( - sentence_id=self.sentence_id, - sentence_type=SentenceType.LAST, - content_type=ContentType.ACTION, - ) - ) + self.llm_finish_task = True # 使用lambda延迟计算,只有在DEBUG级别时才执行get_llm_dialogue() self.logger.bind(tag=TAG).debug(