File size: 1,552 Bytes
d9e62f5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import random
from src.data_ingestion import DataIngestion
from src.RAG import RetrievalModule
from src.AI_agent import ResearchAgent
from src.logger import logger

class ResearchBuddyPipeline:
    def __init__(self, config):
        self.config = config
        self.ingestor = DataIngestion(self.config["api_url"])
        self.retriever = RetrievalModule(self.config["embedding_model"], self.config["persist_dir"])
        self.agent = ResearchAgent(self.config["summarizer_model"])
        self.openers = [
            "Hold my coffee, I’m diving into this!",
            "Time to unleash my inner paper monster!",
            "Buckle up, we’re raiding the research jungle!",
            "Let’s crank this up to eleven—here we go!"
        ]

    def process_query(self, topic, query):
        opener = random.choice(self.openers)
        logger.info(f"Processing query for topic: {topic}")

        titles, abstracts = self.ingestor.fetch_papers(topic, self.config["max_results"])
        if not abstracts:
            return f"{opener}\n\nNo research found for '{topic}'. Try a different topic?"
        
        summaries = self.agent.summarize_papers(abstracts)
        self.retriever.build_vector_store(summaries)
        relevant_papers = self.retriever.retrieve_relevant(query, k=self.config["top_k"])

        if not relevant_papers:
            return f"{opener}\n\nNo relevant results for '{query}'. Try refining your query?"
        
        return f"{opener}\n\n" + self.agent.chat_response(None, relevant_papers, topic, query)