AI代理长期记忆的SQLite实现

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

LTM-AI-Agent通过集成持久性记忆解决了这一局限性,使其能够回忆过去互动并保持对话的连续性。

架构概述

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

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