From 1108011e7905c61a562edc6aabc11504ae697a77 Mon Sep 17 00:00:00 2001 From: HuangHai <10402852@qq.com> Date: Sun, 7 Sep 2025 08:00:15 +0800 Subject: [PATCH] 'commit' --- dsLightRag/Volcengine/DropIndex.py | 56 ----------------- dsLightRag/Volcengine/T1_DropIndex.py | 38 ++++++++++++ dsLightRag/Volcengine/T2_CreateIndex.py | 57 ++++++++++++++++++ .../Volcengine/VikingDBMemoryService.py | 2 +- .../VikingDBMemoryService.cpython-310.pyc | Bin 9746 -> 9744 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 146 bytes .../__pycache__/chat.cpython-310.pyc | Bin 0 -> 5197 bytes dsLightRag/Volcengine/chat.py | 42 ++++++++++++- 8 files changed, 136 insertions(+), 59 deletions(-) delete mode 100644 dsLightRag/Volcengine/DropIndex.py create mode 100644 dsLightRag/Volcengine/T1_DropIndex.py create mode 100644 dsLightRag/Volcengine/T2_CreateIndex.py create mode 100644 dsLightRag/Volcengine/__pycache__/__init__.cpython-310.pyc create mode 100644 dsLightRag/Volcengine/__pycache__/chat.cpython-310.pyc diff --git a/dsLightRag/Volcengine/DropIndex.py b/dsLightRag/Volcengine/DropIndex.py deleted file mode 100644 index 6274343b..00000000 --- a/dsLightRag/Volcengine/DropIndex.py +++ /dev/null @@ -1,56 +0,0 @@ -import json -import requests -from volcengine.base.Request import Request -from volcengine.Credentials import Credentials -from volcengine.auth.SignerV4 import SignerV4 - -from Config.Config import VOLC_ACCESSKEY, VOLC_SECRETKEY - -AK = VOLC_ACCESSKEY -SK = VOLC_SECRETKEY -Domain = "api-knowledgebase.mlp.cn-beijing.volces.com" - -def prepare_request(method, path, ak, sk, data=None): - r = Request() - r.set_shema("http") # 注意这里是 http - r.set_method(method) - r.set_host(Domain) - r.set_path(path) - - if data is not None: - r.set_body(json.dumps(data)) - - # 使用 air 服务和 cn-north-1 区域 - credentials = Credentials(ak, sk, 'air', 'cn-north-1') - SignerV4.sign(r, credentials) - return r - -def internal_request(method, api, payload, params=None): - req = prepare_request( - method=method, - path=api, - ak=AK, - sk=SK, - data=payload - ) - - r = requests.request( - method=req.method, - url="{}://{}{}".format(req.schema, req.host, req.path), - headers=req.headers, - data=req.body, - params=params, - ) - return r - -# 删除记忆库 -path = "/api/memory/collection/delete" -payload = { - "CollectionName": "emotional_support" -} -rsp = internal_request("POST", path, payload) -print(rsp.json()) -if rsp.status_code == 200: - print("记忆库删除成功:", rsp.json()) -else: - print("错误:", rsp.status_code, rsp.text) \ No newline at end of file diff --git a/dsLightRag/Volcengine/T1_DropIndex.py b/dsLightRag/Volcengine/T1_DropIndex.py new file mode 100644 index 00000000..88060a51 --- /dev/null +++ b/dsLightRag/Volcengine/T1_DropIndex.py @@ -0,0 +1,38 @@ +import json +from VikingDBMemoryService import VikingDBMemoryService +from Config.Config import VOLC_ACCESSKEY, VOLC_SECRETKEY + +def drop_existing_collection(collection_name): + # 初始化记忆库服务 + memory_service = VikingDBMemoryService( + ak=VOLC_ACCESSKEY, + sk=VOLC_SECRETKEY, + host="api-knowledgebase.mlp.cn-beijing.volces.com", + region="cn-beijing" + ) + + try: + # 检查集合是否存在 + print(f"正在检查集合 '{collection_name}'...") + memory_service.get_collection(collection_name) + print(f"集合 '{collection_name}' 已存在,准备删除...") + + # 删除集合 + response = memory_service.drop_collection(collection_name) + print(f"删除响应: {json.dumps(response, ensure_ascii=False, indent=2)}") + print(f"集合 '{collection_name}' 删除成功") + return True + + except Exception as e: + error_msg = str(e) + if "collection not exist" in error_msg: + print(f"集合 '{collection_name}' 不存在,无需删除") + return False + else: + print(f"操作失败: {error_msg}") + raise + +if __name__ == "__main__": + # 可修改为目标集合名称 + TARGET_COLLECTION = "emotional_support" + drop_existing_collection(TARGET_COLLECTION) \ No newline at end of file diff --git a/dsLightRag/Volcengine/T2_CreateIndex.py b/dsLightRag/Volcengine/T2_CreateIndex.py new file mode 100644 index 00000000..e8e558c1 --- /dev/null +++ b/dsLightRag/Volcengine/T2_CreateIndex.py @@ -0,0 +1,57 @@ +import json + +from Config.Config import VOLC_ACCESSKEY, VOLC_SECRETKEY +from VikingDBMemoryService import VikingDBMemoryService +from Volcengine.chat import wait_for_collection_ready + + +def create_memory_collection(collection_name, description="情感陪伴记忆库"): + # 初始化记忆库服务 + memory_service = VikingDBMemoryService( + ak=VOLC_ACCESSKEY, + sk=VOLC_SECRETKEY, + host="api-knowledgebase.mlp.cn-beijing.volces.com", + region="cn-beijing" + ) + + try: + # 检查集合是否已存在 + print(f"正在检查集合 '{collection_name}'...") + memory_service.get_collection(collection_name) + print(f"集合 '{collection_name}' 已存在,无需重复创建") + return False + + except Exception as e: + if "collection not exist" not in str(e): + print(f"检查集合时发生错误: {str(e)}") + raise + + # 创建新集合 + print(f"开始创建集合 '{collection_name}'...") + try: + response = memory_service.create_collection( + collection_name=collection_name, + description=description, + builtin_event_types=["sys_event_v1", "sys_profile_collect_v1"], + builtin_entity_types=["sys_profile_v1"] + ) + print(f"创建响应: {json.dumps(response, ensure_ascii=False, indent=2)}") + print(f"集合 '{collection_name}' 创建成功") + + # 等待集合就绪 + print("等待集合初始化完成...") + if wait_for_collection_ready(memory_service, collection_name): + print(f"集合 '{collection_name}' 已就绪,可以开始使用") + return True + else: + print(f"集合 '{collection_name}' 初始化超时") + return False + + except Exception as e: + print(f"创建集合失败: {str(e)}") + raise + +if __name__ == "__main__": + # 可修改为目标集合名称 + TARGET_COLLECTION = "emotional_support" + create_memory_collection(TARGET_COLLECTION) \ No newline at end of file diff --git a/dsLightRag/Volcengine/VikingDBMemoryService.py b/dsLightRag/Volcengine/VikingDBMemoryService.py index 619233fa..549b074d 100644 --- a/dsLightRag/Volcengine/VikingDBMemoryService.py +++ b/dsLightRag/Volcengine/VikingDBMemoryService.py @@ -73,7 +73,7 @@ def search_relevant_memories(memory_service, collection_name, user_id, query, li while True: try: filter_params = { - "user_id": [user_id], + "user_id": user_id, # 修正为字符串类型 "memory_type": ["sys_event_v1", "sys_profile_v1"] } response = memory_service.search_memory( diff --git a/dsLightRag/Volcengine/__pycache__/VikingDBMemoryService.cpython-310.pyc b/dsLightRag/Volcengine/__pycache__/VikingDBMemoryService.cpython-310.pyc index 17662bf7c7b2ecdc7b814fcd2f634224f734fe88..2c87295cec91e7a21e471a55c03753d7fa0162c0 100644 GIT binary patch delta 2127 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 Mfs89=0un3?0Qfc``Tzg` literal 0 HcmV?d00001 diff --git a/dsLightRag/Volcengine/__pycache__/chat.cpython-310.pyc b/dsLightRag/Volcengine/__pycache__/chat.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c55090d37f87f8a4dc4eb555b4db602d8b354b1b GIT binary patch literal 5197 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 GbN>T&0ScY~ literal 0 HcmV?d00001 diff --git a/dsLightRag/Volcengine/chat.py b/dsLightRag/Volcengine/chat.py index e30f992c..0c5b1fed 100644 --- a/dsLightRag/Volcengine/chat.py +++ b/dsLightRag/Volcengine/chat.py @@ -84,11 +84,44 @@ def setup_memory_collection(collection_name="emotional_support"): memory_service, _ = initialize_services() ensure_collection_exists(memory_service, collection_name) print(f"记忆体 '{collection_name}' 创建/验证成功") - return memory_service + + # 添加集合就绪等待 + print("等待集合准备就绪...") + if wait_for_collection_ready(memory_service, collection_name): + print(f"集合 '{collection_name}' 已就绪") + return memory_service + else: + print(f"集合 '{collection_name}' 未能就绪") + return None except Exception as e: print(f"记忆体创建失败: {e}") return None +def wait_for_collection_ready(memory_service, collection_name, timeout=300, interval=10): + """ + 等待集合准备就绪 + :param memory_service: 记忆库服务实例 + :param collection_name: 集合名称 + :param timeout: 超时时间(秒) + :param interval: 检查间隔(秒) + :return: True if ready, False if timeout + """ + start_time = time.time() + while time.time() - start_time < timeout: + try: + collection_info = memory_service.get_collection(collection_name) + # 根据Volcengine API文档,状态可能在Status字段中,值可能为"READY"、"CREATING"等 + status = collection_info.get("Status", "UNKNOWN") + print(f"集合 '{collection_name}' 当前状态: {status}") + if status == "READY": + return True + time.sleep(interval) + except Exception as e: + print(f"检查集合状态失败: {e}") + time.sleep(interval) + print(f"集合 '{collection_name}' 在{timeout}秒内未就绪") + return False + def main(): print("开始端到端记忆测试...") collection_name="emotional_support" @@ -139,4 +172,9 @@ def main(): if __name__ == "__main__": setup_memory_collection() -# main() \ No newline at end of file +# main() +""" +memory_service = setup_memory_collection() +if memory_service: + is_ready = wait_for_collection_ready(memory_service, "emotional_support") +""" \ No newline at end of file