from llm.gemini_client import GeminiClient from llm.wiki_agent import WikiSearchAgent SYSTEM_MESSAGE = """You are a Question Answering tool that can answer various trivia questions. However, you might be asked questions that is beyond your knowledge or recent events that you might not be trained on (beyond training cutoff). So, if there is Wikipedia page entry provided, use that to answer the question. Just return the answer, don't make a verbose response.""" class QnAAgent: def __init__(self): self._client = GeminiClient(system_message=SYSTEM_MESSAGE) self._wiki_tool = WikiSearchAgent() @staticmethod def _format_prompt(query: str, wiki_page: str) -> str: return f"\n###Question:{query} \ \n###Wikipedia Page:{wiki_page}" def get_answer(self, query: str, use_context: bool = True) -> [str, str]: if use_context: wiki_page = self._wiki_tool.get_wikipedia_entry(query) prompt = self._format_prompt(query, wiki_page) else: wiki_page = "" prompt = query return self._client.generate_text(prompt), wiki_page