BirdScopeAI / tests /test_agent_cache.py
facemelter's picture
Initial commit to hf space for hackathon
ff0e97f verified
import asyncio
import os
import sys
from pathlib import Path
from dotenv import load_dotenv
# Add parent directory to sys.path so we can import ebird_tools
parent_dir = Path(__file__).parent.parent
sys.path.insert(0, str(parent_dir))
from langgraph_agent import AgentFactory
from agent_cache import get_or_create_agent, get_cache_stats
async def test_cache():
# Test data
session_id = "test_session_123"
openai_key = os.environ.get("OPENAI_API_KEY")
# Check for API key (similar to main app)
if not openai_key:
print("❌ OPENAI_API_KEY environment variable not set!")
print("Please set your OpenAI API key to run this test.")
print("Example: export OPENAI_API_KEY='sk-your-key-here'")
return
print("="*50)
print("[TEST 1]: Create agent (cache miss)")
print("="*50)
agent1 = await get_or_create_agent(
session_id=session_id,
provider="openai",
api_key=openai_key,
model="gpt-4o-mini",
mode="Specialized Subagents (3 Specialists)",
agent_factory_method=lambda: AgentFactory.create_subagent_orchestrator(
model="gpt-4o-mini",
api_key=openai_key,
provider="openai",
mode="Specialized Subagents (3 Specialists)"
)
)
print(f"\nCache stats: {get_cache_stats()}")
print("\n"+"="*50)
print("[TEST 2: Get same agent (cache hit)")
print("="*50)
agent2 = await get_or_create_agent(
session_id=session_id,
provider="openai",
api_key=openai_key,
model="gpt-4o-mini",
mode="Specialized Subagents (3 Specialists)",
agent_factory_method=lambda: AgentFactory.create_subagent_orchestrator(
model="gpt-4o-mini",
api_key=openai_key,
provider="openai",
mode="Specialized Subagents (3 Specialists)"
)
)
print(f"\nCache stats: {get_cache_stats()}")
# Verify they're the same object
print(f"\nSame agent object? {agent1 is agent2}")
print("\n"+"="*50)
print("[TEST 3]: Different session (cache miss)")
print("=" * 50)
agent3 = await get_or_create_agent(
session_id="different_session_456",
provider="openai",
api_key=openai_key,
model="gpt-4o-mini",
mode="Specialized Subagents (3 Specialists)",
agent_factory_method=lambda: AgentFactory.create_subagent_orchestrator(
model="gpt-4o-mini",
api_key=openai_key,
provider="openai",
mode="Specialized Subagents (3 Specialists)"
)
)
print(f"\nCache stats: {get_cache_stats()}")
asyncio.run(test_cache())