File size: 2,635 Bytes
ea1e6bd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
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())