From 61c278249140a15b7b3f5d9d39befffd0d81069a Mon Sep 17 00:00:00 2001 From: hrz <1710360675@qq.com> Date: Fri, 9 May 2025 15:23:12 +0800 Subject: [PATCH] =?UTF-8?q?update:=E6=99=BA=E6=8E=A7=E5=8F=B0=EF=BC=8Cinte?= =?UTF-8?q?nt=5FllmM=E4=BE=9B=E5=BA=94=E5=99=A8=E5=A2=9E=E5=8A=A0functions?= =?UTF-8?q?=E8=BE=93=E5=85=A5=E6=A1=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/db/changelog/202505091409.sql | 33 ++++--------------- .../db/changelog/db.changelog-master.yaml | 9 ++++- .../core/handle/intentHandler.py | 2 +- .../providers/intent/intent_llm/intent_llm.py | 5 +-- 4 files changed, 18 insertions(+), 31 deletions(-) diff --git a/main/manager-api/src/main/resources/db/changelog/202505091409.sql b/main/manager-api/src/main/resources/db/changelog/202505091409.sql index ccbaaaee..76ea8ae0 100644 --- a/main/manager-api/src/main/resources/db/changelog/202505091409.sql +++ b/main/manager-api/src/main/resources/db/changelog/202505091409.sql @@ -1,27 +1,6 @@ --- 初始化智能体聊天记录 -DROP TABLE IF EXISTS ai_chat_history; -DROP TABLE IF EXISTS ai_chat_message; -DROP TABLE IF EXISTS ai_agent_chat_history; -CREATE TABLE ai_agent_chat_history -( - id BIGINT AUTO_INCREMENT COMMENT '主键ID' PRIMARY KEY, - mac_address VARCHAR(50) COMMENT 'MAC地址', - agent_id VARCHAR(32) COMMENT '智能体id', - session_id VARCHAR(50) COMMENT '会话ID', - chat_type TINYINT(3) COMMENT '消息类型: 1-用户, 2-智能体', - content VARCHAR(1024) COMMENT '聊天内容', - audio_id VARCHAR(32) COMMENT '音频ID', - created_at DATETIME(3) DEFAULT CURRENT_TIMESTAMP(3) NOT NULL COMMENT '创建时间', - updated_at DATETIME(3) DEFAULT CURRENT_TIMESTAMP(3) NOT NULL ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', - INDEX idx_ai_agent_chat_history_mac (mac_address), - INDEX idx_ai_agent_chat_history_session_id (session_id), - INDEX idx_ai_agent_chat_history_agent_id (agent_id), - INDEX idx_ai_agent_chat_history_agent_session_created (agent_id, session_id, created_at) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT '智能体聊天记录表'; - -DROP TABLE IF EXISTS ai_agent_chat_audio; -CREATE TABLE ai_agent_chat_audio -( - id VARCHAR(32) COMMENT '主键ID' PRIMARY KEY, - audio LONGBLOB COMMENT '音频opus数据' -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT '智能体聊天音频数据表'; \ No newline at end of file +-- 更新intent_llmM供应器 +update `ai_model_provider` set fields = '[{"key":"llm","label":"LLM模型","type":"string"},{"key":"functions","label":"函数列表","type":"dict","dict_name":"functions"}]' where id = 'SYSTEM_Intent_intent_llm'; +-- 更新ChatGLMLLM的意图识别配置 +update `ai_model_config` set config_json = '{\"type\": \"intent_llm\", \"llm\": \"LLM_ChatGLMLLM\", \"functions\": \"get_weather;get_news_from_newsnow;play_music\"}' where id = 'Intent_intent_llm'; +-- 更新函数调用意图识别配置 +UPDATE `ai_model_config` SET config_json = REPLACE(config_json, ';get_news;', ';get_news_from_newsnow;') WHERE id = 'Intent_function_call'; diff --git a/main/manager-api/src/main/resources/db/changelog/db.changelog-master.yaml b/main/manager-api/src/main/resources/db/changelog/db.changelog-master.yaml index ffbef2ce..eb4e69c3 100755 --- a/main/manager-api/src/main/resources/db/changelog/db.changelog-master.yaml +++ b/main/manager-api/src/main/resources/db/changelog/db.changelog-master.yaml @@ -99,4 +99,11 @@ databaseChangeLog: changes: - sqlFile: encoding: utf8 - path: classpath:db/changelog/202505022134.sql \ No newline at end of file + path: classpath:db/changelog/202505022134.sql + - changeSet: + id: 202505091409 + author: hrz + changes: + - sqlFile: + encoding: utf8 + path: classpath:db/changelog/202505091409.sql \ No newline at end of file diff --git a/main/xiaozhi-server/core/handle/intentHandler.py b/main/xiaozhi-server/core/handle/intentHandler.py index c9cfeeb0..1cae8bab 100644 --- a/main/xiaozhi-server/core/handle/intentHandler.py +++ b/main/xiaozhi-server/core/handle/intentHandler.py @@ -112,7 +112,7 @@ async def process_intent_result(conn, intent_result, original_text): elif result.action == Action.REQLLM: # 调用函数后再请求llm生成回复 text = result.result conn.dialogue.put(Message(role="tool", content=text)) - llm_result = conn.intent.replyResult(text) + llm_result = conn.intent.replyResult(text, original_text) if llm_result is None: llm_result = text speak_and_play(conn, llm_result) diff --git a/main/xiaozhi-server/core/providers/intent/intent_llm/intent_llm.py b/main/xiaozhi-server/core/providers/intent/intent_llm/intent_llm.py index 2398ca9a..b847ac73 100644 --- a/main/xiaozhi-server/core/providers/intent/intent_llm/intent_llm.py +++ b/main/xiaozhi-server/core/providers/intent/intent_llm/intent_llm.py @@ -105,10 +105,11 @@ class IntentProvider(IntentProviderBase): for key, _ in sorted_items[: len(sorted_items) - self.cache_max_size]: del self.intent_cache[key] - def replyResult(self, text: str): + def replyResult(self, text: str, original_text: str): llm_result = self.llm.response_no_stream( system_prompt=text, - user_prompt="请总结以上内容,像人类一样说话的口吻回复用户,要求简洁,请直接返回结果。", + user_prompt="请根据以上内容,像人类一样说话的口吻回复用户,要求简洁,请直接返回结果。用户现在说:" + + original_text, ) return llm_result