Coverage for src/app/services/generate_answer_service.py: 100%
14 statements
« prev ^ index » next coverage.py v7.7.0, created at 2025-04-03 00:42 +0200
« prev ^ index » next coverage.py v7.7.0, created at 2025-04-03 00:42 +0200
1from models.answer_model import AnswerModel
2from models.question_model import QuestionModel
3from models.context_model import ContextModel
4from models.prompt_template_model import PromptTemplateModel
6from ports.generate_answer_port import GenerateAnswerPort
8class GenerateAnswerService:
9 """
10 Service class to generate answer basing on a query and a list of contexts."
11 """
12 def __init__(self, generate_answer_port: GenerateAnswerPort, prompt_template_model: PromptTemplateModel):
13 self.generate_answer_port = generate_answer_port
14 self.prompt_template_model = prompt_template_model
17 def generate_answer(self, question_model: QuestionModel, context: list[ContextModel]) -> AnswerModel:
18 """
19 Generates an answer based on user input and relevant documents.
21 Args:
22 question_model (QuestionModel): The user's input question.
23 context (list[ContextModel]): The relevant documents.
25 Returns:
26 AnswerModel: The generated answer.
28 Raises:
29 ValueError: raises exeptions.
30 """
31 try:
33 return self.generate_answer_port.generate_answer(question_model, context, self.prompt_template_model)
35 except Exception as e:
36 raise Exception(f"An error occurred during the answer generation: {e}") from e