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

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 

5 

6from ports.generate_answer_port import GenerateAnswerPort 

7 

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 

15 

16 

17 def generate_answer(self, question_model: QuestionModel, context: list[ContextModel]) -> AnswerModel: 

18 """ 

19 Generates an answer based on user input and relevant documents. 

20 

21 Args: 

22 question_model (QuestionModel): The user's input question. 

23 context (list[ContextModel]): The relevant documents. 

24 

25 Returns: 

26 AnswerModel: The generated answer. 

27 

28 Raises: 

29 ValueError: raises exeptions. 

30 """ 

31 try: 

32 

33 return self.generate_answer_port.generate_answer(question_model, context, self.prompt_template_model) 

34 

35 except Exception as e: 

36 raise Exception(f"An error occurred during the answer generation: {e}") from e 

37