|
from __future__ import annotations |
|
|
|
from abc import abstractmethod |
|
|
|
class ResponseType: |
|
@abstractmethod |
|
def __str__(self) -> str: |
|
pass |
|
|
|
class FinishReason(): |
|
def __init__(self, reason: str): |
|
self.reason = reason |
|
|
|
def __str__(self) -> str: |
|
return "" |
|
|
|
class Sources(ResponseType): |
|
def __init__(self, sources: list[dict[str, str]]) -> None: |
|
self.list = sources |
|
|
|
def __str__(self) -> str: |
|
return "\n\n" + ("\n".join([f"{idx+1}. [{link['title']}]({link['url']})" for idx, link in enumerate(self.list)])) |
|
|
|
class BaseConversation(ResponseType): |
|
def __str__(self) -> str: |
|
return "" |
|
|
|
class SynthesizeData(ResponseType): |
|
def __init__(self, provider: str, data: dict): |
|
self.provider = provider |
|
self.data = data |
|
|
|
def to_json(self) -> dict: |
|
return { |
|
**self.__dict__ |
|
} |
|
|
|
def __str__(self) -> str: |
|
return "" |