Spaces:
Sleeping
Sleeping
File size: 3,299 Bytes
4a27de3 a008b1a 9a1b773 4a27de3 8534dd6 a008b1a 4a27de3 4583ebb 8534dd6 4a27de3 8534dd6 4a27de3 4583ebb 8534dd6 4a27de3 8534dd6 4a27de3 8534dd6 4a27de3 8534dd6 4a27de3 3bcf0cc 4a27de3 8534dd6 4a27de3 8534dd6 4a27de3 8534dd6 4a27de3 a008b1a |
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 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
import requests
from dotenv import load_dotenv
from typing import Optional
from brave_ai import BraveAIWrapper
import os
# Load environment variables from .env file
load_dotenv()
# Get API keys from environment variables
YOU_COM_API_KEY = os.getenv("YOU_API_KEY")
TAVILY_API_KEY = os.getenv("TAVILY_API_KEY")
PERPLEXITY_API_KEY = os.getenv("PPLX_API_KEY")
BRAVE_API_KEY = os.getenv("BRAVE_AI_API_KEY")
def query_you_com(query):
headers = {"X-API-Key": YOU_COM_API_KEY}
params = {"query": query}
try:
response = requests.get(
"https://api.ydc-index.io/rag", # Verify the correctness of the API endpoint
params=params,
headers=headers,
)
response.raise_for_status() # Raises an HTTPError if the response code was unsuccessful
resp = response.json()
return resp["answer"]
except requests.exceptions.HTTPError as http_err:
return f"HTTP error occurred: {http_err}"
except Exception as err:
return f"An error occurred: {err}"
def query_tavily(query):
payload = {
"api_key": TAVILY_API_KEY,
"query": query,
"search_depth": "basic",
"include_answer": True,
"include_images": False,
"include_raw_content": False,
"max_results": 1,
"include_domains": [],
"exclude_domains": [],
}
response = requests.post("https://api.tavily.com/search", json=payload)
if response.status_code == 200:
resp = response.json()
return resp["answer"]
else:
return f"Request failed with status code: {response.status_code}"
def query_perplexity(query):
url = "https://api.perplexity.ai/chat/completions"
headers = {
"Accept": "application/json",
"Content-Type": "application/json",
"Authorization": f"Bearer {PERPLEXITY_API_KEY}",
}
data = {
"model": "llama-3.1-sonar-small-128k-online",
"stream": False,
"max_tokens": 1024,
"frequency_penalty": 1,
"temperature": 0.0,
"messages": [
{"role": "system", "content": "Be precise and concise in your responses."},
{"role": "user", "content": query},
],
}
response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
result = response.json()
return result["choices"][0]["message"]["content"]
else:
return f"Request failed with status code: {response.status_code}"
def ProcessQuestion(question, model):
if model == "You.com":
return query_you_com(question)
elif model == "Tavily.com":
return query_tavily(question)
elif model == "Perplexity.ai":
return query_perplexity(question)
elif model == "Brave.com":
return query_brave(question)
else:
return "Model not supported"
def query_brave(query: str) -> Optional[str]:
"""
Get a summary for the given query using BraveAIWrapper.
Args:
query (str): The search query.
api_key (str): The API key for Brave Search.
Returns:
Optional[str]: Summarized result or None if an error occurs.
"""
brave_ai = BraveAIWrapper(api_key=BRAVE_API_KEY)
summary = brave_ai.get_and_summarize(query)
return summary |