From 16ddf94806692d6544d0330e0487347631066fb7 Mon Sep 17 00:00:00 2001 From: HuangHai <10402852@qq.com> Date: Sun, 7 Sep 2025 07:50:07 +0800 Subject: [PATCH] 'commit' --- .../Volcengine/VikingDBMemoryService.py | 8 ++-- .../VikingDBMemoryService.cpython-310.pyc | Bin 6934 -> 9746 bytes dsLightRag/Volcengine/chat.py | 37 +++++++++++++++--- 3 files changed, 36 insertions(+), 9 deletions(-) diff --git a/dsLightRag/Volcengine/VikingDBMemoryService.py b/dsLightRag/Volcengine/VikingDBMemoryService.py index 9bb15294..619233fa 100644 --- a/dsLightRag/Volcengine/VikingDBMemoryService.py +++ b/dsLightRag/Volcengine/VikingDBMemoryService.py @@ -15,17 +15,19 @@ from volcengine.auth.SignerV4 import SignerV4 from volcengine.base.Service import Service from volcenginesdkarkruntime import Ark +from Config.Config import VOLC_SECRETKEY, VOLC_ACCESSKEY, VOLC_API_KEY + def initialize_services(ak=None, sk=None, ark_api_key=None): """初始化记忆数据库服务和LLM客户端""" load_dotenv() # 如果参数未提供,尝试从环境变量获取 if not ak: - ak = os.getenv("VOLC_ACCESSKEY") + ak = VOLC_ACCESSKEY if not sk: - sk = os.getenv("VOLC_SECRETKEY") + sk = VOLC_SECRETKEY if not ark_api_key: - ark_api_key = os.getenv("VOLC_API_KEY") + ark_api_key = VOLC_API_KEY if not all([ak, sk, ark_api_key]): raise ValueError("必须提供 VOLC_ACCESSKEY, VOLC_SECRETKEY, 和 VOLC_API_KEY。") diff --git a/dsLightRag/Volcengine/__pycache__/VikingDBMemoryService.cpython-310.pyc b/dsLightRag/Volcengine/__pycache__/VikingDBMemoryService.cpython-310.pyc index 92e57fa87de11eed72f3bfa090a5acfe698e9468..17662bf7c7b2ecdc7b814fcd2f634224f734fe88 100644 GIT binary patch delta 5093 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 GrvC+B^X>-# diff --git a/dsLightRag/Volcengine/chat.py b/dsLightRag/Volcengine/chat.py index 5e9eb541..e30f992c 100644 --- a/dsLightRag/Volcengine/chat.py +++ b/dsLightRag/Volcengine/chat.py @@ -1,5 +1,10 @@ +import os import time +from volcenginesdkarkruntime import Ark + +from Config.Config import VOLC_API_KEY + """ 在记忆库准备好后,我们先模拟一段包含两轮的完整对话。 对话结束后,把这段对话历史消息写入记忆库。然后再开启一个新话题,提出和刚才相关的问题, @@ -7,7 +12,9 @@ AI 就能用刚写入的记忆来回答。 注意:首次写入需要 3–5 分钟建立索引,这段时间内检索会报错。 """ import json +import time from VikingDBMemoryService import initialize_services, ensure_collection_exists, search_relevant_memories + def handle_conversation_turn(memory_service, llm_client, collection_name, user_id, user_message, conversation_history): """处理一轮对话,包括记忆搜索和LLM响应。""" print("\n" + "=" * 60) @@ -71,15 +78,32 @@ def archive_conversation(memory_service, collection_name, user_id, assistant_id, print(f"归档对话失败: {e}") return False +def setup_memory_collection(collection_name="emotional_support"): + """独立封装记忆体创建逻辑,返回memory_service供测试使用""" + try: + memory_service, _ = initialize_services() + ensure_collection_exists(memory_service, collection_name) + print(f"记忆体 '{collection_name}' 创建/验证成功") + return memory_service + except Exception as e: + print(f"记忆体创建失败: {e}") + return None + def main(): print("开始端到端记忆测试...") + collection_name="emotional_support" try: - memory_service, llm_client = initialize_services() - collection_name = "emotional_support" - user_id = "xiaoming" # 用户ID:小明 - assistant_id = "assistant1" # 助手ID:助手1 - ensure_collection_exists(memory_service, collection_name) + # 调用封装的记忆体创建函数 + memory_service = setup_memory_collection() + if not memory_service: + return + llm_client = Ark( + base_url="https://ark.cn-beijing.volces.com/api/v3", + api_key=VOLC_API_KEY + ) + user_id = "xiaoming" # 用户ID:小明 + assistant_id = "assistant1" # 助手ID:助手1 except Exception as e: print(f"初始化失败: {e}") return @@ -114,4 +138,5 @@ def main(): print("\n端到端记忆测试完成!") if __name__ == "__main__": - main() \ No newline at end of file + setup_memory_collection() +# main() \ No newline at end of file