|
from __future__ import annotations |
|
|
|
import requests |
|
|
|
from ...typing import Any, CreateResult, Messages |
|
from ..base_provider import AbstractProvider |
|
|
|
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(AbstractProvider): |
|
url = "https://theb.ai" |
|
working = True |
|
needs_auth = True |
|
|
|
@staticmethod |
|
def create_completion( |
|
model: str, |
|
messages: Messages, |
|
stream: bool, |
|
auth: str, |
|
proxy: str = None, |
|
**kwargs |
|
) -> CreateResult: |
|
if model and model not in models: |
|
raise ValueError(f"Model are not supported: {model}") |
|
headers = { |
|
'accept': 'application/json', |
|
'authorization': f'Bearer {auth}', |
|
'content-type': 'application/json', |
|
} |
|
|
|
|
|
|
|
data: dict[str, Any] = { |
|
"model": model if model else "gpt-3.5-turbo", |
|
"messages": messages, |
|
"stream": False, |
|
"model_params": { |
|
"system_prompt": kwargs.get("system_message", "You are ChatGPT, a large language model trained by OpenAI, based on the GPT-3.5 architecture."), |
|
"temperature": 1, |
|
"top_p": 1, |
|
**kwargs |
|
} |
|
} |
|
response = requests.post( |
|
"https://api.theb.ai/v1/chat/completions", |
|
headers=headers, |
|
json=data, |
|
proxies={"https": proxy} |
|
) |
|
try: |
|
response.raise_for_status() |
|
yield response.json()["choices"][0]["message"]["content"] |
|
except: |
|
raise RuntimeError(f"Response: {next(response.iter_lines()).decode()}") |