From 12b4994ac0fe1a389363b6dfeba101a828250f53 Mon Sep 17 00:00:00 2001 From: hailin Date: Sun, 5 Apr 2026 20:32:45 -0700 Subject: [PATCH] fix: extract content from ASR JSON before sending to Antaf ASR wraps user speech as JSON {"content":"...", "language":"zh", "emotion":"..."}, extract only the content field instead of sending raw JSON to Antaf bridge. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../xiaozhi-server/core/providers/llm/antaf/antaf.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/backend/main/xiaozhi-server/core/providers/llm/antaf/antaf.py b/backend/main/xiaozhi-server/core/providers/llm/antaf/antaf.py index ddc6900..cb8c1f3 100644 --- a/backend/main/xiaozhi-server/core/providers/llm/antaf/antaf.py +++ b/backend/main/xiaozhi-server/core/providers/llm/antaf/antaf.py @@ -1,3 +1,4 @@ +import json import requests from config.logger import setup_logging from core.providers.llm.base import LLMProviderBase @@ -61,7 +62,15 @@ class LLMProvider(LLMProviderBase): if msg.get("role") == "user": content = msg.get("content", "") if not self._is_system_injected(content): - query = content + # ASR 结果可能是 JSON: {"content":"...", "language":"zh", "emotion":"..."} + try: + parsed = json.loads(content) + if isinstance(parsed, dict) and "content" in parsed: + query = parsed["content"] + else: + query = content + except (json.JSONDecodeError, TypeError): + query = content break if not query: