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
汇智网翻译整理,转载请标明出处