quivr/backend/llm/qa_interface.py
Mamadou DICKO 512b9b4f37
feat: add custom rag first abstraction layer (#1858)
- Add `QAInterface` which should be implemented by all custom answer
generator to be compatible with Quivr
- Add `RAGInterface` which should be implemented by all RAG classes
2023-12-11 16:46:45 +01:00

28 lines
763 B
Python

from abc import ABC, abstractmethod
from uuid import UUID
from modules.chat.dto.chats import ChatQuestion
class QAInterface(ABC):
"""
Abstract class for all QA interfaces.
This can be used to implement custom answer generation logic.
"""
@abstractmethod
def generate_answer(
self, chat_id: UUID, question: ChatQuestion, should, *custom_params: tuple
):
raise NotImplementedError(
"generate_answer is an abstract method and must be implemented"
)
@abstractmethod
def generate_stream(
self, chat_id: UUID, question: ChatQuestion, *custom_params: tuple
):
raise NotImplementedError(
"generate_stream is an abstract method and must be implemented"
)