liurenchaxin/tools/memory_bank/detailed_memory_bank_info.py

150 lines
5.5 KiB
Python
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
"""
详细查看和测试Vertex AI Memory Bank功能
"""
import sys
import os
import asyncio
import json
from datetime import datetime
sys.path.append('src')
from jixia.memory.factory import get_memory_backend
from config.doppler_config import get_google_genai_config
async def test_memory_bank_functionality():
print("🧠 详细测试Memory Bank功能")
print("=" * 60)
# 获取配置
config = get_google_genai_config()
project_id = config.get('project_id')
location = config.get('location', 'us-central1')
print(f"📊 项目ID: {project_id}")
print(f"📍 位置: {location}")
print(f"🕐 测试时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
print()
try:
# 获取Memory Bank后端
memory_backend = get_memory_backend()
print(f"✅ Memory Bank后端: {type(memory_backend).__name__}")
print()
# 选择一个智能体进行详细测试
test_agent = "lvdongbin"
print(f"🧙‍♂️ 测试智能体: {test_agent} (吕洞宾)")
print("-" * 40)
# 1. 创建/获取Memory Bank
print("1⃣ 创建Memory Bank...")
memory_bank_id = await memory_backend.create_memory_bank(
agent_name=test_agent,
display_name=f"测试Memory Bank - {test_agent}"
)
print(f" ✅ Memory Bank ID: {memory_bank_id}")
print()
# 2. 添加不同类型的记忆
print("2⃣ 添加测试记忆...")
# 添加对话记忆
conversation_memory = await memory_backend.add_memory(
agent_name=test_agent,
content="在关于AI伦理的辩论中我强调了技术发展应该以人为本不能忽视道德考量。",
memory_type="conversation",
debate_topic="AI伦理与技术发展",
metadata={"opponent": "铁拐李", "stance": "支持伦理优先"}
)
print(f" 📝 对话记忆: {conversation_memory}")
# 添加偏好记忆
preference_memory = await memory_backend.add_memory(
agent_name=test_agent,
content="我偏好使用古典哲学的智慧来论证现代问题,特别是道家思想。",
memory_type="preference",
metadata={"philosophy": "道家", "style": "古典智慧"}
)
print(f" ⚙️ 偏好记忆: {preference_memory}")
# 添加知识记忆
knowledge_memory = await memory_backend.add_memory(
agent_name=test_agent,
content="区块链技术的核心是去中心化和不可篡改性,这与道家'无为而治'的理念有相通之处。",
memory_type="knowledge",
debate_topic="区块链技术应用",
metadata={"domain": "技术", "connection": "哲学"}
)
print(f" 📚 知识记忆: {knowledge_memory}")
# 添加策略记忆
strategy_memory = await memory_backend.add_memory(
agent_name=test_agent,
content="在辩论中,当对手使用激进论点时,我会用温和的反问来引导思考,而不是直接对抗。",
memory_type="strategy",
metadata={"tactic": "温和引导", "effectiveness": ""}
)
print(f" 🎯 策略记忆: {strategy_memory}")
print()
# 3. 测试记忆搜索
print("3⃣ 测试记忆搜索...")
# 搜索关于AI的记忆
ai_memories = await memory_backend.search_memories(
agent_name=test_agent,
query="AI 人工智能 伦理",
limit=5
)
print(f" 🔍 搜索'AI 人工智能 伦理': 找到 {len(ai_memories)} 条记忆")
for i, memory in enumerate(ai_memories, 1):
print(f" {i}. {memory.get('content', '')[:50]}...")
print()
# 搜索策略相关记忆
strategy_memories = await memory_backend.search_memories(
agent_name=test_agent,
query="辩论 策略",
memory_type="strategy",
limit=3
)
print(f" 🎯 搜索策略记忆: 找到 {len(strategy_memories)} 条记忆")
for i, memory in enumerate(strategy_memories, 1):
print(f" {i}. {memory.get('content', '')[:50]}...")
print()
# 4. 获取智能体上下文
print("4⃣ 获取智能体上下文...")
context = await memory_backend.get_agent_context(
agent_name=test_agent,
debate_topic="AI伦理与技术发展"
)
print(f" 📋 上下文长度: {len(context)} 字符")
print(f" 📋 上下文预览: {context[:200]}...")
print()
# 5. 显示所有记忆类型的统计
print("5⃣ 记忆统计...")
memory_types = ["conversation", "preference", "knowledge", "strategy"]
for mem_type in memory_types:
memories = await memory_backend.search_memories(
agent_name=test_agent,
query="",
memory_type=mem_type,
limit=100
)
print(f" 📊 {mem_type}: {len(memories)} 条记忆")
print()
print("🎉 Memory Bank功能测试完成!")
print("=" * 60)
except Exception as e:
print(f"❌ 测试失败: {e}")
import traceback
traceback.print_exc()
if __name__ == "__main__":
asyncio.run(test_memory_bank_functionality())