> ## Content Index
> Fetch the complete content index at: https://www.hubwiz.com/blog/llms.txt
> Use this file to discover other available public pages before exploring further.

# AI代理长期记忆的SQLite实现
- URL: https://www.hubwiz.com/blog/ai-agent-long-term-memory-implementation-using-sqlite/
- Published: 2025-02-28T22:18:19.000Z
- Updated: 2025-02-28T22:18:19.000Z
- Description: LTM-AI-Agent利用SQLite进行持久数据存储，并使用Pydantic AI进行结构化的对话处理。这种组合使系统能够存储用户互动、检索相关历史数据，并生成上下文适当的响应。
- Author: admin
- Tags: APPLICATION, AGENT, SQLITE, #Import 2026-10-14 14:41

在人工智能领域，保留和回忆过去的互动显著提升了用户体验和效率。传统的聊天机器人实时处理对话，但缺乏记忆保留功能，导致对话支离破碎。

[**LTM-AI-Agent**](https://github.com/JonathanJourney99/LTM-AI-Agent?ref=hubwiz.com)**通过集成持久性记忆**解决了这一局限性，使其能够回忆过去互动并保持对话的连续性。

> 架构概述

**LTM-AI-Agent** 利用**SQLite**进行**持久数据存储**，并使用**Pydantic AI**进行结构化的对话处理。这种组合使系统能够存储用户互动、检索相关历史数据，并生成上下文适当的响应。

核心功能：

- **持久性记忆**：使用**SQLite**跨多个会话存储和检索对话历史。
- **上下文感知**：通过将过去的讨论纳入回复中提高交互质量。
- **适应性学习**：保留用户偏好和关键细节以实现个性化互动。
- **高效查询**：高效检索存储的数据以保持流畅的对话流程。

## 1、使用 SQLite 进行数据库管理 

**LTM-AI-Agent** 使用**SQLite**持久存储对话历史。以下类处理数据库操作：

```
import sqlite3  
import json  
from typing import List  
from pydantic_ai.messages import ModelMessage

```

```
class SQLliteDB:  
    def __init__(self, db_name='conversation1.db'):  
        self.conn = sqlite3.connect(db_name)  
        self.create_table()  
          
    def create_table(self):  
        with self.conn:  
            self.conn.execute('''  
            CREATE TABLE IF NOT EXISTS conversation_history (  
                id INTEGER PRIMARY KEY AUTOINCREMENT,  
                session_id TEXT,  
                message_list TEXT,  
                timestamp DATETIME DEFAULT CURRENT_TIMESTAMP  
            )  
            ''')  
    def add_message(self, session_id: str, messages: str) -> None:  
        self.conn.execute("INSERT INTO conversation_history (session_id, message_list) VALUES (?,?)", (session_id, messages))  
        self.conn.commit()  
    def get_history(self, session_id: str) -> List[ModelMessage]:  
        cursor = self.conn.execute("SELECT message_list FROM conversation_history WHERE session_id=? ORDER BY timestamp DESC LIMIT 1", (session_id,))  
        messages = cursor.fetchall()  
        return [json.loads(msg[0]) for msg in messages] if messages else []

```

## 2、用于上下文处理的AI代理

AI代理使用**Pydantic AI**进行结构化消息处理和响应生成：

```
from pydantic_ai import Agent  
from pydantic_ai.messages import ModelMessage

```

```
def chat(session_id: str, message: str) -> ModelMessage:  
    history = db.get_history(session_id)  
    result = agent.run_sync(message, message_history=history)  
    db.add_message(session_id, json.dumps(result.all_messages_json()))  
    return result.data  
# 初始化代理  
agent = Agent('openai:gpt-3.5-turbo-0125', system_prompt='Be a helpful assistant and answer in a concise manner.')

```

## 3、测试AI代理

以下代码片段演示了与人工智能代理的示例对话：

```
# 初始化数据库和会话  
session_id = 'session_12'  
db = SQLliteDB()

```

```
# 示例测试  
print(chat(session_id=session_id, message='Who am I and what do I program?'))

```

## 4、评估AI记忆性能

**LTM-AI-Agent** 经过严格的测试以验证其记忆保留和上下文理解能力。以下是关键测试场景：

记忆回放演示：

> **用户：** 你好，我叫Alex。  
> **用户：** 我是一名软件工程师。  
> **AI：** 好的，Alex！你是一名软件工程师。  
> **用户：** 我的名字是什么？  
> **AI：** 你的名字是Alex。

具有上下文意识的对话：

> **用户：** 我有一只名叫Max的宠物狗。  
> **用户：** 告诉我关于我的宠物。  
> **AI：** 你有一只名叫Max的狗。

矛盾解决：

> **用户：** 实际上，我没有宠物。  
> **用户：** 我有宠物吗？  
> **AI：** 之前你提到有一只名叫Max的狗，但你最近说没有宠物。你想让我更新这个信息吗？

## 5、结束语

**LTM-AI-Agent** 标志着**AI驱动的对话智能**的重要进步。通过引入**长期记忆**，它促进了更**自然和有意义**的互动。

---

原文链接：[Long-Term Memory AI Agent](https://medium.com/@ijonathan.gomes/long-term-memory-ltm-ai-agent-7c9bcebd0874?ref=hubwiz.com)

汇智网翻译整理，转载请标明出处