
# 在智能体中集成记忆库
在智能体中集成记忆库，实现智能体与记忆库的快速对接。
#### 前提条件
- 已[创建记忆库](https://support.huaweicloud.com/highcode-agentarts/agentarts_10_017.html)，并获取记忆库的API Key。
- 已安装Python，且版本不低于3.10。
- 执行以下命令安装SDK（建议在Python虚拟环境中安装，以避免与系统包产生冲突）。
  ```
  # 安装依赖包
  apt install python3.12-venv
  # 创建并激活虚拟环境 (linux) 
  python3 -m venv venv
  source venv/bin/activate
  # 安装sdk
  pip install agentarts-sdk
  ```
  ![](https://support.huaweicloud.com/highcode-agentarts/public_sys-resources/note_3.0-zh-cn.png)
  - 执行pip install agentarts-sdk命令下载缓慢、超时可以更改为使用如下命令
    ```
    pip install agentarts-sdk -i https://repo.huaweicloud.com/repository/pypi/simple --trusted-host repo.huaweicloud.com
    ```
    
  
  - 如果系统缺少python3-venv包，导致无法创建虚拟环境，请按照命令回显提示安装python3-venv包。 ![](https://support.huaweicloud.com/highcode-agentarts/zh-cn_image_0000002568294810.png "点击放大")
    
    
 
#### 在智能体中集成记忆库
1. 登录[AgentArts智能体平台](https://console.huaweicloud.com/agentarts/#/home/overview)。

2. 在左侧导航栏选择"开发中心 \> 组件库 "，单击"记忆库"页签，进入记忆库界面。

3. [创建记忆库](https://support.huaweicloud.com/highcode-agentarts/agentarts_10_017.html)后，复制或下载API Key并妥善保存，用于后续访问记忆库。
4. 获取记忆库ID (对应space_id)。 
   图1获取记忆库ID   
   ![](https://support.huaweicloud.com/highcode-agentarts/zh-cn_image_0000002543363580.png "点击放大")
   
   
5. 配置环境变量。 
   ```
   # 通过 console 创建记忆库后，可以进行记忆操作。
   # 首先需要配置 API Key，配置方式：
   # 方式一：环境变量配置,若不传入,SDK会尝试从环境变量中获取apikey
   export HUAWEICLOUD_SDK_MEMORY_API_KEY="your-memory-api-key"
   # 方式二：代码中直接传入
   from agentarts.sdk.memory import MemoryClient
   client = MemoryClient(api_key="your-memory-api-key")
   其次可以配置访问端点
   export AGENTARTS_MEMORY_DATA_ENDPOINT="https://{memory_endpoint}"
   endpoint为基本信息内展示的公网域名、公网ip、私网ip或私网访问域名
   例如：
   export AGENTARTS_MEMORY_DATA_ENDPOINT = "https://memory-{space_id}.cn-southwest-2.huaweicloud-agentarts.com"
   也可通过配置region信息, SDK会自行拼接如下域名"https://memory.{region_name}.huaweicloud-agentarts.com"
   client = MemoryClient(region_name="cn-southwest-2")
   ```
   
   

6. 使用客户端集成记忆库。 
   1. 在项目目录中创建test.py文件。
   
   2. 复制如下代码示例至test.py文件，代码示例仅针对创建记忆库时内置策略选择为summary，请将 "space_id" 和"api_key"替换为实际使用的值。
      ```
      import time
      from agentarts.sdk.memory import MemoryClient
      from agentarts.sdk.memory.inner.config import TextMessage
      def client_mode_example():
          """Client 模式完整示例（假设已通过Console创建记忆库，并获取spaceId和api-key） 本示例仅作使用参考"""
          space_id = "your_space_id" # 使用页面上复制的记忆库ID
          api_key = "your_api_key" # 使用保存的apikey值
          with MemoryClient(api_key=api_key) as client:
              # 1. 创建会话
              print("\ncreate session...")
              session_data = client.create_memory_session(
                  space_id=space_id,
                  actor_id="user-001",
                  assistant_id="assistant-001"
              )
              session_id = session_data.id
              print(f"Session ID: {session_id}")
              # 2. 添加消息
              print("\nadd chat message...")
              messages = [
                  TextMessage(
                      role="user",
                      content="你好，我想了解机器学习的基础知识",
                      actor_id="user-001"
                  ),
                  TextMessage(
                      role="assistant",
                      content="机器学习是人工智能的一个分支，主要研究如何让计算机从数据中学习规律。",
                      actor_id="assistant-001"
                  )
              ]
              client.add_messages(
                  space_id=space_id,
                  session_id=session_id,
                  messages=messages
              )
              print("add message succeed")
              # 3. 等待记忆生成
              print("\nwait for memory...")
              time.sleep(90)
              # 4. 查询记忆
              print("\nsearch  memory list...")
              memories = client.list_memories(space_id=space_id, limit=10)
              print(f"find {len(memories.items)} memories")
              # 5. 搜索记忆
              print("\nsearch memories...")
              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"find {len(search_results.results)} memories")
              return space_id, session_id
      if __name__ == "__main__":
          client_mode_example()
      ```
      
   
   
   
   3. 执行如下Python命令： **python3 test.py**
      
   
   4. 根据打印日志检查执行结果。
   
   
   
   
 
