sanjeed5's picture
Update dependencies in pyproject.toml and requirements.txt, and add test_single_q.py for running single and all question tests. Introduce tools.py for Perplexity API integration with enhanced error handling and logging.
555dbe6
from openai import OpenAI
from smolagents import tool
import os
from dotenv import load_dotenv
load_dotenv()
PERPLEXITY_API_KEY = os.getenv("PERPLEXITY_API_KEY")
@tool
def perplexity_search_tool(query: str) -> str:
"""
Performs a web search using the Perplexity API and returns the result.
Args:
query: The search query.
Returns:
The search result from Perplexity API or an error message.
"""
if not PERPLEXITY_API_KEY:
return "Error: Perplexity API key not set. Please set the PERPLEXITY_API_KEY environment variable."
messages = [
{
"role": "system",
"content": (
"You are a helpful assistant"
),
},
{
"role": "user",
"content": query,
},
]
try:
client = OpenAI(api_key=PERPLEXITY_API_KEY, base_url="https://api.perplexity.ai")
response = client.chat.completions.create(
model="sonar-pro", # Using sonar-pro as per documentation
messages=messages,
)
# Assuming the main content is in the first choice's message
if response.choices and len(response.choices) > 0:
return response.choices[0].message.content
else:
return "Error: No response choices received from Perplexity API."
except Exception as e:
return f"Error calling Perplexity API: {str(e)}"
if __name__ == "__main__":
# Example usage:
# Make sure to set the PERPLEXITY_API_KEY environment variable before running directly
if PERPLEXITY_API_KEY:
search_query = "What are the latest advancements in AI?"
result = perplexity_search_tool(search_query)
print(f"Search query: {search_query}")
print(f"Result:\\n{result}")
search_query_stars = "How many stars are there in our galaxy?"
result_stars = perplexity_search_tool(search_query_stars)
print(f"Search query: {search_query_stars}")
print(f"Result:\\n{result_stars}")
else:
print("Please set the PERPLEXITY_API_KEY environment variable to test the tool.")