|
from __future__ import annotations |
|
|
|
from ...typing import CreateResult, Messages |
|
from .OpenaiAPI import OpenaiAPI |
|
|
|
models = { |
|
"theb-ai": "TheB.AI", |
|
"gpt-3.5-turbo": "GPT-3.5", |
|
"gpt-3.5-turbo-16k": "GPT-3.5-16K", |
|
"gpt-4-turbo": "GPT-4 Turbo", |
|
"gpt-4": "GPT-4", |
|
"gpt-4-32k": "GPT-4 32K", |
|
"claude-2": "Claude 2", |
|
"claude-1": "Claude", |
|
"claude-1-100k": "Claude 100K", |
|
"claude-instant-1": "Claude Instant", |
|
"claude-instant-1-100k": "Claude Instant 100K", |
|
"palm-2": "PaLM 2", |
|
"palm-2-codey": "Codey", |
|
"vicuna-13b-v1.5": "Vicuna v1.5 13B", |
|
"llama-2-7b-chat": "Llama 2 7B", |
|
"llama-2-13b-chat": "Llama 2 13B", |
|
"llama-2-70b-chat": "Llama 2 70B", |
|
"code-llama-7b": "Code Llama 7B", |
|
"code-llama-13b": "Code Llama 13B", |
|
"code-llama-34b": "Code Llama 34B", |
|
"qwen-7b-chat": "Qwen 7B" |
|
} |
|
|
|
class ThebApi(OpenaiAPI): |
|
label = "TheB.AI API" |
|
url = "https://theb.ai" |
|
working = True |
|
needs_auth = True |
|
default_model = "gpt-3.5-turbo" |
|
models = list(models) |
|
|
|
@classmethod |
|
def create_async_generator( |
|
cls, |
|
model: str, |
|
messages: Messages, |
|
api_base: str = "https://api.theb.ai/v1", |
|
temperature: float = 1, |
|
top_p: float = 1, |
|
**kwargs |
|
) -> CreateResult: |
|
if "auth" in kwargs: |
|
kwargs["api_key"] = kwargs["auth"] |
|
system_message = "\n".join([message["content"] for message in messages if message["role"] == "system"]) |
|
if not system_message: |
|
system_message = "You are ChatGPT, a large language model trained by OpenAI, based on the GPT-3.5 architecture." |
|
messages = [message for message in messages if message["role"] != "system"] |
|
data = { |
|
"model_params": { |
|
"system_prompt": system_message, |
|
"temperature": temperature, |
|
"top_p": top_p, |
|
} |
|
} |
|
return super().create_async_generator(model, messages, api_base=api_base, extra_data=data, **kwargs) |
|
|