| |
| """ |
| Debug script to test individual tools in isolation |
| """ |
|
|
| from src.agents.retrieval_agent import get_retrieval_tools, execute_tool_calls |
| from src.agents.execution_agent import get_execution_tools |
|
|
| def test_wikipedia_tool(): |
| """Test Wikipedia search tool directly""" |
| print("=" * 50) |
| print("Testing Wikipedia Tool") |
| print("=" * 50) |
| |
| tools = get_retrieval_tools() |
| wiki_tool = None |
| |
| for tool in tools: |
| if tool.name == "wiki_search": |
| wiki_tool = tool |
| break |
| |
| if wiki_tool: |
| try: |
| print("Found wiki_search tool") |
| result = wiki_tool.invoke({"input": "Albert Einstein"}) |
| print(f"Result: {result[:500]}...") |
| return True |
| except Exception as e: |
| print(f"Error: {e}") |
| return False |
| else: |
| print("wiki_search tool not found!") |
| return False |
|
|
| def test_web_search_tool(): |
| """Test web search tool directly""" |
| print("=" * 50) |
| print("Testing Web Search Tool") |
| print("=" * 50) |
| |
| tools = get_retrieval_tools() |
| web_tool = None |
| |
| for tool in tools: |
| if tool.name == "web_search": |
| web_tool = tool |
| break |
| |
| if web_tool: |
| try: |
| print("Found web_search tool") |
| result = web_tool.invoke({"input": "artificial intelligence news"}) |
| print(f"Result: {result[:500]}...") |
| return True |
| except Exception as e: |
| print(f"Error: {e}") |
| return False |
| else: |
| print("web_search tool not found!") |
| return False |
|
|
| def test_python_tool(): |
| """Test Python execution tool directly""" |
| print("=" * 50) |
| print("Testing Python Execution Tool") |
| print("=" * 50) |
| |
| tools = get_execution_tools() |
| python_tool = None |
| |
| for tool in tools: |
| if tool.name == "run_python": |
| python_tool = tool |
| break |
| |
| if python_tool: |
| try: |
| print("Found run_python tool") |
| code = """ |
| # Calculate first 5 Fibonacci numbers |
| def fibonacci(n): |
| if n <= 1: |
| return n |
| return fibonacci(n-1) + fibonacci(n-2) |
| |
| result = [fibonacci(i) for i in range(5)] |
| print("First 5 Fibonacci numbers:", result) |
| """ |
| result = python_tool.invoke({"input": code}) |
| print(f"Result: {result}") |
| return True |
| except Exception as e: |
| print(f"Error: {e}") |
| return False |
| else: |
| print("run_python tool not found!") |
| return False |
|
|
| def test_tool_calls_execution(): |
| """Test the tool call execution function""" |
| print("=" * 50) |
| print("Testing Tool Call Execution") |
| print("=" * 50) |
| |
| tools = get_retrieval_tools() |
| |
| |
| mock_tool_calls = [ |
| { |
| 'name': 'wiki_search', |
| 'args': {'input': 'Albert Einstein'}, |
| 'id': 'test_id_1' |
| } |
| ] |
| |
| try: |
| tool_messages = execute_tool_calls(mock_tool_calls, tools) |
| print(f"Tool execution successful: {len(tool_messages)} messages") |
| for msg in tool_messages: |
| print(f"Message type: {type(msg)}") |
| print(f"Content preview: {str(msg.content)[:200]}...") |
| return True |
| except Exception as e: |
| print(f"Error in tool execution: {e}") |
| import traceback |
| traceback.print_exc() |
| return False |
|
|
| if __name__ == "__main__": |
| print("Starting individual tool tests...") |
| |
| results = {} |
| results['wikipedia'] = test_wikipedia_tool() |
| results['web_search'] = test_web_search_tool() |
| results['python'] = test_python_tool() |
| results['tool_execution'] = test_tool_calls_execution() |
| |
| print("\n" + "=" * 50) |
| print("TEST RESULTS SUMMARY") |
| print("=" * 50) |
| for test_name, result in results.items(): |
| status = "✅ PASS" if result else "❌ FAIL" |
| print(f"{test_name}: {status}") |
| |
| if all(results.values()): |
| print("\n🎉 All tools are working correctly!") |
| else: |
| print("\n⚠️ Some tools have issues that need to be fixed.") |