diff options
author | H Lohaus <hlohaus@users.noreply.github.com> | 2024-04-06 20:37:07 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-06 20:37:07 +0200 |
commit | 0c4a1d0bfa7806778a5f558a809d383e8beff786 (patch) | |
tree | 9adc69cfc0cd94f9ef80174ea06e2c0200b965cc /g4f/client | |
parent | Delete g4f/client/typing.py (diff) | |
download | gpt4free-0c4a1d0bfa7806778a5f558a809d383e8beff786.tar gpt4free-0c4a1d0bfa7806778a5f558a809d383e8beff786.tar.gz gpt4free-0c4a1d0bfa7806778a5f558a809d383e8beff786.tar.bz2 gpt4free-0c4a1d0bfa7806778a5f558a809d383e8beff786.tar.lz gpt4free-0c4a1d0bfa7806778a5f558a809d383e8beff786.tar.xz gpt4free-0c4a1d0bfa7806778a5f558a809d383e8beff786.tar.zst gpt4free-0c4a1d0bfa7806778a5f558a809d383e8beff786.zip |
Diffstat (limited to '')
-rw-r--r-- | g4f/client/stubs.py | 107 |
1 files changed, 106 insertions, 1 deletions
diff --git a/g4f/client/stubs.py b/g4f/client/stubs.py index 4287ca86..2441e287 100644 --- a/g4f/client/stubs.py +++ b/g4f/client/stubs.py @@ -1 +1,106 @@ -#
\ No newline at end of file +from __future__ import annotations + +from typing import Union + +class Model(): + ... + +class ChatCompletion(Model): + def __init__( + self, + content: str, + finish_reason: str, + completion_id: str = None, + created: int = None + ): + self.id: str = f"chatcmpl-{completion_id}" if completion_id else None + self.object: str = "chat.completion" + self.created: int = created + self.model: str = None + self.provider: str = None + self.choices = [ChatCompletionChoice(ChatCompletionMessage(content), finish_reason)] + self.usage: dict[str, int] = { + "prompt_tokens": 0, #prompt_tokens, + "completion_tokens": 0, #completion_tokens, + "total_tokens": 0, #prompt_tokens + completion_tokens, + } + + def to_json(self): + return { + **self.__dict__, + "choices": [choice.to_json() for choice in self.choices] + } + +class ChatCompletionChunk(Model): + def __init__( + self, + content: str, + finish_reason: str, + completion_id: str = None, + created: int = None + ): + self.id: str = f"chatcmpl-{completion_id}" if completion_id else None + self.object: str = "chat.completion.chunk" + self.created: int = created + self.model: str = None + self.provider: str = None + self.choices = [ChatCompletionDeltaChoice(ChatCompletionDelta(content), finish_reason)] + + def to_json(self): + return { + **self.__dict__, + "choices": [choice.to_json() for choice in self.choices] + } + +class ChatCompletionMessage(Model): + def __init__(self, content: Union[str, None]): + self.role = "assistant" + self.content = content + + def to_json(self): + return self.__dict__ + +class ChatCompletionChoice(Model): + def __init__(self, message: ChatCompletionMessage, finish_reason: str): + self.index = 0 + self.message = message + self.finish_reason = finish_reason + + def to_json(self): + return { + **self.__dict__, + "message": self.message.to_json() + } + +class ChatCompletionDelta(Model): + content: Union[str, None] = None + + def __init__(self, content: Union[str, None]): + if content is not None: + self.content = content + + def to_json(self): + return self.__dict__ + +class ChatCompletionDeltaChoice(Model): + def __init__(self, delta: ChatCompletionDelta, finish_reason: Union[str, None]): + self.delta = delta + self.finish_reason = finish_reason + + def to_json(self): + return { + **self.__dict__, + "delta": self.delta.to_json() + } + +class Image(Model): + url: str + + def __init__(self, url: str) -> None: + self.url = url + +class ImagesResponse(Model): + data: list[Image] + + def __init__(self, data: list) -> None: + self.data = data |