import os import asyncio import httpx import nest_asyncio from dotenv import load_dotenv # Apply nested asyncio patch nest_asyncio.apply() # helper functions GEMINI_API_KEY="AIzaSyCUCivstFpC9pq_jMHMYdlPrmh9Bx97dFo" TAVILY_API_KEY="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" OPENAI_API_KEY="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" QDRANT_API_KEY="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhY2Nlc3MiOiJtIiwiZXhwIjoxNzUxMDUxNzg4fQ.I9J-K7OM0BtcNKgj2d4uVM8QYAHYfFCVAyP4rlZkK2E" QDRANT_URL="https://6a3aade6-e8ad-4a6c-a579-21f5af90b7e8.us-east4-0.gcp.cloud.qdrant.io" OPENAI_API_KEY="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" WEAVIATE_URL="yorcqe2sqswhcaivxvt9a.c0.us-west3.gcp.weaviate.cloud" WEAVIATE_API_KEY="d2d0VGdZQTBmdTFlOWdDZl9tT2h3WDVWd1NpT1dQWHdGK0xjR1hYeWxicUxHVnFRazRUSjY2VlRUVlkwPV92MjAw" DEEPINFRA_API_KEY="285LUJulGIprqT6hcPhiXtcrphU04FG4" DEEPINFRA_BASE_URL="https://api.deepinfra.com/v1/openai" # Try to import tavily with fallback try: from tavily import TavilyClient tavily_client = TavilyClient(api_key=TAVILY_API_KEY) TAVILY_AVAILABLE = True except ImportError: print("Warning: Tavily package not found. Web search will use fallback mode.") tavily_client = None TAVILY_AVAILABLE = False async def search_autism(query: str) -> dict: """Performs a web search for information about autism.""" if not TAVILY_AVAILABLE: print("Web search unavailable - tavily package not installed") return { "results": [], "answer": "Web search functionality is currently unavailable. Please ensure all dependencies are installed." } try: # Execute a search query using Tavily response = tavily_client.search( query=query, max_results=5, search_depth="advanced", topic="general", include_answer=True ) return { "results": response.get("results", []), "answer": response.get("answer", "") } except Exception as e: print(f"Search error: {str(e)}") return { "results": [], "answer": f"Unable to perform web search: {str(e)}" } # Test function for development async def main(): query = "autism symptoms and treatments" result = await search_autism(query) print("Search Results:") for res in result.get("results", []): print(f"- {res.get('title')} ({res.get('url')})") print("\nAnswer:") print(result.get("answer", "No answer provided.")) # Run the script if __name__ == "__main__": asyncio.run(main())