web-research-agent / search_test.py
samspeaks5's picture
initial commit
d445f2a verified
import os
import sys
from dotenv import load_dotenv
from crewai_tools import BraveSearchTool
from tools import TavilySearchTool, RateLimitedToolWrapper, SearchRotationTool
# Load environment variables
load_dotenv()
def validate_api_keys():
"""Checks if required API keys are set"""
missing_keys = []
if not os.getenv("BRAVE_API_KEY"):
missing_keys.append("BRAVE_API_KEY")
if not os.getenv("TAVILY_API_KEY"):
missing_keys.append("TAVILY_API_KEY")
return missing_keys
def main():
# Check for API keys
missing_keys = validate_api_keys()
if missing_keys:
print(f"Error: Missing required API keys: {', '.join(missing_keys)}")
print("Please set these in your .env file.")
sys.exit(1)
# Initialize search tools
brave_search_tool = BraveSearchTool(
n_results=3,
save_file=False
)
tavily_search_tool = TavilySearchTool(
max_results=3,
search_depth="basic"
)
# Add rate limiting to each search tool
rate_limited_brave_search = RateLimitedToolWrapper(tool=brave_search_tool, delay=10) # Reduced delay for testing
rate_limited_tavily_search = RateLimitedToolWrapper(tool=tavily_search_tool, delay=10) # Reduced delay for testing
# Create the search rotation tool
search_rotation_tool = SearchRotationTool(
search_tools=[rate_limited_brave_search, rate_limited_tavily_search],
max_searches_per_query=5
)
# Get user query
if len(sys.argv) > 1:
query = " ".join(sys.argv[1:])
else:
query = input("Enter your search query: ")
# Perform searches
print(f"Searching for: '{query}'")
print("Will perform up to 5 searches using Brave and Tavily in rotation")
print("-" * 50)
# First search
result1 = search_rotation_tool.run(query)
print(result1)
print("\n" + "-" * 50)
# Modified query
modified_query = f"{query} recent news"
print(f"Searching for modified query: '{modified_query}'")
# Second search
result2 = search_rotation_tool.run(modified_query)
print(result2)
print("\n" + "-" * 50)
# Try exceeding the limit with multiple searches for the same query
print(f"Attempting additional searches for: '{query}'")
for i in range(4):
print(f"\nAttempt {i+1}:")
result = search_rotation_tool.run(query)
print(result)
print("-" * 50)
print("\nTest complete!")
if __name__ == "__main__":
main()