memory sdk-j9九游会登录
场景介绍
agentrunsdk memory sdk提供两种使用模式:
- client模式:功能完整的客户端,适合需要控制所有操作的应用场景。
- session模式:基于绑定的会话进行记忆管理,适合特定用户/对话场景。
原理优势
- client模式完整案例
#!/usr/bin/env python3 """ client模式完整使用案例 创建space -> 创建session -> 发送message -> 查询memory -> 搜索memory """ import os import time from agentarts.sdk.memory import memoryclient from agentarts.sdk.memory.inner.config import textmessage # 确保环境变量已设置 assert os.getenv('huaweicloud_sdk_ak'), "请设置 huaweicloud_sdk_ak" assert os.getenv('huaweicloud_sdk_sk'), "请设置 huaweicloud_sdk_sk" def client_mode_example(): """client模式完整示例""" print("=== client模式完整示例 ===") # 1. 创建space with memoryclient() as client: print("1. 创建测试space") space = client.create_space( name=f"client_test_space_{int(time.time())}", message_ttl_hours=168, description="client模式测试专用空间", memory_strategies_builtin=["semantic", "user_preference", "episodic"] ) space_id = space.id print(f"✓ space创建成功: {space_id}") print(f" api key id: {space.api_key_id}") os.environ["huaweicloud_sdk_memory_api_key"] = space.api_key # 2. 创建会话 print("\n2. 创建会话") session_data = client.create_memory_session( space_id=space_id, actor_id="client-test-user", assistant_id="client-test-assistant" ) session_id = session_data.id print(f"✓ session创建成功: {session_id}") # 3. 发送消息(使用textmessage对象) print("\n3. 发送对话消息") messages = [ textmessage( role="user", content="你好,我想了解电商推荐算法,能够根据用户行为进行个性化推荐的算法有哪些?", actor_id="client-test-user" ), textmessage( role="assistant", content="电商推荐算法主要包括:1) 协同过滤算法,基于用户行为相似性推荐;2) 基于内容的推荐,分析商品特征;3) 深度学习算法,能更准确捕捉用户偏好。推荐组合使用多种算法提升准确率。", actor_id="client-test-assistant" ), textmessage( role="user", content="我对机器学习的监督学习特别感兴趣,深度学习和传统机器学习有什么区别?", actor_id="client-test-user" ) ] add_result = client.add_messages( space_id=space_id, session_id=session_id, messages=messages ) print(f"✓ 已添加 {len(add_result.items)} 条消息") # 4. 等待记忆系统处理消息 print("\n4. 等待记忆系统处理消息...") time.sleep(30) # 5. 列出记忆 print("\n5. 查询记忆列表") memories = client.list_memories( space_id=space_id, limit=10 ) print(f"✓ 发现 {len(memories.items)} 条记忆") for i, memory in enumerate(memories.items[:3]): print(f" {i 1}. {memory.content[:50]}...") print(f" 策略: {memory.strategy_type}") # 6. 搜索记忆(使用memorysearchfilter对象) print("\n6. 搜索相关记忆") from agentarts.sdk.memory.inner.config import memorysearchfilter search_results = client.search_memories( space_id=space_id, filters=memorysearchfilter(query="机器学习", top_k=3) ) print(f"✓ 找到 {len(search_results.results)} 条相关记忆") for i, result in enumerate(search_results.results): score = result.get('score', 0) content = result.get('record', {}).get('content', '')[:60] print(f" {i 1}. [{score:.2f}] {content}...") # 7. 获取特定记忆详情 if memories.items: print("\n7. 获取记忆详情") memory_id = memories.items[0].id memory_detail = client.get_memory(space_id, memory_id) print(f"✓ 记忆id: {memory_detail.id}") print(f" 内容: {memory_detail.content[:80]}...") print(f" 策略: {memory_detail.strategy_type}") return space_id, session_id if __name__ == "__main__": client_mode_example() - session模式完整案例
#!/usr/bin/env python3 """ session模式完整使用案例 创建space -> 绑定会话 -> 发送message -> 查询memory -> 搜索memory """ import os import time from agentarts.sdk.memory import memoryclient from agentarts.sdk.memory.session import memorysession from agentarts.sdk.memory.inner.config import textmessage # 确保环境变量已设置 assert os.getenv('huaweicloud_sdk_ak'), "请设置 huaweicloud_sdk_ak" assert os.getenv('huaweicloud_sdk_sk'), "请设置 huaweicloud_sdk_sk" def session_mode_example(): """session模式完整示例""" print("=== session模式完整示例 ===") # 1. 创建space with memoryclient() as client: print("1. 创建测试space") space = client.create_space( name=f"session-test-space-{int(time.time())}", message_ttl_hours=168, description="session模式测试专用空间", memory_strategies_builtin=["semantic", "user_preference", "episodic"] ) space_id = space.id print(f"✓ space创建成功: {space_id}") os.environ["huaweicloud_sdk_memory_api_key"] = space.api_key # 2. 创建并绑定会话 print("\n2. 创建并绑定会话") session_obj = memorysession( space_id=space_id, actor_id="session-test-user", assistant_id="session-test-assistant" ) session_id = session_obj.session_id print(f"✓ session创建并绑定成功: {session_id}") # 3. 发送对话消息(使用textmessage对象) print("\n3. 模拟用户与ai助手对话") messages = [ textmessage( role="user", content="我是一个数据分析师,主要使用python和sql进行数据处理" ), textmessage( role="assistant", content="数据分析师是很有前景的职业!python方面,pandas、numpy、matplotlib是核心库。" ), textmessage( role="user", content="我最感兴趣的是可视化和机器学习方向,有什么推荐的学习路径吗?" ), textmessage( role="assistant", content="可视化推荐学习matplotlib、seaborn、plotly;机器学习可以从scikit-learn入门,然后学习深度学习框架如tensorflow或pytorch。" ), textmessage( role="user", content="我对python数据分析很熟练,但机器学习经验还比较少,应该从哪里开始?" ) ] add_result = session_obj.add_messages(messages) print(f"✓ 已添加 {len(messages)} 条对话消息") # 4. 等待记忆系统处理 print("\n4. 等待记忆系统生成...") time.sleep(30) # 5. 查询消息(在绑定会话上下文中) print("\n5. 查询当前会话的消息") messages_response = session_obj.list_messages(limit=10) print(f"✓ 会话中有 {messages_response.total} 条消息") # 6. 获取会话中的记忆列表 print("\n6. 查看生成的记忆") memories = session_obj.list_memories(limit=10) memory_list = memories.items print(f"✓ 总共发现 {len(memory_list)} 条记忆") for i, memory in enumerate(memory_list): content = memory.content[:50] strategy = memory.strategy_type or 'unknown' print(f" {i 1}. [{strategy}] {content}...") # 7. 在会话上下文中搜索记忆(使用memorysearchfilter对象) print("\n7. 搜索python相关记忆") from agentarts.sdk.memory.inner.config import memorysearchfilter search_results = session_obj.search_memories( filters=memorysearchfilter(query="python", top_k=3) ) print(f"✓ 找到 {len(search_results.results)} 条相关记忆") for i, result in enumerate(search_results.results): score = result.get('score', 0) content = result.get('record', {}).get('content', '')[:60] print(f" {i 1}. [{score:.2f}] {content}...") # 8. 获取特定记忆详情 if memory_list: print("\n8. 获取第一条记忆详情") memory_id = memory_list[0].id memory_detail = session_obj.get_memory(memory_id) print(f"✓ 记忆id: {memory_detail.id}") print(f" 内容: {memory_detail.content[:80]}...") print(f" 策略: {memory_detail.strategy_type}") print(f" 来源策略: {memory_detail.strategy_id or 'n/a'}") return space_id, session_id if __name__ == "__main__": session_mode_example()
前提条件
认证鉴权:
- 华为云访问密钥,用于调用管理面创建space接口认证。获取华为云凭证请参考如何获取华为云ak/sk。
export huaweicloud_sdk_ak="你的ak" export huaweicloud_sdk_sk="你的sk"
- 创建space后,会返回apikey,可将其设置为环境变量,用于调用数据面接口认证。
export huaweicloud_sdk_memory_api_key="你的数据面api密钥"
也可以在代码中传入。
from agentarts.sdk.memory import memoryclient client = memoryclient(api_key="your-memory-api-key")
参数详解
认证信息
- 管理面(控制面):使用ak/sk认证,通过huaweicloud_sdk_ak和huaweicloud_sdk_sk环境变量。
- 数据面:使用api_key认证,sdk内部自动处理。
请求流程
- 使用ak/sk创建space(控制面)。
- sdk自动创建api key并返回api_key(仅创建时可见)和api_key_id。
- sdk内部自动使用api key进行数据面操作。
- 配置数据面访问端点(私网访问场景下,通过环境变量agentarts_memory_data_endpoint配置,例如https://memory-{space_id}.cn-southwest-2.huaweicloud-agentarts.com)。
类型化返回值
sdk使用类型化对象作为返回值,便于代码提示和类型检查:
| 返回类型 | 说明 | 重要属性 |
|---|---|---|
| spaceinfo | space信息 | id, name, api_key, api_key_id, status, created_at |
| spacelistresponse | space列表 | items (spaceinfo列表), total, limit, offset |
| sessioninfo | session信息 | id, space_id, actor_id, assistant_id, created_at |
| messageinfo | 消息信息 | id, session_id, role, parts, actor_id, created_at |
| messagelistresponse | 消息列表 | items (messageinfo列表), total, limit, offset |
| messagebatchresponse | 批量消息响应 | items (messageinfo列表) |
| memoryinfo | 记忆信息 | id, space_id, content, strategy_type, strategy_id, created_at |
| memorylistresponse | 记忆列表 | items (memoryinfo列表), total, limit, offset |
| memorysearchresponse | 搜索结果 | results (列表,含record和score), total, query |
类型化请求对象
sdk提供类型化的请求对象用于构建参数:
| 请求类型 | 用途 |
|---|---|
| textmessage | 文本消息,参数:role, content, actor_id, assistant_id |
| toolcallmessage | 工具调用消息,参数:id, name, arguments |
| toolresultmessage | 工具结果消息,参数:tool_call_id, content, asset_ref |
| memorysearchfilter | 记忆搜索过滤,参数:query, top_k, min_score等 |
| memorylistfilter | 记忆列表过滤,参数:strategy_type, actor_id, sort_by等 |
记忆使用建议
- 始终检查环境变量是否正确设置。
- 根据场景选择client或session模式。
- 理解记忆生成的延迟时间。
- 合理设置space的ttl时间。
- 及时清理测试数据。
相关文档
意见反馈
文档内容是否对您有帮助?
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨