Spaces:
Running
Running
| """ | |
| Main entry point for LangGraph bird classification agents. | |
| """ | |
| import asyncio | |
| import sys | |
| from typing import Optional | |
| from .config import AgentConfig | |
| from .agents import AgentFactory | |
| async def run_classifier_demo(image_url: Optional[str] = None): | |
| """Run basic classifier demo""" | |
| AgentConfig.print_config() | |
| # Create agent | |
| agent = await AgentFactory.create_classifier_agent() | |
| # Default test URL if none provided | |
| if not image_url: | |
| image_url = "https://images.unsplash.com/photo-1445820200644-69f87d946277?w=400" | |
| print("="*70) | |
| print("Testing bird classification...") | |
| print(f"[IMAGE URL]: {image_url}\n") | |
| # Invoke agent | |
| result = await agent.ainvoke({ | |
| "messages": [{ | |
| "role": "user", | |
| "content": f"What bird species is this? {image_url}" | |
| }] | |
| }) | |
| # Print result | |
| print("\n[AGENT RESPONSE]:") | |
| print(result["messages"][-1].content) | |
| print("\n[DEMO COMPLETE!]\n") | |
| async def run_interactive_chat(): | |
| """Run interactive chat with agent.""" | |
| print("\n"+"="*70) | |
| print("Bird Classification Agent - Interactive Mode") | |
| print("="*70) | |
| print("Commands:") | |
| print(". - Type 'quit' or 'exit' to end session") | |
| print(" - Paste image URLs to classify birds") | |
| print(". - Ask about bird locations, sightings, hotspots") | |
| print("="*70+"\n") | |
| # Create multi-server agent with memory | |
| agent = await AgentFactory.create_multi_server_agent(with_memory=True) | |
| # Thread ID for conversation memory | |
| config = {"configurable": {"thread_id": "interactive_session"}} | |
| while True: | |
| try: | |
| user_input = input("\nYou: ").strip() | |
| if user_input.lower() in ['quit', 'exit', 'q']: | |
| print("\nGoodbye! Happy birding!\n") | |
| break | |
| if not user_input: | |
| continue | |
| # Invoke agent | |
| result = await agent.ainvoke( | |
| {"messages": [{"role": "user", "content": user_input}]}, | |
| config | |
| ) | |
| # Print response | |
| print(f"\nAgent: {result['messages'][-1].content}") | |
| except KeyboardInterrupt: | |
| print("\nGoodbye! Happy birding!\n") | |
| break | |
| except Exception as e: | |
| print(f"\n[ERROR]: {e}") | |
| def main(): | |
| """Main entry point""" | |
| if len(sys.argv) > 1: | |
| command = sys.argv[1] | |
| if command == "interactive": | |
| asyncio.run(run_interactive_chat()) | |
| elif command == "demo": | |
| url = sys.argv[2] if len(sys.argv) > 2 else None | |
| asyncio.run(run_classifier_demo(url)) | |
| else: | |
| print(f"Unknown command: {command}") | |
| print("Usage:") | |
| print(" python -m langgraph_agent demo [url]") | |
| print(" python -m langgraph_agent interactive") | |
| else: | |
| # Default: run demo | |
| asyncio.run(run_classifier_demo()) | |
| if __name__ == "__main__": | |
| main() |