search-web-MCP-server / src /analyzer /openai_analyzer.py
Olaemad's picture
Add Searcher, Scraper and analyzer functionality with custom domain and site search tools
e94d3a9
from typing import List
from openai import OpenAI
from src.core.types import DEFAULT_OPENAI_ANALYZER, DEFAULT_SYSTEM_PROMPT, DEFAULT_USER_PROMPT
from src.models.analyzer_models import AnalyzerResult
from src.models.scrape_models import ScrapeResult
from src.core.interface.analyzer_interface import AnalyzerInterface
class OpenaiAnalyzer(AnalyzerInterface):
def __init__(self, api_key, model_name = DEFAULT_OPENAI_ANALYZER):
self.client = OpenAI(api_key=api_key)
self.model_name = model_name
def analyze_search_result(self, query: str, search_results: List[ScrapeResult]) -> AnalyzerResult:
"""
Analyzes the provided search results based on the given query.
Args:
query (str): The search query string.
search_results (List[ScrapeResult]): A list of search results to be analyzed.
Returns:
AnalyzerResult: The result of the analysis.
Raises:
NotImplementedError: If the method is not implemented by a subclass.
"""
try:
user_prompt = DEFAULT_USER_PROMPT.replace("query", query).replace("scrape_results", f"{search_results}")
completion = self.client.beta.chat.completions.parse(model=self.model_name,
messages=[
{
"role": "system",
"content": DEFAULT_SYSTEM_PROMPT
},
{
"role": "user",
"content": user_prompt
}
],
response_format=AnalyzerResult)
response = completion.choices[0].message.parsed
return response
except Exception as e:
raise Exception(f"Error while analyzing search result: {str(e)}")