File size: 2,603 Bytes
ff0e97f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
"""
Test suite for bird classifier agents.
"""
import asyncio
import sys
from pathlib import Path

# Add parent directory to path so imports work from any location
parent_dir = Path(__file__).parent.parent
if str(parent_dir) not in sys.path:
    sys.path.insert(0, str(parent_dir))

from langgraph_agent import AgentFactory


async def test_classifier_agent():
    """Test basic classifier agent with multiple images."""
    
    print("\n" + "="*70)
    print("Test Suite: Basic Classifier Agent")
    print("="*70 + "\n")
    
    # Create agent
    agent = await AgentFactory.create_classifier_agent()
    
    test_urls = [
        "https://images.unsplash.com/photo-1555169062-013468b47731?w=400",
        "https://images.unsplash.com/photo-1445820200644-69f87d946277?w=400",
    ]
    
    for i, url in enumerate(test_urls, 1):
        print(f"\n[TEST {i}/{len(test_urls)}]")
        print("="*70)
        
        result = await agent.ainvoke({
            "messages": [{
                "role": "user",
                "content": f"Classify the bird in this image: {url}"
            }]
        })
        
        print(f"\n[RESULT]: {result['messages'][-1].content}\n")
    
    print("\n[ALL TESTS COMPLETE!]\n")


async def test_multi_server_agent():
    """Test multi-server agent with classifier + eBird."""
    
    print("\n" + "="*70)
    print("Test Suite: Multi-Server Agent")
    print("="*70 + "\n")
    
    # Create agent with memory
    agent = await AgentFactory.create_multi_server_agent(with_memory=True)
    config = {"configurable": {"thread_id": "test_session"}}
    
    # Test 1: Classify bird
    print("\n[TEST 1]: Classify bird from URL")
    print("="*70)
    result1 = await agent.ainvoke({
        "messages": [{
            "role": "user",
            "content": "What bird is this? https://images.unsplash.com/photo-1555169062-013468b47731?w=400"
        }]
    }, config)
    print(f"\n[RESULT]: {result1['messages'][-1].content}\n")
    
    # Test 2: Ask follow-up (tests memory)
    print("\n[TEST 2]: Follow-up question (tests memory)")
    print("="*70)
    result2 = await agent.ainvoke({
        "messages": [{
            "role": "user",
            "content": "Where can I see this bird near Boston (42.36, -71.06)?"
        }]
    }, config)
    print(f"\n[RESULT]: {result2['messages'][-1].content}\n")
    
    print("\n[ALL TESTS COMPLETE!]\n")


if __name__ == "__main__":
    import sys
    
    if len(sys.argv) > 1 and sys.argv[1] == "multi":
        asyncio.run(test_multi_server_agent())
    else:
        asyncio.run(test_classifier_agent())