from typing import List class Response: def __init__(self): self.answer = '' self.sources = [] def set_answer(self, answer: str) -> None: self.answer = answer def set_sources(self, sources: List) -> None: self.sources = list(set(map(str, sources))) def get_sources(self) -> List[str]: return self.sources def get_sources_as_text(self) -> str: if not self.sources: return '' sources_text = '\n\nSources:' for i, (source) in enumerate(self.sources): sources_text += f'\n [{i+1}] {source}' return sources_text def get_answer(self, include_sources: bool = False) -> str: answer = self.answer if include_sources: answer += self.get_sources_as_text() return answer def __str__(self): return self.get_answer(include_sources=True)