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