RAG / rag.py
olenkap's picture
Upload 15 files
a73d4bf verified
from groq import Client
from retriever import Retriever
from typing import List
import glob
dir_path = 'docs'
class QuestionAnsweringBot:
PROMPT = """
You are a helpful assistant that answers the questions.
Rules:
- Reply with answer only and nothing but answer.
- Say 'I don`t know' if you don`t know the answer.
- Use the provided context.
"""
def __init__(self, docs: List[str], score: int, api_key) -> None:
self.retriever = Retriever(docs=docs, score=score)
self.client = Client(api_key=api_key)
def answer_question(self, question: str) -> str:
context = self.retriever.get_docs(query=question)
messages = [
{
"role": "system",
"content": self.PROMPT
},
{
"role": "user",
"content": f"Context: {context}\nQuestion: {question}"
}
]
chat_completion = self.client.chat.completions.create(
messages=messages,
model="llama3-70b-8192"
)
return chat_completion.choices[0].message.content
def read_docs(dir_path) -> List[str]:
docs = []
for path in glob.glob(f'{dir_path}/*.txt'):
with open(path, 'r', encoding='utf-8') as file:
text = file.read()
docs.append(text)
return docs