File size: 1,612 Bytes
3060e5b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from llm.gemini_client import GeminiClient

from llm.utils.wiki_client import WikiClient

SYSTEM_MESSAGE = """you have access to a wikipedia summarizer that can return a summary for a topic. \
Your job is to act as a question answering tool. Whenever you are asked about a question related to knowledge, \
instead of using your internal knowledge (which can be faulty or out of date), \
format a Wikipedia search query string that can help answer the question. \

Remember Wikipedia Entries are usually about a simple entity or event, so keep the \
query short, and about the entity being asked about. Also, don't use your knowledge \
to ask about the answer. Instead form queries about the entity in the question. This \
will help you get the right wikipedia entries for questions when you dont know the answer

### Example 1:

Question: Who won the ICC Cricket World Cup?
Correct Response: Cricket World Cup
Incorrect response: Australia

### Example 2:

Question: Who directed the classic 30s western Stagecoach?
Response: Stagecoach
Incorrect response: John Ford


Below is the question. Return the wikipedia search query you would use \n

### Question:
"""


class WikiSearchAgent:
    def __init__(self):
        self._llm_client = GeminiClient(system_message=SYSTEM_MESSAGE)
        self._wiki_client = WikiClient()

    def get_wikipedia_entry(self, prompt: str) -> str:

        wiki_search_query = self._llm_client.generate_text(prompt)
        wikipedia_page = self._wiki_client.get_pages(wiki_search_query)
        try:
            return wikipedia_page.summary
        except:
            return ""