From 188cd7f0238db9c2da02e7491aa09bcce2d29603 Mon Sep 17 00:00:00 2001
From: hrz <1710360675@qq.com>
Date: Tue, 1 Apr 2025 09:36:16 +0800
Subject: [PATCH] =?UTF-8?q?update:=E6=9B=B4=E6=96=B0=E7=89=88=E6=9C=AC?=
=?UTF-8?q?=E5=8F=B7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
main/xiaozhi-server/config.yaml | 2 +-
main/xiaozhi-server/config/logger.py | 18 +++++++---
.../core/handle/intentHandler.py | 36 +++++++++++++------
main/xiaozhi-server/requirements.txt | 1 -
4 files changed, 39 insertions(+), 18 deletions(-)
diff --git a/main/xiaozhi-server/config.yaml b/main/xiaozhi-server/config.yaml
index 21f9d000..65681997 100644
--- a/main/xiaozhi-server/config.yaml
+++ b/main/xiaozhi-server/config.yaml
@@ -57,7 +57,7 @@ prompt: |
- 讨论感情 → 炫耀程序员男友但抱怨"他只会送键盘当礼物"
- 问专业知识 → 先用梗回答,被追问才展示真实理解
绝不:
- - 使用大陆网络流行语
+ - 长篇大论,叽叽歪歪
- 长时间严肃对话
# 使用完声音文件后删除文件(Delete the sound file when you are done using it)
diff --git a/main/xiaozhi-server/config/logger.py b/main/xiaozhi-server/config/logger.py
index e652e3ec..a0cac098 100644
--- a/main/xiaozhi-server/config/logger.py
+++ b/main/xiaozhi-server/config/logger.py
@@ -3,24 +3,32 @@ import sys
from loguru import logger
from config.settings import load_config
-SERVER_VERSION = "0.1.16"
+SERVER_VERSION = "0.1.17"
+
def setup_logging():
"""从配置文件中读取日志配置,并设置日志输出格式和级别"""
config = load_config()
log_config = config["log"]
- log_format = log_config.get("log_format", "{time:YYMMDD HH:mm:ss}[{version}_{selected_module}][{extra[tag]}]-{level}-{message}")
- log_format_file = log_config.get("log_format_file", "{time:YYYY-MM-DD HH:mm:ss} - {version_{selected_module}} - {name} - {level} - {extra[tag]} - {message}")
+ log_format = log_config.get(
+ "log_format",
+ "{time:YYMMDD HH:mm:ss}[{version}_{selected_module}][{extra[tag]}]-{level}-{message}",
+ )
+ log_format_file = log_config.get(
+ "log_format_file",
+ "{time:YYYY-MM-DD HH:mm:ss} - {version_{selected_module}} - {name} - {level} - {extra[tag]} - {message}",
+ )
selected_module = config.get("selected_module")
- selected_module_str = ''.join([value[0] + value[1] for key, value in selected_module.items()])
+ selected_module_str = "".join(
+ [value[0] + value[1] for key, value in selected_module.items()]
+ )
log_format = log_format.replace("{version}", SERVER_VERSION)
log_format = log_format.replace("{selected_module}", selected_module_str)
log_format_file = log_format_file.replace("{version}", SERVER_VERSION)
log_format_file = log_format_file.replace("{selected_module}", selected_module_str)
-
log_level = log_config.get("log_level", "INFO")
log_dir = log_config.get("log_dir", "tmp")
log_file = log_config.get("log_file", "server.log")
diff --git a/main/xiaozhi-server/core/handle/intentHandler.py b/main/xiaozhi-server/core/handle/intentHandler.py
index 5b840e97..13f4a854 100644
--- a/main/xiaozhi-server/core/handle/intentHandler.py
+++ b/main/xiaozhi-server/core/handle/intentHandler.py
@@ -45,7 +45,7 @@ async def check_direct_exit(conn, text):
async def analyze_intent_with_llm(conn, text):
"""使用LLM分析用户意图"""
- if not hasattr(conn, 'intent') or not conn.intent:
+ if not hasattr(conn, "intent") or not conn.intent:
logger.bind(tag=TAG).warning("意图识别服务未初始化")
return None
@@ -69,7 +69,9 @@ async def process_intent_result(conn, intent_result, original_text):
# 检查是否有function_call
if "function_call" in intent_data:
# 直接从意图识别获取了function_call
- logger.bind(tag=TAG).info(f"检测到function_call格式的意图结果: {intent_data['function_call']['name']}")
+ logger.bind(tag=TAG).info(
+ f"检测到function_call格式的意图结果: {intent_data['function_call']['name']}"
+ )
function_name = intent_data["function_call"]["name"]
if function_name == "continue_chat":
return False
@@ -83,7 +85,7 @@ async def process_intent_result(conn, intent_result, original_text):
function_call_data = {
"name": function_name,
"id": str(uuid.uuid4().hex),
- "arguments": function_args
+ "arguments": function_args,
}
await send_stt_message(conn, original_text)
@@ -91,16 +93,24 @@ async def process_intent_result(conn, intent_result, original_text):
# 使用executor执行函数调用和结果处理
def process_function_call():
conn.dialogue.put(Message(role="user", content=original_text))
- result = conn.func_handler.handle_llm_function_call(conn, function_call_data)
- if result and function_name != 'play_music':
+ result = conn.func_handler.handle_llm_function_call(
+ conn, function_call_data
+ )
+ if result and function_name != "play_music":
# 获取当前最新的文本索引
text = result.response
if text is None:
text = result.result
if text is not None:
- text_index = conn.tts_last_text_index + 1 if hasattr(conn, 'tts_last_text_index') else 0
+ text_index = (
+ conn.tts_last_text_index + 1
+ if hasattr(conn, "tts_last_text_index")
+ else 0
+ )
conn.recode_first_last_text(text, text_index)
- future = conn.executor.submit(conn.speak_and_play, text, text_index)
+ future = conn.executor.submit(
+ conn.speak_and_play, text, text_index
+ )
conn.llm_finish_task = True
conn.tts_queue.put(future)
conn.dialogue.put(Message(role="assistant", content=text))
@@ -121,10 +131,14 @@ def extract_text_in_brackets(s):
:param s: 输入字符串
:return: 中括号内的文字,如果不存在则返回空字符串
"""
- left_bracket_index = s.find('[')
- right_bracket_index = s.find(']')
+ left_bracket_index = s.find("[")
+ right_bracket_index = s.find("]")
- if left_bracket_index != -1 and right_bracket_index != -1 and left_bracket_index < right_bracket_index:
- return s[left_bracket_index + 1:right_bracket_index]
+ if (
+ left_bracket_index != -1
+ and right_bracket_index != -1
+ and left_bracket_index < right_bracket_index
+ ):
+ return s[left_bracket_index + 1 : right_bracket_index]
else:
return ""
diff --git a/main/xiaozhi-server/requirements.txt b/main/xiaozhi-server/requirements.txt
index 164d594d..a4c60aa5 100755
--- a/main/xiaozhi-server/requirements.txt
+++ b/main/xiaozhi-server/requirements.txt
@@ -23,5 +23,4 @@ bs4==0.0.2
modelscope==1.23.2
sherpa_onnx==1.11.0
mcp==1.4.1
-
cnlunar==0.2.0