mirror of
https://github.com/xtekky/gpt4free.git
synced 2024-12-25 04:01:52 +03:00
Merge pull request #2125 from kqlio67/main
Added new providers, updated existing ones, and added new models and updated model lists
This commit is contained in:
commit
36e6306bd0
71
g4f/Provider/Allyfy.py
Normal file
71
g4f/Provider/Allyfy.py
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from aiohttp import ClientSession
|
||||||
|
import json
|
||||||
|
|
||||||
|
from ..typing import AsyncResult, Messages
|
||||||
|
from .base_provider import AsyncGeneratorProvider
|
||||||
|
from .helper import format_prompt
|
||||||
|
|
||||||
|
|
||||||
|
class Allyfy(AsyncGeneratorProvider):
|
||||||
|
url = "https://chatbot.allyfy.chat"
|
||||||
|
api_endpoint = "/api/v1/message/stream/super/chat"
|
||||||
|
working = True
|
||||||
|
supports_gpt_35_turbo = True
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
async def create_async_generator(
|
||||||
|
cls,
|
||||||
|
model: str,
|
||||||
|
messages: Messages,
|
||||||
|
proxy: str = None,
|
||||||
|
**kwargs
|
||||||
|
) -> AsyncResult:
|
||||||
|
headers = {
|
||||||
|
"accept": "text/event-stream",
|
||||||
|
"accept-language": "en-US,en;q=0.9",
|
||||||
|
"content-type": "application/json;charset=utf-8",
|
||||||
|
"dnt": "1",
|
||||||
|
"origin": "https://www.allyfy.chat",
|
||||||
|
"priority": "u=1, i",
|
||||||
|
"referer": "https://www.allyfy.chat/",
|
||||||
|
"referrer": "https://www.allyfy.chat",
|
||||||
|
'sec-ch-ua': '"Not/A)Brand";v="8", "Chromium";v="126"',
|
||||||
|
'sec-ch-ua-mobile': '?0',
|
||||||
|
'sec-ch-ua-platform': '"Linux"',
|
||||||
|
"sec-fetch-dest": "empty",
|
||||||
|
"sec-fetch-mode": "cors",
|
||||||
|
"sec-fetch-site": "same-site",
|
||||||
|
"user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"
|
||||||
|
}
|
||||||
|
async with ClientSession(headers=headers) as session:
|
||||||
|
prompt = format_prompt(messages)
|
||||||
|
data = {
|
||||||
|
"messages": [{"content": prompt, "role": "user"}],
|
||||||
|
"content": prompt,
|
||||||
|
"baseInfo": {
|
||||||
|
"clientId": "q08kdrde1115003lyedfoir6af0yy531",
|
||||||
|
"pid": "38281",
|
||||||
|
"channelId": "100000",
|
||||||
|
"locale": "en-US",
|
||||||
|
"localZone": 180,
|
||||||
|
"packageName": "com.cch.allyfy.webh",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
async with session.post(f"{cls.url}{cls.api_endpoint}", json=data, proxy=proxy) as response:
|
||||||
|
response.raise_for_status()
|
||||||
|
full_response = []
|
||||||
|
async for line in response.content:
|
||||||
|
line = line.decode().strip()
|
||||||
|
if line.startswith("data:"):
|
||||||
|
data_content = line[5:]
|
||||||
|
if data_content == "[DONE]":
|
||||||
|
break
|
||||||
|
try:
|
||||||
|
json_data = json.loads(data_content)
|
||||||
|
if "content" in json_data:
|
||||||
|
full_response.append(json_data["content"])
|
||||||
|
except json.JSONDecodeError:
|
||||||
|
continue
|
||||||
|
yield "".join(full_response)
|
75
g4f/Provider/ChatGot.py
Normal file
75
g4f/Provider/ChatGot.py
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import time
|
||||||
|
from hashlib import sha256
|
||||||
|
|
||||||
|
from aiohttp import BaseConnector, ClientSession
|
||||||
|
|
||||||
|
from ..errors import RateLimitError
|
||||||
|
from ..requests import raise_for_status
|
||||||
|
from ..requests.aiohttp import get_connector
|
||||||
|
from ..typing import AsyncResult, Messages
|
||||||
|
from .base_provider import AsyncGeneratorProvider, ProviderModelMixin
|
||||||
|
|
||||||
|
|
||||||
|
class ChatGot(AsyncGeneratorProvider, ProviderModelMixin):
|
||||||
|
url = "https://www.chatgot.one/"
|
||||||
|
working = True
|
||||||
|
supports_message_history = True
|
||||||
|
default_model = 'gemini-pro'
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
async def create_async_generator(
|
||||||
|
cls,
|
||||||
|
model: str,
|
||||||
|
messages: Messages,
|
||||||
|
proxy: str = None,
|
||||||
|
connector: BaseConnector = None,
|
||||||
|
**kwargs,
|
||||||
|
) -> AsyncResult:
|
||||||
|
headers = {
|
||||||
|
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:122.0) Gecko/20100101 Firefox/122.0",
|
||||||
|
"Accept": "*/*",
|
||||||
|
"Accept-Language": "en-US,en;q=0.5",
|
||||||
|
"Accept-Encoding": "gzip, deflate, br",
|
||||||
|
"Content-Type": "text/plain;charset=UTF-8",
|
||||||
|
"Referer": f"{cls.url}/",
|
||||||
|
"Origin": cls.url,
|
||||||
|
"Sec-Fetch-Dest": "empty",
|
||||||
|
"Sec-Fetch-Mode": "cors",
|
||||||
|
"Sec-Fetch-Site": "same-origin",
|
||||||
|
"Connection": "keep-alive",
|
||||||
|
"TE": "trailers",
|
||||||
|
}
|
||||||
|
async with ClientSession(
|
||||||
|
connector=get_connector(connector, proxy), headers=headers
|
||||||
|
) as session:
|
||||||
|
timestamp = int(time.time() * 1e3)
|
||||||
|
data = {
|
||||||
|
"messages": [
|
||||||
|
{
|
||||||
|
"role": "model" if message["role"] == "assistant" else "user",
|
||||||
|
"parts": [{"text": message["content"]}],
|
||||||
|
}
|
||||||
|
for message in messages
|
||||||
|
],
|
||||||
|
"time": timestamp,
|
||||||
|
"pass": None,
|
||||||
|
"sign": generate_signature(timestamp, messages[-1]["content"]),
|
||||||
|
}
|
||||||
|
async with session.post(
|
||||||
|
f"{cls.url}/api/generate", json=data, proxy=proxy
|
||||||
|
) as response:
|
||||||
|
if response.status == 500:
|
||||||
|
if "Quota exceeded" in await response.text():
|
||||||
|
raise RateLimitError(
|
||||||
|
f"Response {response.status}: Rate limit reached"
|
||||||
|
)
|
||||||
|
await raise_for_status(response)
|
||||||
|
async for chunk in response.content.iter_any():
|
||||||
|
yield chunk.decode(errors="ignore")
|
||||||
|
|
||||||
|
|
||||||
|
def generate_signature(time: int, text: str, secret: str = ""):
|
||||||
|
message = f"{time}:{text}:{secret}"
|
||||||
|
return sha256(message.encode()).hexdigest()
|
@ -1,22 +1,18 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import re
|
|
||||||
import json
|
import json
|
||||||
from aiohttp import ClientSession
|
from aiohttp import ClientSession
|
||||||
|
|
||||||
from ..typing import Messages, AsyncResult
|
from ..typing import AsyncResult, Messages
|
||||||
from ..requests import get_args_from_browser
|
|
||||||
from ..webdriver import WebDriver
|
|
||||||
from .base_provider import AsyncGeneratorProvider
|
from .base_provider import AsyncGeneratorProvider
|
||||||
from .helper import get_random_string
|
from .helper import format_prompt
|
||||||
|
|
||||||
|
|
||||||
class Chatgpt4Online(AsyncGeneratorProvider):
|
class Chatgpt4Online(AsyncGeneratorProvider):
|
||||||
url = "https://chatgpt4online.org"
|
url = "https://chatgpt4online.org"
|
||||||
supports_message_history = True
|
api_endpoint = "/wp-json/mwai-ui/v1/chats/submit"
|
||||||
supports_gpt_35_turbo = True
|
working = True
|
||||||
working = True
|
supports_gpt_4 = True
|
||||||
_wpnonce = None
|
|
||||||
_context_id = None
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
async def create_async_generator(
|
async def create_async_generator(
|
||||||
@ -24,49 +20,52 @@ class Chatgpt4Online(AsyncGeneratorProvider):
|
|||||||
model: str,
|
model: str,
|
||||||
messages: Messages,
|
messages: Messages,
|
||||||
proxy: str = None,
|
proxy: str = None,
|
||||||
webdriver: WebDriver = None,
|
|
||||||
**kwargs
|
**kwargs
|
||||||
) -> AsyncResult:
|
) -> AsyncResult:
|
||||||
args = get_args_from_browser(f"{cls.url}/chat/", webdriver, proxy=proxy)
|
headers = {
|
||||||
async with ClientSession(**args) as session:
|
"accept": "text/event-stream",
|
||||||
if not cls._wpnonce:
|
"accept-language": "en-US,en;q=0.9",
|
||||||
async with session.get(f"{cls.url}/chat/", proxy=proxy) as response:
|
"content-type": "application/json",
|
||||||
response.raise_for_status()
|
"dnt": "1",
|
||||||
response = await response.text()
|
"origin": cls.url,
|
||||||
result = re.search(r'restNonce":"(.*?)"', response)
|
"priority": "u=1, i",
|
||||||
if result:
|
"referer": f"{cls.url}/",
|
||||||
cls._wpnonce = result.group(1)
|
"sec-ch-ua": '"Not/A)Brand";v="8", "Chromium";v="126"',
|
||||||
else:
|
"sec-ch-ua-mobile": "?0",
|
||||||
raise RuntimeError("No nonce found")
|
"sec-ch-ua-platform": '"Linux"',
|
||||||
result = re.search(r'contextId":(.*?),', response)
|
"sec-fetch-dest": "empty",
|
||||||
if result:
|
"sec-fetch-mode": "cors",
|
||||||
cls._context_id = result.group(1)
|
"sec-fetch-site": "same-origin",
|
||||||
else:
|
"user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
|
||||||
raise RuntimeError("No contextId found")
|
"x-wp-nonce": "d9505e9877",
|
||||||
|
}
|
||||||
|
|
||||||
|
async with ClientSession(headers=headers) as session:
|
||||||
|
prompt = format_prompt(messages)
|
||||||
data = {
|
data = {
|
||||||
"botId":"default",
|
"botId": "default",
|
||||||
"customId":None,
|
"newMessage": prompt,
|
||||||
"session":"N/A",
|
"stream": True,
|
||||||
"chatId":get_random_string(11),
|
|
||||||
"contextId":cls._context_id,
|
|
||||||
"messages":messages[:-1],
|
|
||||||
"newMessage":messages[-1]["content"],
|
|
||||||
"newImageId":None,
|
|
||||||
"stream":True
|
|
||||||
}
|
}
|
||||||
async with session.post(
|
|
||||||
f"{cls.url}/wp-json/mwai-ui/v1/chats/submit",
|
async with session.post(f"{cls.url}{cls.api_endpoint}", json=data, proxy=proxy) as response:
|
||||||
json=data,
|
|
||||||
proxy=proxy,
|
|
||||||
headers={"x-wp-nonce": cls._wpnonce}
|
|
||||||
) as response:
|
|
||||||
response.raise_for_status()
|
response.raise_for_status()
|
||||||
async for line in response.content:
|
full_response = ""
|
||||||
if line.startswith(b"data: "):
|
|
||||||
line = json.loads(line[6:])
|
async for chunk in response.content.iter_any():
|
||||||
if "type" not in line:
|
if chunk:
|
||||||
raise RuntimeError(f"Response: {line}")
|
try:
|
||||||
elif line["type"] == "live":
|
# Extract the JSON object from the chunk
|
||||||
yield line["data"]
|
for line in chunk.decode().splitlines():
|
||||||
elif line["type"] == "end":
|
if line.startswith("data: "):
|
||||||
break
|
json_data = json.loads(line[6:])
|
||||||
|
if json_data["type"] == "live":
|
||||||
|
full_response += json_data["data"]
|
||||||
|
elif json_data["type"] == "end":
|
||||||
|
final_data = json.loads(json_data["data"])
|
||||||
|
full_response = final_data["reply"]
|
||||||
|
break
|
||||||
|
except json.JSONDecodeError:
|
||||||
|
continue
|
||||||
|
|
||||||
|
yield full_response
|
||||||
|
107
g4f/Provider/FreeNetfly.py
Normal file
107
g4f/Provider/FreeNetfly.py
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import json
|
||||||
|
import asyncio
|
||||||
|
from aiohttp import ClientSession, ClientTimeout, ClientError
|
||||||
|
from typing import AsyncGenerator
|
||||||
|
|
||||||
|
from ..typing import AsyncResult, Messages
|
||||||
|
from .base_provider import AsyncGeneratorProvider, ProviderModelMixin
|
||||||
|
|
||||||
|
|
||||||
|
class FreeNetfly(AsyncGeneratorProvider, ProviderModelMixin):
|
||||||
|
url = "https://free.netfly.top"
|
||||||
|
api_endpoint = "/api/openai/v1/chat/completions"
|
||||||
|
working = True
|
||||||
|
supports_gpt_35_turbo = True
|
||||||
|
supports_gpt_4 = True
|
||||||
|
default_model = 'gpt-3.5-turbo'
|
||||||
|
models = [
|
||||||
|
'gpt-3.5-turbo',
|
||||||
|
'gpt-4',
|
||||||
|
]
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
async def create_async_generator(
|
||||||
|
cls,
|
||||||
|
model: str,
|
||||||
|
messages: Messages,
|
||||||
|
proxy: str = None,
|
||||||
|
**kwargs
|
||||||
|
) -> AsyncResult:
|
||||||
|
headers = {
|
||||||
|
"accept": "application/json, text/event-stream",
|
||||||
|
"accept-language": "en-US,en;q=0.9",
|
||||||
|
"content-type": "application/json",
|
||||||
|
"dnt": "1",
|
||||||
|
"origin": cls.url,
|
||||||
|
"referer": f"{cls.url}/",
|
||||||
|
"sec-ch-ua": '"Not/A)Brand";v="8", "Chromium";v="126"',
|
||||||
|
"sec-ch-ua-mobile": "?0",
|
||||||
|
"sec-ch-ua-platform": '"Linux"',
|
||||||
|
"sec-fetch-dest": "empty",
|
||||||
|
"sec-fetch-mode": "cors",
|
||||||
|
"sec-fetch-site": "same-origin",
|
||||||
|
"user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
|
||||||
|
}
|
||||||
|
data = {
|
||||||
|
"messages": messages,
|
||||||
|
"stream": True,
|
||||||
|
"model": model,
|
||||||
|
"temperature": 0.5,
|
||||||
|
"presence_penalty": 0,
|
||||||
|
"frequency_penalty": 0,
|
||||||
|
"top_p": 1
|
||||||
|
}
|
||||||
|
|
||||||
|
max_retries = 3
|
||||||
|
retry_delay = 1
|
||||||
|
|
||||||
|
for attempt in range(max_retries):
|
||||||
|
try:
|
||||||
|
async with ClientSession(headers=headers) as session:
|
||||||
|
timeout = ClientTimeout(total=60)
|
||||||
|
async with session.post(f"{cls.url}{cls.api_endpoint}", json=data, proxy=proxy, timeout=timeout) as response:
|
||||||
|
response.raise_for_status()
|
||||||
|
async for chunk in cls._process_response(response):
|
||||||
|
yield chunk
|
||||||
|
return # If successful, exit the function
|
||||||
|
except (ClientError, asyncio.TimeoutError) as e:
|
||||||
|
if attempt == max_retries - 1:
|
||||||
|
raise # If all retries failed, raise the last exception
|
||||||
|
await asyncio.sleep(retry_delay)
|
||||||
|
retry_delay *= 2 # Exponential backoff
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
async def _process_response(cls, response) -> AsyncGenerator[str, None]:
|
||||||
|
buffer = ""
|
||||||
|
async for line in response.content:
|
||||||
|
buffer += line.decode('utf-8')
|
||||||
|
if buffer.endswith('\n\n'):
|
||||||
|
for subline in buffer.strip().split('\n'):
|
||||||
|
if subline.startswith('data: '):
|
||||||
|
if subline == 'data: [DONE]':
|
||||||
|
return
|
||||||
|
try:
|
||||||
|
data = json.loads(subline[6:])
|
||||||
|
content = data['choices'][0]['delta'].get('content')
|
||||||
|
if content:
|
||||||
|
yield content
|
||||||
|
except json.JSONDecodeError:
|
||||||
|
print(f"Failed to parse JSON: {subline}")
|
||||||
|
except KeyError:
|
||||||
|
print(f"Unexpected JSON structure: {data}")
|
||||||
|
buffer = ""
|
||||||
|
|
||||||
|
# Process any remaining data in the buffer
|
||||||
|
if buffer:
|
||||||
|
for subline in buffer.strip().split('\n'):
|
||||||
|
if subline.startswith('data: ') and subline != 'data: [DONE]':
|
||||||
|
try:
|
||||||
|
data = json.loads(subline[6:])
|
||||||
|
content = data['choices'][0]['delta'].get('content')
|
||||||
|
if content:
|
||||||
|
yield content
|
||||||
|
except (json.JSONDecodeError, KeyError):
|
||||||
|
pass
|
||||||
|
|
@ -13,10 +13,10 @@ from .base_provider import AsyncGeneratorProvider, ProviderModelMixin
|
|||||||
|
|
||||||
|
|
||||||
class GeminiProChat(AsyncGeneratorProvider, ProviderModelMixin):
|
class GeminiProChat(AsyncGeneratorProvider, ProviderModelMixin):
|
||||||
url = "https://www.chatgot.one/"
|
url = "https://gemini-pro.chat/"
|
||||||
working = True
|
working = True
|
||||||
supports_message_history = True
|
supports_message_history = True
|
||||||
default_model = ''
|
default_model = 'gemini-pro'
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
async def create_async_generator(
|
async def create_async_generator(
|
||||||
|
@ -13,8 +13,9 @@ class HuggingChat(AbstractProvider, ProviderModelMixin):
|
|||||||
supports_stream = True
|
supports_stream = True
|
||||||
default_model = "mistralai/Mixtral-8x7B-Instruct-v0.1"
|
default_model = "mistralai/Mixtral-8x7B-Instruct-v0.1"
|
||||||
models = [
|
models = [
|
||||||
|
'meta-llama/Meta-Llama-3.1-70B-Instruct',
|
||||||
|
'meta-llama/Meta-Llama-3.1-405B-Instruct-FP8',
|
||||||
'CohereForAI/c4ai-command-r-plus',
|
'CohereForAI/c4ai-command-r-plus',
|
||||||
'meta-llama/Meta-Llama-3-70B-Instruct',
|
|
||||||
'mistralai/Mixtral-8x7B-Instruct-v0.1',
|
'mistralai/Mixtral-8x7B-Instruct-v0.1',
|
||||||
'NousResearch/Nous-Hermes-2-Mixtral-8x7B-DPO',
|
'NousResearch/Nous-Hermes-2-Mixtral-8x7B-DPO',
|
||||||
'01-ai/Yi-1.5-34B-Chat',
|
'01-ai/Yi-1.5-34B-Chat',
|
||||||
|
@ -14,16 +14,17 @@ class HuggingFace(AsyncGeneratorProvider, ProviderModelMixin):
|
|||||||
working = True
|
working = True
|
||||||
needs_auth = True
|
needs_auth = True
|
||||||
supports_message_history = True
|
supports_message_history = True
|
||||||
|
default_model = "mistralai/Mixtral-8x7B-Instruct-v0.1"
|
||||||
models = [
|
models = [
|
||||||
|
'meta-llama/Meta-Llama-3.1-70B-Instruct',
|
||||||
|
'meta-llama/Meta-Llama-3.1-405B-Instruct-FP8',
|
||||||
'CohereForAI/c4ai-command-r-plus',
|
'CohereForAI/c4ai-command-r-plus',
|
||||||
'meta-llama/Meta-Llama-3-70B-Instruct',
|
|
||||||
'mistralai/Mixtral-8x7B-Instruct-v0.1',
|
'mistralai/Mixtral-8x7B-Instruct-v0.1',
|
||||||
'NousResearch/Nous-Hermes-2-Mixtral-8x7B-DPO',
|
'NousResearch/Nous-Hermes-2-Mixtral-8x7B-DPO',
|
||||||
'01-ai/Yi-1.5-34B-Chat',
|
'01-ai/Yi-1.5-34B-Chat',
|
||||||
'mistralai/Mistral-7B-Instruct-v0.2',
|
'mistralai/Mistral-7B-Instruct-v0.2',
|
||||||
'microsoft/Phi-3-mini-4k-instruct',
|
'microsoft/Phi-3-mini-4k-instruct',
|
||||||
]
|
]
|
||||||
default_model = "mistralai/Mixtral-8x7B-Instruct-v0.1"
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
async def create_async_generator(
|
async def create_async_generator(
|
||||||
|
@ -10,14 +10,23 @@ from .helper import get_connector
|
|||||||
from ..requests import raise_for_status
|
from ..requests import raise_for_status
|
||||||
|
|
||||||
models = {
|
models = {
|
||||||
"gpt-3.5-turbo": {
|
"gpt-4o-mini-free": {
|
||||||
"id": "gpt-3.5-turbo",
|
"id": "gpt-4o-mini-free",
|
||||||
"name": "GPT-3.5-Turbo",
|
"name": "GPT-4o-Mini-Free",
|
||||||
"model": "ChatGPT",
|
"model": "ChatGPT",
|
||||||
"provider": "OpenAI",
|
"provider": "OpenAI",
|
||||||
"maxLength": 48000,
|
"maxLength": 31200,
|
||||||
"tokenLimit": 14000,
|
"tokenLimit": 7800,
|
||||||
"context": "16K",
|
"context": "8K",
|
||||||
|
},
|
||||||
|
"gpt-4o-mini": {
|
||||||
|
"id": "gpt-4o-mini",
|
||||||
|
"name": "GPT-4o-Mini",
|
||||||
|
"model": "ChatGPT",
|
||||||
|
"provider": "OpenAI",
|
||||||
|
"maxLength": 260000,
|
||||||
|
"tokenLimit": 126000,
|
||||||
|
"context": "128K",
|
||||||
},
|
},
|
||||||
"gpt-4o-free": {
|
"gpt-4o-free": {
|
||||||
"context": "8K",
|
"context": "8K",
|
||||||
@ -48,106 +57,26 @@ models = {
|
|||||||
},
|
},
|
||||||
"gpt-4-0613": {
|
"gpt-4-0613": {
|
||||||
"id": "gpt-4-0613",
|
"id": "gpt-4-0613",
|
||||||
"name": "GPT-4-0613",
|
"name": "GPT-4",
|
||||||
"model": "ChatGPT",
|
"model": "ChatGPT",
|
||||||
"provider": "OpenAI",
|
"provider": "OpenAI",
|
||||||
"maxLength": 32000,
|
"maxLength": 260000,
|
||||||
"tokenLimit": 7600,
|
"tokenLimit": 126000,
|
||||||
"context": "8K",
|
"context": "128K",
|
||||||
},
|
},
|
||||||
"claude-3-opus-20240229": {
|
"gpt-4-turbo": {
|
||||||
"id": "claude-3-opus-20240229",
|
"id": "gpt-4-turbo",
|
||||||
"name": "Claude-3-Opus",
|
"name": "GPT-4-Turbo",
|
||||||
"model": "Claude",
|
"model": "ChatGPT",
|
||||||
"provider": "Anthropic",
|
"provider": "OpenAI",
|
||||||
"maxLength": 800000,
|
"maxLength": 260000,
|
||||||
"tokenLimit": 200000,
|
"tokenLimit": 126000,
|
||||||
"context": "200K",
|
"context": "128K",
|
||||||
},
|
},
|
||||||
"claude-3-opus-20240229-aws": {
|
|
||||||
"id": "claude-3-opus-20240229-aws",
|
|
||||||
"name": "Claude-3-Opus-Aws",
|
|
||||||
"model": "Claude",
|
|
||||||
"provider": "Anthropic",
|
|
||||||
"maxLength": 800000,
|
|
||||||
"tokenLimit": 200000,
|
|
||||||
"context": "200K",
|
|
||||||
},
|
|
||||||
"claude-3-opus-100k-poe": {
|
|
||||||
"id": "claude-3-opus-100k-poe",
|
|
||||||
"name": "Claude-3-Opus-100k-Poe",
|
|
||||||
"model": "Claude",
|
|
||||||
"provider": "Anthropic",
|
|
||||||
"maxLength": 400000,
|
|
||||||
"tokenLimit": 99000,
|
|
||||||
"context": "100K",
|
|
||||||
},
|
|
||||||
"claude-3-sonnet-20240229": {
|
|
||||||
"id": "claude-3-sonnet-20240229",
|
|
||||||
"name": "Claude-3-Sonnet",
|
|
||||||
"model": "Claude",
|
|
||||||
"provider": "Anthropic",
|
|
||||||
"maxLength": 800000,
|
|
||||||
"tokenLimit": 200000,
|
|
||||||
"context": "200K",
|
|
||||||
},
|
|
||||||
"claude-3-haiku-20240307": {
|
|
||||||
"id": "claude-3-haiku-20240307",
|
|
||||||
"name": "Claude-3-Haiku",
|
|
||||||
"model": "Claude",
|
|
||||||
"provider": "Anthropic",
|
|
||||||
"maxLength": 800000,
|
|
||||||
"tokenLimit": 200000,
|
|
||||||
"context": "200K",
|
|
||||||
},
|
|
||||||
"claude-2.1": {
|
|
||||||
"id": "claude-2.1",
|
|
||||||
"name": "Claude-2.1-200k",
|
|
||||||
"model": "Claude",
|
|
||||||
"provider": "Anthropic",
|
|
||||||
"maxLength": 800000,
|
|
||||||
"tokenLimit": 200000,
|
|
||||||
"context": "200K",
|
|
||||||
},
|
|
||||||
"claude-2.0": {
|
|
||||||
"id": "claude-2.0",
|
|
||||||
"name": "Claude-2.0-100k",
|
|
||||||
"model": "Claude",
|
|
||||||
"provider": "Anthropic",
|
|
||||||
"maxLength": 400000,
|
|
||||||
"tokenLimit": 100000,
|
|
||||||
"context": "100K",
|
|
||||||
},
|
|
||||||
"gemini-1.0-pro-latest": {
|
|
||||||
"id": "gemini-1.0-pro-latest",
|
|
||||||
"name": "Gemini-Pro",
|
|
||||||
"model": "Gemini",
|
|
||||||
"provider": "Google",
|
|
||||||
"maxLength": 120000,
|
|
||||||
"tokenLimit": 30000,
|
|
||||||
"context": "32K",
|
|
||||||
},
|
|
||||||
"gemini-1.5-flash-latest": {
|
|
||||||
"id": "gemini-1.5-flash-latest",
|
|
||||||
"name": "Gemini-1.5-Flash-1M",
|
|
||||||
"model": "Gemini",
|
|
||||||
"provider": "Google",
|
|
||||||
"maxLength": 4000000,
|
|
||||||
"tokenLimit": 1000000,
|
|
||||||
"context": "1024K",
|
|
||||||
},
|
|
||||||
"gemini-1.5-pro-latest": {
|
|
||||||
"id": "gemini-1.5-pro-latest",
|
|
||||||
"name": "Gemini-1.5-Pro-1M",
|
|
||||||
"model": "Gemini",
|
|
||||||
"provider": "Google",
|
|
||||||
"maxLength": 4000000,
|
|
||||||
"tokenLimit": 1000000,
|
|
||||||
"context": "1024K",
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Liaobots(AsyncGeneratorProvider, ProviderModelMixin):
|
class Liaobots(AsyncGeneratorProvider, ProviderModelMixin):
|
||||||
url = "https://liaobots.site"
|
url = "https://liaobots.site"
|
||||||
working = True
|
working = True
|
||||||
@ -155,10 +84,22 @@ class Liaobots(AsyncGeneratorProvider, ProviderModelMixin):
|
|||||||
supports_system_message = True
|
supports_system_message = True
|
||||||
supports_gpt_35_turbo = True
|
supports_gpt_35_turbo = True
|
||||||
supports_gpt_4 = True
|
supports_gpt_4 = True
|
||||||
default_model = "gpt-3.5-turbo"
|
default_model = "gpt-4o"
|
||||||
models = list(models.keys())
|
models = list(models.keys())
|
||||||
model_aliases = {
|
model_aliases = {
|
||||||
"claude-v2": "claude-2.0"
|
"gpt-4o-mini": "gpt-4o-mini-free",
|
||||||
|
"gpt-4o": "gpt-4o-free",
|
||||||
|
"gpt-4-turbo": "gpt-4-turbo-2024-04-09",
|
||||||
|
"gpt-4-": "gpt-4-0613",
|
||||||
|
"claude-3-opus": "claude-3-opus-20240229",
|
||||||
|
"claude-3-opus": "claude-3-opus-20240229-aws",
|
||||||
|
"claude-3-opus": "claude-3-opus-20240229-gcp",
|
||||||
|
"claude-3-sonnet": "claude-3-sonnet-20240229",
|
||||||
|
"claude-3-5-sonnet": "claude-3-5-sonnet-20240620",
|
||||||
|
"claude-3-haiku": "claude-3-haiku-20240307",
|
||||||
|
"gemini-pro": "gemini-1.5-pro-latest",
|
||||||
|
"gemini-pro": "gemini-1.0-pro-latest",
|
||||||
|
"gemini-flash": "gemini-1.5-flash-latest",
|
||||||
}
|
}
|
||||||
_auth_code = ""
|
_auth_code = ""
|
||||||
_cookie_jar = None
|
_cookie_jar = None
|
||||||
|
97
g4f/Provider/LiteIcoding.py
Normal file
97
g4f/Provider/LiteIcoding.py
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from aiohttp import ClientSession, ClientResponseError
|
||||||
|
from ..typing import AsyncResult, Messages
|
||||||
|
from .base_provider import AsyncGeneratorProvider, ProviderModelMixin
|
||||||
|
from .helper import format_prompt
|
||||||
|
|
||||||
|
|
||||||
|
class LiteIcoding(AsyncGeneratorProvider, ProviderModelMixin):
|
||||||
|
url = "https://lite.icoding.ink"
|
||||||
|
api_endpoint = "/api/v1/gpt/message"
|
||||||
|
working = True
|
||||||
|
supports_gpt_4 = True
|
||||||
|
default_model = "gpt-4o"
|
||||||
|
models = [
|
||||||
|
'gpt-4o',
|
||||||
|
'gpt-4-turbo',
|
||||||
|
'claude-3',
|
||||||
|
'claude-3.5',
|
||||||
|
'gemini-1.5',
|
||||||
|
]
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
async def create_async_generator(
|
||||||
|
cls,
|
||||||
|
model: str,
|
||||||
|
messages: Messages,
|
||||||
|
proxy: str = None,
|
||||||
|
**kwargs
|
||||||
|
) -> AsyncResult:
|
||||||
|
headers = {
|
||||||
|
"Accept": "*/*",
|
||||||
|
"Accept-Language": "en-US,en;q=0.9",
|
||||||
|
"Authorization": "Bearer null",
|
||||||
|
"Connection": "keep-alive",
|
||||||
|
"Content-Type": "application/json;charset=utf-8",
|
||||||
|
"DNT": "1",
|
||||||
|
"Origin": cls.url,
|
||||||
|
"Referer": f"{cls.url}/",
|
||||||
|
"Sec-Fetch-Dest": "empty",
|
||||||
|
"Sec-Fetch-Mode": "cors",
|
||||||
|
"Sec-Fetch-Site": "same-origin",
|
||||||
|
"User-Agent": (
|
||||||
|
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
||||||
|
"Chrome/126.0.0.0 Safari/537.36"
|
||||||
|
),
|
||||||
|
"sec-ch-ua": '"Not/A)Brand";v="8", "Chromium";v="126"',
|
||||||
|
"sec-ch-ua-mobile": "?0",
|
||||||
|
"sec-ch-ua-platform": '"Linux"',
|
||||||
|
}
|
||||||
|
|
||||||
|
data = {
|
||||||
|
"model": model,
|
||||||
|
"chatId": "-1",
|
||||||
|
"messages": [
|
||||||
|
{
|
||||||
|
"role": msg["role"],
|
||||||
|
"content": msg["content"],
|
||||||
|
"time": msg.get("time", ""),
|
||||||
|
"attachments": msg.get("attachments", []),
|
||||||
|
}
|
||||||
|
for msg in messages
|
||||||
|
],
|
||||||
|
"plugins": [],
|
||||||
|
"systemPrompt": "",
|
||||||
|
"temperature": 0.5,
|
||||||
|
}
|
||||||
|
|
||||||
|
async with ClientSession(headers=headers) as session:
|
||||||
|
try:
|
||||||
|
async with session.post(
|
||||||
|
f"{cls.url}{cls.api_endpoint}", json=data, proxy=proxy
|
||||||
|
) as response:
|
||||||
|
response.raise_for_status()
|
||||||
|
buffer = ""
|
||||||
|
full_response = ""
|
||||||
|
async for chunk in response.content.iter_any():
|
||||||
|
if chunk:
|
||||||
|
buffer += chunk.decode()
|
||||||
|
while "\n\n" in buffer:
|
||||||
|
part, buffer = buffer.split("\n\n", 1)
|
||||||
|
if part.startswith("data: "):
|
||||||
|
content = part[6:].strip()
|
||||||
|
if content and content != "[DONE]":
|
||||||
|
content = content.strip('"')
|
||||||
|
full_response += content
|
||||||
|
|
||||||
|
full_response = full_response.replace('" "', ' ')
|
||||||
|
yield full_response.strip()
|
||||||
|
|
||||||
|
except ClientResponseError as e:
|
||||||
|
raise RuntimeError(
|
||||||
|
f"ClientResponseError {e.status}: {e.message}, url={e.request_info.url}, data={data}"
|
||||||
|
) from e
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
raise RuntimeError(f"Unexpected error: {str(e)}") from e
|
50
g4f/Provider/MagickPenAsk.py
Normal file
50
g4f/Provider/MagickPenAsk.py
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from aiohttp import ClientSession
|
||||||
|
|
||||||
|
from ..typing import AsyncResult, Messages
|
||||||
|
from .base_provider import AsyncGeneratorProvider, ProviderModelMixin
|
||||||
|
from .helper import format_prompt
|
||||||
|
|
||||||
|
|
||||||
|
class MagickPenAsk(AsyncGeneratorProvider, ProviderModelMixin):
|
||||||
|
url = "https://api.magickpen.com"
|
||||||
|
api_endpoint = "/ask"
|
||||||
|
working = True
|
||||||
|
supports_gpt_4 = True
|
||||||
|
default_model = "gpt-4o"
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
async def create_async_generator(
|
||||||
|
cls,
|
||||||
|
model: str,
|
||||||
|
messages: Messages,
|
||||||
|
proxy: str = None,
|
||||||
|
**kwargs
|
||||||
|
) -> AsyncResult:
|
||||||
|
headers = {
|
||||||
|
"accept": "application/json, text/plain, */*",
|
||||||
|
"accept-language": "en-US,en;q=0.9",
|
||||||
|
"content-type": "application/json",
|
||||||
|
"dnt": "1",
|
||||||
|
"origin": "https://magickpen.com",
|
||||||
|
"priority": "u=1, i",
|
||||||
|
"referer": "https://magickpen.com/",
|
||||||
|
"sec-ch-ua": '"Not/A)Brand";v="8", "Chromium";v="126"',
|
||||||
|
"sec-ch-ua-mobile": "?0",
|
||||||
|
"sec-ch-ua-platform": '"Linux"',
|
||||||
|
"sec-fetch-dest": "empty",
|
||||||
|
"sec-fetch-mode": "cors",
|
||||||
|
"sec-fetch-site": "same-site",
|
||||||
|
"user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"
|
||||||
|
}
|
||||||
|
async with ClientSession(headers=headers) as session:
|
||||||
|
data = {
|
||||||
|
"query": format_prompt(messages),
|
||||||
|
"plan": "Pay as you go"
|
||||||
|
}
|
||||||
|
async with session.post(f"{cls.url}{cls.api_endpoint}", json=data, proxy=proxy) as response:
|
||||||
|
response.raise_for_status()
|
||||||
|
async for chunk in response.content:
|
||||||
|
if chunk:
|
||||||
|
yield chunk.decode()
|
50
g4f/Provider/MagickPenChat.py
Normal file
50
g4f/Provider/MagickPenChat.py
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from aiohttp import ClientSession
|
||||||
|
|
||||||
|
from ..typing import AsyncResult, Messages
|
||||||
|
from .base_provider import AsyncGeneratorProvider, ProviderModelMixin
|
||||||
|
from .helper import format_prompt
|
||||||
|
|
||||||
|
|
||||||
|
class MagickPenChat(AsyncGeneratorProvider, ProviderModelMixin):
|
||||||
|
url = "https://api.magickpen.com"
|
||||||
|
api_endpoint = "/chat/free"
|
||||||
|
working = True
|
||||||
|
supports_gpt_4 = True
|
||||||
|
default_model = "gpt-4o-mini"
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
async def create_async_generator(
|
||||||
|
cls,
|
||||||
|
model: str,
|
||||||
|
messages: Messages,
|
||||||
|
proxy: str = None,
|
||||||
|
**kwargs
|
||||||
|
) -> AsyncResult:
|
||||||
|
headers = {
|
||||||
|
"accept": "application/json, text/plain, */*",
|
||||||
|
"accept-language": "en-US,en;q=0.9",
|
||||||
|
"access-control-allow-origin": "*",
|
||||||
|
"content-type": "application/json",
|
||||||
|
"dnt": "1",
|
||||||
|
"origin": "https://magickpen.com",
|
||||||
|
"priority": "u=1, i",
|
||||||
|
"referer": "https://magickpen.com/",
|
||||||
|
"sec-ch-ua": '"Not/A)Brand";v="8", "Chromium";v="126"',
|
||||||
|
"sec-ch-ua-mobile": "?0",
|
||||||
|
"sec-ch-ua-platform": '"Linux"',
|
||||||
|
"sec-fetch-dest": "empty",
|
||||||
|
"sec-fetch-mode": "cors",
|
||||||
|
"sec-fetch-site": "same-site",
|
||||||
|
"user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"
|
||||||
|
}
|
||||||
|
async with ClientSession(headers=headers) as session:
|
||||||
|
data = {
|
||||||
|
"history": [{"role": "user", "content": format_prompt(messages)}]
|
||||||
|
}
|
||||||
|
async with session.post(f"{cls.url}{cls.api_endpoint}", json=data, proxy=proxy) as response:
|
||||||
|
response.raise_for_status()
|
||||||
|
async for chunk in response.content:
|
||||||
|
if chunk:
|
||||||
|
yield chunk.decode()
|
64
g4f/Provider/Marsyoo.py
Normal file
64
g4f/Provider/Marsyoo.py
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import json
|
||||||
|
from aiohttp import ClientSession, ClientResponseError
|
||||||
|
|
||||||
|
from ..typing import AsyncResult, Messages
|
||||||
|
from .base_provider import AsyncGeneratorProvider, ProviderModelMixin
|
||||||
|
from .helper import format_prompt
|
||||||
|
|
||||||
|
|
||||||
|
class Marsyoo(AsyncGeneratorProvider, ProviderModelMixin):
|
||||||
|
url = "https://aiagent.marsyoo.com"
|
||||||
|
api_endpoint = "/api/chat-messages"
|
||||||
|
working = True
|
||||||
|
supports_gpt_4 = True
|
||||||
|
default_model = 'gpt-4o'
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
async def create_async_generator(
|
||||||
|
cls,
|
||||||
|
model: str,
|
||||||
|
messages: Messages,
|
||||||
|
proxy: str = None,
|
||||||
|
**kwargs
|
||||||
|
) -> AsyncResult:
|
||||||
|
headers = {
|
||||||
|
"Accept": "*/*",
|
||||||
|
"Accept-Language": "en-US,en;q=0.9",
|
||||||
|
"Connection": "keep-alive",
|
||||||
|
"DNT": "1",
|
||||||
|
"Origin": cls.url,
|
||||||
|
"Referer": f"{cls.url}/chat",
|
||||||
|
"Sec-Fetch-Dest": "empty",
|
||||||
|
"Sec-Fetch-Mode": "cors",
|
||||||
|
"Sec-Fetch-Site": "same-origin",
|
||||||
|
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
|
||||||
|
"authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiI0MWNkOTE3MS1mNTg1LTRjMTktOTY0Ni01NzgxMTBjYWViNTciLCJzdWIiOiJXZWIgQVBJIFBhc3Nwb3J0IiwiYXBwX2lkIjoiNDFjZDkxNzEtZjU4NS00YzE5LTk2NDYtNTc4MTEwY2FlYjU3IiwiYXBwX2NvZGUiOiJMakhzdWJqNjhMTXZCT0JyIiwiZW5kX3VzZXJfaWQiOiI4YjE5YjY2Mi05M2E1LTRhYTktOGNjNS03MDhmNWE0YmQxNjEifQ.pOzdQ4wTrQjjRlEv1XY9TZitkW5KW1K-wbcUJAoBJ5I",
|
||||||
|
"content-type": "application/json",
|
||||||
|
"sec-ch-ua": '"Not/A)Brand";v="8", "Chromium";v="126"',
|
||||||
|
"sec-ch-ua-mobile": "?0",
|
||||||
|
"sec-ch-ua-platform": "Linux",
|
||||||
|
}
|
||||||
|
async with ClientSession(headers=headers) as session:
|
||||||
|
prompt = format_prompt(messages)
|
||||||
|
data = {
|
||||||
|
"response_mode": "streaming",
|
||||||
|
"query": prompt,
|
||||||
|
"inputs": {},
|
||||||
|
}
|
||||||
|
try:
|
||||||
|
async with session.post(f"{cls.url}{cls.api_endpoint}", json=data, proxy=proxy) as response:
|
||||||
|
response.raise_for_status()
|
||||||
|
async for line in response.content:
|
||||||
|
if line:
|
||||||
|
try:
|
||||||
|
json_data = json.loads(line.decode('utf-8').strip().lstrip('data: '))
|
||||||
|
if json_data['event'] == 'message':
|
||||||
|
yield json_data['answer']
|
||||||
|
elif json_data['event'] == 'message_end':
|
||||||
|
return
|
||||||
|
except json.JSONDecodeError:
|
||||||
|
continue
|
||||||
|
except ClientResponseError as e:
|
||||||
|
yield f"Error: HTTP {e.status}: {e.message}"
|
@ -15,21 +15,8 @@ class PerplexityLabs(AsyncGeneratorProvider, ProviderModelMixin):
|
|||||||
working = True
|
working = True
|
||||||
default_model = "mixtral-8x7b-instruct"
|
default_model = "mixtral-8x7b-instruct"
|
||||||
models = [
|
models = [
|
||||||
"llama-3-sonar-large-32k-online", "llama-3-sonar-small-32k-online", "llama-3-sonar-large-32k-chat", "llama-3-sonar-small-32k-chat",
|
"llama-3-sonar-large-32k-online", "llama-3-sonar-small-32k-online", "llama-3-sonar-large-32k-chat", "llama-3-sonar-small-32k-chat", "llama-3-8b-instruct", "llama-3-70b-instruct", "gemma-2-9b-it", "gemma-2-27b-it", "nemotron-4-340b-instruct", "mixtral-8x7b-instruct",
|
||||||
"dbrx-instruct", "claude-3-haiku-20240307", "llama-3-8b-instruct", "llama-3-70b-instruct", "codellama-70b-instruct", "mistral-7b-instruct",
|
|
||||||
"llava-v1.5-7b-wrapper", "llava-v1.6-34b", "mixtral-8x7b-instruct", "mixtral-8x22b-instruct", "mistral-medium", "gemma-2b-it", "gemma-7b-it",
|
|
||||||
"related"
|
|
||||||
]
|
]
|
||||||
model_aliases = {
|
|
||||||
"mistralai/Mistral-7B-Instruct-v0.1": "mistral-7b-instruct",
|
|
||||||
"mistralai/Mistral-7B-Instruct-v0.2": "mistral-7b-instruct",
|
|
||||||
"mistralai/Mixtral-8x7B-Instruct-v0.1": "mixtral-8x7b-instruct",
|
|
||||||
"codellama/CodeLlama-70b-Instruct-hf": "codellama-70b-instruct",
|
|
||||||
"llava-v1.5-7b": "llava-v1.5-7b-wrapper",
|
|
||||||
"databricks/dbrx-instruct": "dbrx-instruct",
|
|
||||||
"meta-llama/Meta-Llama-3-70B-Instruct": "llama-3-70b-instruct",
|
|
||||||
"meta-llama/Meta-Llama-3-8B-Instruct": "llama-3-8b-instruct"
|
|
||||||
}
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
async def create_async_generator(
|
async def create_async_generator(
|
||||||
|
@ -11,6 +11,7 @@ class Pi(AbstractProvider):
|
|||||||
working = True
|
working = True
|
||||||
supports_stream = True
|
supports_stream = True
|
||||||
_session = None
|
_session = None
|
||||||
|
default_model = "pi"
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def create_completion(
|
def create_completion(
|
||||||
@ -65,4 +66,4 @@ class Pi(AbstractProvider):
|
|||||||
yield json.loads(line.split(b'data: ')[1])
|
yield json.loads(line.split(b'data: ')[1])
|
||||||
elif line.startswith(b'data: {"title":'):
|
elif line.startswith(b'data: {"title":'):
|
||||||
yield json.loads(line.split(b'data: ')[1])
|
yield json.loads(line.split(b'data: ')[1])
|
||||||
|
|
||||||
|
@ -14,40 +14,46 @@ class ReplicateHome(AsyncGeneratorProvider, ProviderModelMixin):
|
|||||||
url = "https://replicate.com"
|
url = "https://replicate.com"
|
||||||
parent = "Replicate"
|
parent = "Replicate"
|
||||||
working = True
|
working = True
|
||||||
default_model = 'stability-ai/sdxl'
|
default_model = 'stability-ai/stable-diffusion-3'
|
||||||
models = [
|
models = [
|
||||||
# image
|
# Models for image generation
|
||||||
'stability-ai/sdxl',
|
'stability-ai/stable-diffusion-3',
|
||||||
'ai-forever/kandinsky-2.2',
|
'bytedance/sdxl-lightning-4step',
|
||||||
|
'playgroundai/playground-v2.5-1024px-aesthetic',
|
||||||
|
|
||||||
# text
|
# Models for image generation
|
||||||
'meta/llama-2-70b-chat',
|
'meta/meta-llama-3-70b-instruct',
|
||||||
'mistralai/mistral-7b-instruct-v0.2'
|
'mistralai/mixtral-8x7b-instruct-v0.1',
|
||||||
|
'google-deepmind/gemma-2b-it',
|
||||||
]
|
]
|
||||||
|
|
||||||
versions = {
|
versions = {
|
||||||
# image
|
# Model versions for generating images
|
||||||
'stability-ai/sdxl': [
|
'stability-ai/stable-diffusion-3': [
|
||||||
"39ed52f2a78e934b3ba6e2a89f5b1c712de7dfea535525255b1aa35c5565e08b",
|
"527d2a6296facb8e47ba1eaf17f142c240c19a30894f437feee9b91cc29d8e4f"
|
||||||
"2b017d9b67edd2ee1401238df49d75da53c523f36e363881e057f5dc3ed3c5b2",
|
|
||||||
"7762fd07cf82c948538e41f63f77d685e02b063e37e496e96eefd46c929f9bdc"
|
|
||||||
],
|
],
|
||||||
'ai-forever/kandinsky-2.2': [
|
'bytedance/sdxl-lightning-4step': [
|
||||||
"ad9d7879fbffa2874e1d909d1d37d9bc682889cc65b31f7bb00d2362619f194a"
|
"5f24084160c9089501c1b3545d9be3c27883ae2239b6f412990e82d4a6210f8f"
|
||||||
|
],
|
||||||
|
'playgroundai/playground-v2.5-1024px-aesthetic': [
|
||||||
|
"a45f82a1382bed5c7aeb861dac7c7d191b0fdf74d8d57c4a0e6ed7d4d0bf7d24"
|
||||||
],
|
],
|
||||||
|
|
||||||
|
|
||||||
# Text
|
|
||||||
'meta/llama-2-70b-chat': [
|
# Model versions for text generation
|
||||||
"dp-542693885b1777c98ef8c5a98f2005e7"
|
'meta/meta-llama-3-70b-instruct': [
|
||||||
|
"dp-cf04fe09351e25db628e8b6181276547"
|
||||||
],
|
],
|
||||||
'mistralai/mistral-7b-instruct-v0.2': [
|
'mistralai/mixtral-8x7b-instruct-v0.1': [
|
||||||
"dp-89e00f489d498885048e94f9809fbc76"
|
"dp-89e00f489d498885048e94f9809fbc76"
|
||||||
|
],
|
||||||
|
'google-deepmind/gemma-2b-it': [
|
||||||
|
"dff94eaf770e1fc211e425a50b51baa8e4cac6c39ef074681f9e39d778773626"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
image_models = {"stability-ai/sdxl", "ai-forever/kandinsky-2.2"}
|
image_models = {"stability-ai/stable-diffusion-3", "bytedance/sdxl-lightning-4step", "playgroundai/playground-v2.5-1024px-aesthetic"}
|
||||||
text_models = {"meta/llama-2-70b-chat", "mistralai/mistral-7b-instruct-v0.2"}
|
text_models = {"meta/meta-llama-3-70b-instruct", "mistralai/mixtral-8x7b-instruct-v0.1", "google-deepmind/gemma-2b-it"}
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
async def create_async_generator(
|
async def create_async_generator(
|
||||||
|
62
g4f/Provider/TeachAnything.py
Normal file
62
g4f/Provider/TeachAnything.py
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from typing import Any, Dict
|
||||||
|
|
||||||
|
from aiohttp import ClientSession, ClientTimeout
|
||||||
|
|
||||||
|
from ..typing import AsyncResult, Messages
|
||||||
|
from .base_provider import AsyncGeneratorProvider, ProviderModelMixin
|
||||||
|
from .helper import format_prompt
|
||||||
|
|
||||||
|
|
||||||
|
class TeachAnything(AsyncGeneratorProvider, ProviderModelMixin):
|
||||||
|
url = "https://www.teach-anything.com"
|
||||||
|
api_endpoint = "/api/generate"
|
||||||
|
working = True
|
||||||
|
default_model = "llama-3-70b-instruct"
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
async def create_async_generator(
|
||||||
|
cls,
|
||||||
|
model: str,
|
||||||
|
messages: Messages,
|
||||||
|
proxy: str | None = None,
|
||||||
|
**kwargs: Any
|
||||||
|
) -> AsyncResult:
|
||||||
|
headers = cls._get_headers()
|
||||||
|
|
||||||
|
async with ClientSession(headers=headers) as session:
|
||||||
|
prompt = format_prompt(messages)
|
||||||
|
data = {"prompt": prompt}
|
||||||
|
|
||||||
|
timeout = ClientTimeout(total=60)
|
||||||
|
|
||||||
|
async with session.post(
|
||||||
|
f"{cls.url}{cls.api_endpoint}",
|
||||||
|
json=data,
|
||||||
|
proxy=proxy,
|
||||||
|
timeout=timeout
|
||||||
|
) as response:
|
||||||
|
response.raise_for_status()
|
||||||
|
async for chunk in response.content.iter_any():
|
||||||
|
if chunk:
|
||||||
|
yield chunk.decode()
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _get_headers() -> Dict[str, str]:
|
||||||
|
return {
|
||||||
|
"accept": "*/*",
|
||||||
|
"accept-language": "en-US,en;q=0.9",
|
||||||
|
"content-type": "application/json",
|
||||||
|
"dnt": "1",
|
||||||
|
"origin": "https://www.teach-anything.com",
|
||||||
|
"priority": "u=1, i",
|
||||||
|
"referer": "https://www.teach-anything.com/",
|
||||||
|
"sec-ch-ua": '"Not/A)Brand";v="8", "Chromium";v="126"',
|
||||||
|
"sec-ch-ua-mobile": "?0",
|
||||||
|
"sec-ch-ua-platform": '"Linux"',
|
||||||
|
"sec-fetch-dest": "empty",
|
||||||
|
"sec-fetch-mode": "cors",
|
||||||
|
"sec-fetch-site": "same-origin",
|
||||||
|
"user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"
|
||||||
|
}
|
@ -24,27 +24,27 @@ class You(AsyncGeneratorProvider, ProviderModelMixin):
|
|||||||
image_models = ["dall-e"]
|
image_models = ["dall-e"]
|
||||||
models = [
|
models = [
|
||||||
default_model,
|
default_model,
|
||||||
|
"gpt-4o-mini",
|
||||||
"gpt-4o",
|
"gpt-4o",
|
||||||
"gpt-4",
|
|
||||||
"gpt-4-turbo",
|
"gpt-4-turbo",
|
||||||
"claude-instant",
|
"gpt-4",
|
||||||
"claude-2",
|
"claude-3.5-sonnet",
|
||||||
"claude-3-opus",
|
"claude-3-opus",
|
||||||
"claude-3-sonnet",
|
"claude-3-sonnet",
|
||||||
"claude-3-haiku",
|
"claude-3-haiku",
|
||||||
"gemini-pro",
|
"claude-2",
|
||||||
|
"llama-3.1-70b",
|
||||||
|
"llama-3",
|
||||||
|
"gemini-1-5-flash",
|
||||||
"gemini-1-5-pro",
|
"gemini-1-5-pro",
|
||||||
|
"gemini-1-0-pro",
|
||||||
"databricks-dbrx-instruct",
|
"databricks-dbrx-instruct",
|
||||||
"command-r",
|
"command-r",
|
||||||
"command-r-plus",
|
"command-r-plus",
|
||||||
"llama3",
|
"dolphin-2.5",
|
||||||
"zephyr",
|
|
||||||
default_vision_model,
|
default_vision_model,
|
||||||
*image_models
|
*image_models
|
||||||
]
|
]
|
||||||
model_aliases = {
|
|
||||||
"claude-v2": "claude-2",
|
|
||||||
}
|
|
||||||
_cookies = None
|
_cookies = None
|
||||||
_cookies_used = 0
|
_cookies_used = 0
|
||||||
_telemetry_ids = []
|
_telemetry_ids = []
|
||||||
@ -220,4 +220,4 @@ class You(AsyncGeneratorProvider, ProviderModelMixin):
|
|||||||
'stytch_session_jwt': session["session_jwt"],
|
'stytch_session_jwt': session["session_jwt"],
|
||||||
'ydc_stytch_session': session["session_token"],
|
'ydc_stytch_session': session["session_token"],
|
||||||
'ydc_stytch_session_jwt': session["session_jwt"],
|
'ydc_stytch_session_jwt': session["session_jwt"],
|
||||||
}
|
}
|
||||||
|
@ -11,10 +11,12 @@ from .selenium import *
|
|||||||
from .needs_auth import *
|
from .needs_auth import *
|
||||||
|
|
||||||
from .AI365VIP import AI365VIP
|
from .AI365VIP import AI365VIP
|
||||||
|
from .Allyfy import Allyfy
|
||||||
from .Aura import Aura
|
from .Aura import Aura
|
||||||
from .Bing import Bing
|
from .Bing import Bing
|
||||||
from .BingCreateImages import BingCreateImages
|
from .BingCreateImages import BingCreateImages
|
||||||
from .Blackbox import Blackbox
|
from .Blackbox import Blackbox
|
||||||
|
from .ChatGot import ChatGot
|
||||||
from .Chatgpt4o import Chatgpt4o
|
from .Chatgpt4o import Chatgpt4o
|
||||||
from .Chatgpt4Online import Chatgpt4Online
|
from .Chatgpt4Online import Chatgpt4Online
|
||||||
from .ChatgptFree import ChatgptFree
|
from .ChatgptFree import ChatgptFree
|
||||||
@ -25,16 +27,22 @@ from .DeepInfraImage import DeepInfraImage
|
|||||||
from .FlowGpt import FlowGpt
|
from .FlowGpt import FlowGpt
|
||||||
from .FreeChatgpt import FreeChatgpt
|
from .FreeChatgpt import FreeChatgpt
|
||||||
from .FreeGpt import FreeGpt
|
from .FreeGpt import FreeGpt
|
||||||
|
from .FreeNetfly import FreeNetfly
|
||||||
from .GeminiPro import GeminiPro
|
from .GeminiPro import GeminiPro
|
||||||
from .GeminiProChat import GeminiProChat
|
from .GeminiProChat import GeminiProChat
|
||||||
from .GigaChat import GigaChat
|
from .GigaChat import GigaChat
|
||||||
from .GptTalkRu import GptTalkRu
|
from .GptTalkRu import GptTalkRu
|
||||||
from .HuggingChat import HuggingChat
|
from .HuggingChat import HuggingChat
|
||||||
from .HuggingFace import HuggingFace
|
from .HuggingFace import HuggingFace
|
||||||
|
from .HuggingFace import HuggingFace
|
||||||
from .Koala import Koala
|
from .Koala import Koala
|
||||||
from .Liaobots import Liaobots
|
from .Liaobots import Liaobots
|
||||||
|
from .LiteIcoding import LiteIcoding
|
||||||
from .Llama import Llama
|
from .Llama import Llama
|
||||||
from .Local import Local
|
from .Local import Local
|
||||||
|
from .MagickPenAsk import MagickPenAsk
|
||||||
|
from .MagickPenChat import MagickPenChat
|
||||||
|
from .Marsyoo import Marsyoo
|
||||||
from .MetaAI import MetaAI
|
from .MetaAI import MetaAI
|
||||||
from .MetaAIAccount import MetaAIAccount
|
from .MetaAIAccount import MetaAIAccount
|
||||||
from .Ollama import Ollama
|
from .Ollama import Ollama
|
||||||
@ -44,6 +52,7 @@ from .Pizzagpt import Pizzagpt
|
|||||||
from .Reka import Reka
|
from .Reka import Reka
|
||||||
from .Replicate import Replicate
|
from .Replicate import Replicate
|
||||||
from .ReplicateHome import ReplicateHome
|
from .ReplicateHome import ReplicateHome
|
||||||
|
from .TeachAnything import TeachAnything
|
||||||
from .Vercel import Vercel
|
from .Vercel import Vercel
|
||||||
from .WhiteRabbitNeo import WhiteRabbitNeo
|
from .WhiteRabbitNeo import WhiteRabbitNeo
|
||||||
from .You import You
|
from .You import You
|
||||||
|
@ -16,6 +16,7 @@ class Openai(AsyncGeneratorProvider, ProviderModelMixin):
|
|||||||
needs_auth = True
|
needs_auth = True
|
||||||
supports_message_history = True
|
supports_message_history = True
|
||||||
supports_system_message = True
|
supports_system_message = True
|
||||||
|
default_model = ""
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
async def create_async_generator(
|
async def create_async_generator(
|
||||||
@ -120,4 +121,4 @@ class Openai(AsyncGeneratorProvider, ProviderModelMixin):
|
|||||||
if api_key is not None else {}
|
if api_key is not None else {}
|
||||||
),
|
),
|
||||||
**({} if headers is None else headers)
|
**({} if headers is None else headers)
|
||||||
}
|
}
|
||||||
|
@ -55,16 +55,13 @@ class OpenaiChat(AsyncGeneratorProvider, ProviderModelMixin):
|
|||||||
label = "OpenAI ChatGPT"
|
label = "OpenAI ChatGPT"
|
||||||
url = "https://chatgpt.com"
|
url = "https://chatgpt.com"
|
||||||
working = True
|
working = True
|
||||||
supports_gpt_35_turbo = True
|
|
||||||
supports_gpt_4 = True
|
supports_gpt_4 = True
|
||||||
supports_message_history = True
|
supports_message_history = True
|
||||||
supports_system_message = True
|
supports_system_message = True
|
||||||
default_model = None
|
default_model = None
|
||||||
default_vision_model = "gpt-4o"
|
default_vision_model = "gpt-4o"
|
||||||
models = ["gpt-3.5-turbo", "gpt-4", "gpt-4-gizmo", "gpt-4o", "auto"]
|
models = [ "auto", "gpt-4o-mini", "gpt-4o", "gpt-4", "gpt-4-gizmo"]
|
||||||
model_aliases = {
|
model_aliases = {
|
||||||
"text-davinci-002-render-sha": "gpt-3.5-turbo",
|
|
||||||
"": "gpt-3.5-turbo",
|
|
||||||
"gpt-4-turbo-preview": "gpt-4",
|
"gpt-4-turbo-preview": "gpt-4",
|
||||||
"dall-e": "gpt-4",
|
"dall-e": "gpt-4",
|
||||||
}
|
}
|
||||||
|
@ -229,8 +229,8 @@
|
|||||||
<option value="">Model: Default</option>
|
<option value="">Model: Default</option>
|
||||||
<option value="gpt-4">gpt-4</option>
|
<option value="gpt-4">gpt-4</option>
|
||||||
<option value="gpt-3.5-turbo">gpt-3.5-turbo</option>
|
<option value="gpt-3.5-turbo">gpt-3.5-turbo</option>
|
||||||
<option value="llama2-70b">llama2-70b</option>
|
<option value="llama-3-70b-chat">llama-3-70b-chat</option>
|
||||||
<option value="llama3-70b-instruct">llama3-70b-instruct</option>
|
<option value="llama-3.1-70b">llama-3.1-70b</option>
|
||||||
<option value="gemini-pro">gemini-pro</option>
|
<option value="gemini-pro">gemini-pro</option>
|
||||||
<option value="">----</option>
|
<option value="">----</option>
|
||||||
</select>
|
</select>
|
||||||
|
443
g4f/models.py
443
g4f/models.py
@ -5,35 +5,44 @@ from dataclasses import dataclass
|
|||||||
from .Provider import IterListProvider, ProviderType
|
from .Provider import IterListProvider, ProviderType
|
||||||
from .Provider import (
|
from .Provider import (
|
||||||
AI365VIP,
|
AI365VIP,
|
||||||
Bing,
|
Allyfy,
|
||||||
Blackbox,
|
Bing,
|
||||||
Chatgpt4o,
|
Blackbox,
|
||||||
ChatgptFree,
|
ChatGot,
|
||||||
DDG,
|
Chatgpt4o,
|
||||||
DeepInfra,
|
Chatgpt4Online,
|
||||||
DeepInfraImage,
|
ChatgptFree,
|
||||||
FreeChatgpt,
|
DDG,
|
||||||
FreeGpt,
|
DeepInfra,
|
||||||
Gemini,
|
DeepInfraImage,
|
||||||
GeminiPro,
|
FreeChatgpt,
|
||||||
GeminiProChat,
|
FreeGpt,
|
||||||
GigaChat,
|
FreeNetfly,
|
||||||
HuggingChat,
|
Gemini,
|
||||||
HuggingFace,
|
GeminiPro,
|
||||||
Koala,
|
GeminiProChat,
|
||||||
Liaobots,
|
GigaChat,
|
||||||
MetaAI,
|
HuggingChat,
|
||||||
OpenaiChat,
|
HuggingFace,
|
||||||
PerplexityLabs,
|
Koala,
|
||||||
Pi,
|
Liaobots,
|
||||||
Pizzagpt,
|
LiteIcoding,
|
||||||
Reka,
|
MagickPenAsk,
|
||||||
Replicate,
|
MagickPenChat,
|
||||||
ReplicateHome,
|
Marsyoo,
|
||||||
Vercel,
|
MetaAI,
|
||||||
You,
|
OpenaiChat,
|
||||||
|
PerplexityLabs,
|
||||||
|
Pi,
|
||||||
|
Pizzagpt,
|
||||||
|
Reka,
|
||||||
|
Replicate,
|
||||||
|
ReplicateHome,
|
||||||
|
TeachAnything,
|
||||||
|
You,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@dataclass(unsafe_hash=True)
|
@dataclass(unsafe_hash=True)
|
||||||
class Model:
|
class Model:
|
||||||
"""
|
"""
|
||||||
@ -77,13 +86,13 @@ gpt_35_long = Model(
|
|||||||
best_provider = IterListProvider([
|
best_provider = IterListProvider([
|
||||||
FreeGpt,
|
FreeGpt,
|
||||||
You,
|
You,
|
||||||
OpenaiChat,
|
|
||||||
Koala,
|
Koala,
|
||||||
ChatgptFree,
|
ChatgptFree,
|
||||||
FreeChatgpt,
|
FreeChatgpt,
|
||||||
DDG,
|
DDG,
|
||||||
AI365VIP,
|
AI365VIP,
|
||||||
Pizzagpt,
|
Pizzagpt,
|
||||||
|
Allyfy,
|
||||||
])
|
])
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -101,71 +110,43 @@ gpt_35_turbo = Model(
|
|||||||
FreeGpt,
|
FreeGpt,
|
||||||
You,
|
You,
|
||||||
Koala,
|
Koala,
|
||||||
OpenaiChat,
|
|
||||||
ChatgptFree,
|
ChatgptFree,
|
||||||
FreeChatgpt,
|
FreeChatgpt,
|
||||||
DDG,
|
|
||||||
AI365VIP,
|
AI365VIP,
|
||||||
Pizzagpt,
|
Pizzagpt,
|
||||||
|
Allyfy,
|
||||||
])
|
])
|
||||||
)
|
)
|
||||||
|
|
||||||
gpt_35_turbo_16k = Model(
|
|
||||||
name = 'gpt-3.5-turbo-16k',
|
|
||||||
base_provider = 'openai',
|
|
||||||
best_provider = gpt_35_long.best_provider
|
|
||||||
)
|
|
||||||
|
|
||||||
gpt_35_turbo_16k_0613 = Model(
|
|
||||||
name = 'gpt-3.5-turbo-16k-0613',
|
|
||||||
base_provider = 'openai',
|
|
||||||
best_provider = gpt_35_long.best_provider
|
|
||||||
)
|
|
||||||
|
|
||||||
gpt_35_turbo_0613 = Model(
|
|
||||||
name = 'gpt-3.5-turbo-0613',
|
|
||||||
base_provider = 'openai',
|
|
||||||
best_provider = gpt_35_turbo.best_provider
|
|
||||||
)
|
|
||||||
|
|
||||||
# gpt-4
|
# gpt-4
|
||||||
gpt_4 = Model(
|
gpt_4 = Model(
|
||||||
name = 'gpt-4',
|
name = 'gpt-4',
|
||||||
base_provider = 'openai',
|
base_provider = 'openai',
|
||||||
best_provider = IterListProvider([
|
best_provider = IterListProvider([
|
||||||
Bing, Liaobots,
|
Bing, Chatgpt4Online
|
||||||
])
|
])
|
||||||
)
|
)
|
||||||
|
|
||||||
gpt_4_0613 = Model(
|
|
||||||
name = 'gpt-4-0613',
|
|
||||||
base_provider = 'openai',
|
|
||||||
best_provider = gpt_4.best_provider
|
|
||||||
)
|
|
||||||
|
|
||||||
gpt_4_32k = Model(
|
|
||||||
name = 'gpt-4-32k',
|
|
||||||
base_provider = 'openai',
|
|
||||||
best_provider = gpt_4.best_provider
|
|
||||||
)
|
|
||||||
|
|
||||||
gpt_4_32k_0613 = Model(
|
|
||||||
name = 'gpt-4-32k-0613',
|
|
||||||
base_provider = 'openai',
|
|
||||||
best_provider = gpt_4.best_provider
|
|
||||||
)
|
|
||||||
|
|
||||||
gpt_4_turbo = Model(
|
gpt_4_turbo = Model(
|
||||||
name = 'gpt-4-turbo',
|
name = 'gpt-4-turbo',
|
||||||
base_provider = 'openai',
|
base_provider = 'openai',
|
||||||
best_provider = Bing
|
best_provider = IterListProvider([
|
||||||
|
Bing, Liaobots, LiteIcoding
|
||||||
|
])
|
||||||
)
|
)
|
||||||
|
|
||||||
gpt_4o = Model(
|
gpt_4o = Model(
|
||||||
name = 'gpt-4o',
|
name = 'gpt-4o',
|
||||||
base_provider = 'openai',
|
base_provider = 'openai',
|
||||||
best_provider = IterListProvider([
|
best_provider = IterListProvider([
|
||||||
You, Liaobots, Chatgpt4o, AI365VIP
|
You, Liaobots, Chatgpt4o, AI365VIP, OpenaiChat, Marsyoo, LiteIcoding, MagickPenAsk,
|
||||||
|
])
|
||||||
|
)
|
||||||
|
|
||||||
|
gpt_4o_mini = Model(
|
||||||
|
name = 'gpt-4o-mini',
|
||||||
|
base_provider = 'openai',
|
||||||
|
best_provider = IterListProvider([
|
||||||
|
DDG, Liaobots, OpenaiChat, You, FreeNetfly, MagickPenChat,
|
||||||
])
|
])
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -185,34 +166,40 @@ meta = Model(
|
|||||||
best_provider = MetaAI
|
best_provider = MetaAI
|
||||||
)
|
)
|
||||||
|
|
||||||
llama_2_70b_chat = Model(
|
llama_3_8b_instruct = Model(
|
||||||
name = "meta/llama-2-70b-chat",
|
|
||||||
base_provider = "meta",
|
|
||||||
best_provider = IterListProvider([ReplicateHome])
|
|
||||||
)
|
|
||||||
|
|
||||||
llama3_8b_instruct = Model(
|
|
||||||
name = "meta-llama/Meta-Llama-3-8B-Instruct",
|
name = "meta-llama/Meta-Llama-3-8B-Instruct",
|
||||||
base_provider = "meta",
|
base_provider = "meta",
|
||||||
best_provider = IterListProvider([DeepInfra, PerplexityLabs, Replicate])
|
best_provider = IterListProvider([DeepInfra, PerplexityLabs, Replicate])
|
||||||
)
|
)
|
||||||
|
|
||||||
llama3_70b_instruct = Model(
|
llama_3_70b_instruct = Model(
|
||||||
name = "meta-llama/Meta-Llama-3-70B-Instruct",
|
name = "meta-llama/Meta-Llama-3-70B-Instruct",
|
||||||
base_provider = "meta",
|
base_provider = "meta",
|
||||||
best_provider = IterListProvider([DeepInfra, PerplexityLabs, Replicate, HuggingChat, DDG])
|
best_provider = IterListProvider([DeepInfra, PerplexityLabs, Replicate])
|
||||||
)
|
)
|
||||||
|
|
||||||
codellama_34b_instruct = Model(
|
llama_3_70b_instruct = Model(
|
||||||
name = "codellama/CodeLlama-34b-Instruct-hf",
|
name = "meta/meta-llama-3-70b-instruct",
|
||||||
base_provider = "meta",
|
base_provider = "meta",
|
||||||
best_provider = HuggingChat
|
best_provider = IterListProvider([ReplicateHome, TeachAnything])
|
||||||
)
|
)
|
||||||
|
|
||||||
codellama_70b_instruct = Model(
|
llama_3_70b_chat_hf = Model(
|
||||||
name = "codellama/CodeLlama-70b-Instruct-hf",
|
name = "meta-llama/Llama-3-70b-chat-hf",
|
||||||
base_provider = "meta",
|
base_provider = "meta",
|
||||||
best_provider = IterListProvider([DeepInfra])
|
best_provider = IterListProvider([DDG])
|
||||||
|
)
|
||||||
|
|
||||||
|
llama_3_1_70b_instruct = Model(
|
||||||
|
name = "meta-llama/Meta-Llama-3.1-70B-Instruct",
|
||||||
|
base_provider = "meta",
|
||||||
|
best_provider = IterListProvider([HuggingChat, HuggingFace])
|
||||||
|
)
|
||||||
|
|
||||||
|
llama_3_1_405b_instruct_FP8 = Model(
|
||||||
|
name = "meta-llama/Meta-Llama-3.1-405B-Instruct-FP8",
|
||||||
|
base_provider = "meta",
|
||||||
|
best_provider = IterListProvider([HuggingChat, HuggingFace])
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -220,13 +207,13 @@ codellama_70b_instruct = Model(
|
|||||||
mixtral_8x7b = Model(
|
mixtral_8x7b = Model(
|
||||||
name = "mistralai/Mixtral-8x7B-Instruct-v0.1",
|
name = "mistralai/Mixtral-8x7B-Instruct-v0.1",
|
||||||
base_provider = "huggingface",
|
base_provider = "huggingface",
|
||||||
best_provider = IterListProvider([DeepInfra, HuggingFace, PerplexityLabs, HuggingChat, DDG])
|
best_provider = IterListProvider([DeepInfra, HuggingFace, PerplexityLabs, HuggingChat, DDG, ReplicateHome])
|
||||||
)
|
)
|
||||||
|
|
||||||
mistral_7b_v02 = Model(
|
mistral_7b_v02 = Model(
|
||||||
name = "mistralai/Mistral-7B-Instruct-v0.2",
|
name = "mistralai/Mistral-7B-Instruct-v0.2",
|
||||||
base_provider = "huggingface",
|
base_provider = "huggingface",
|
||||||
best_provider = IterListProvider([DeepInfra, HuggingFace, HuggingChat, ReplicateHome])
|
best_provider = IterListProvider([DeepInfra, HuggingFace, HuggingChat])
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -239,7 +226,7 @@ Nous_Hermes_2_Mixtral_8x7B_DPO = Model(
|
|||||||
|
|
||||||
|
|
||||||
### 01-ai ###
|
### 01-ai ###
|
||||||
Yi_1_5_34B_Chat = Model(
|
Yi_1_5_34B_chat = Model(
|
||||||
name = "01-ai/Yi-1.5-34B-Chat",
|
name = "01-ai/Yi-1.5-34B-Chat",
|
||||||
base_provider = "01-ai",
|
base_provider = "01-ai",
|
||||||
best_provider = IterListProvider([HuggingFace, HuggingChat])
|
best_provider = IterListProvider([HuggingFace, HuggingChat])
|
||||||
@ -265,10 +252,28 @@ gemini = Model(
|
|||||||
gemini_pro = Model(
|
gemini_pro = Model(
|
||||||
name = 'gemini-pro',
|
name = 'gemini-pro',
|
||||||
base_provider = 'Google',
|
base_provider = 'Google',
|
||||||
best_provider = IterListProvider([GeminiPro, You, GeminiProChat])
|
best_provider = IterListProvider([GeminiPro, You, ChatGot, GeminiProChat, Liaobots, LiteIcoding])
|
||||||
|
)
|
||||||
|
|
||||||
|
gemini_flash = Model(
|
||||||
|
name = 'gemini-flash',
|
||||||
|
base_provider = 'Google',
|
||||||
|
best_provider = IterListProvider([Liaobots])
|
||||||
|
)
|
||||||
|
|
||||||
|
gemini_1_5 = Model(
|
||||||
|
name = 'gemini-1.5',
|
||||||
|
base_provider = 'Google',
|
||||||
|
best_provider = IterListProvider([LiteIcoding])
|
||||||
)
|
)
|
||||||
|
|
||||||
# gemma
|
# gemma
|
||||||
|
gemma_2b_it = Model(
|
||||||
|
name = 'gemma-2b-it',
|
||||||
|
base_provider = 'Google',
|
||||||
|
best_provider = IterListProvider([ReplicateHome])
|
||||||
|
)
|
||||||
|
|
||||||
gemma_2_9b_it = Model(
|
gemma_2_9b_it = Model(
|
||||||
name = 'gemma-2-9b-it',
|
name = 'gemma-2-9b-it',
|
||||||
base_provider = 'Google',
|
base_provider = 'Google',
|
||||||
@ -283,28 +288,58 @@ gemma_2_27b_it = Model(
|
|||||||
|
|
||||||
|
|
||||||
### Anthropic ###
|
### Anthropic ###
|
||||||
claude_v2 = Model(
|
claude_2 = Model(
|
||||||
name = 'claude-v2',
|
name = 'claude-2',
|
||||||
base_provider = 'anthropic',
|
base_provider = 'Anthropic',
|
||||||
best_provider = IterListProvider([Vercel])
|
best_provider = IterListProvider([You])
|
||||||
|
)
|
||||||
|
|
||||||
|
claude_2_0 = Model(
|
||||||
|
name = 'claude-2.0',
|
||||||
|
base_provider = 'Anthropic',
|
||||||
|
best_provider = IterListProvider([Liaobots])
|
||||||
|
)
|
||||||
|
|
||||||
|
claude_2_1 = Model(
|
||||||
|
name = 'claude-2.1',
|
||||||
|
base_provider = 'Anthropic',
|
||||||
|
best_provider = IterListProvider([Liaobots])
|
||||||
)
|
)
|
||||||
|
|
||||||
claude_3_opus = Model(
|
claude_3_opus = Model(
|
||||||
name = 'claude-3-opus',
|
name = 'claude-3-opus',
|
||||||
base_provider = 'anthropic',
|
base_provider = 'Anthropic',
|
||||||
best_provider = You
|
best_provider = IterListProvider([You, Liaobots])
|
||||||
)
|
)
|
||||||
|
|
||||||
claude_3_sonnet = Model(
|
claude_3_sonnet = Model(
|
||||||
name = 'claude-3-sonnet',
|
name = 'claude-3-sonnet',
|
||||||
base_provider = 'anthropic',
|
base_provider = 'Anthropic',
|
||||||
best_provider = You
|
best_provider = IterListProvider([You, Liaobots])
|
||||||
|
)
|
||||||
|
|
||||||
|
claude_3_5_sonnet = Model(
|
||||||
|
name = 'claude-3-5-sonnet',
|
||||||
|
base_provider = 'Anthropic',
|
||||||
|
best_provider = IterListProvider([Liaobots])
|
||||||
)
|
)
|
||||||
|
|
||||||
claude_3_haiku = Model(
|
claude_3_haiku = Model(
|
||||||
name = 'claude-3-haiku',
|
name = 'claude-3-haiku',
|
||||||
base_provider = 'anthropic',
|
base_provider = 'Anthropic',
|
||||||
best_provider = IterListProvider([DDG, AI365VIP])
|
best_provider = IterListProvider([DDG, AI365VIP, Liaobots])
|
||||||
|
)
|
||||||
|
|
||||||
|
claude_3 = Model(
|
||||||
|
name = 'claude-3',
|
||||||
|
base_provider = 'Anthropic',
|
||||||
|
best_provider = IterListProvider([LiteIcoding])
|
||||||
|
)
|
||||||
|
|
||||||
|
claude_3_5 = Model(
|
||||||
|
name = 'claude-3.5',
|
||||||
|
base_provider = 'Anthropic',
|
||||||
|
best_provider = IterListProvider([LiteIcoding])
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -348,6 +383,58 @@ command_r_plus = Model(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
### iFlytek ###
|
||||||
|
SparkDesk_v1_1 = Model(
|
||||||
|
name = 'SparkDesk-v1.1',
|
||||||
|
base_provider = 'iFlytek',
|
||||||
|
best_provider = IterListProvider([FreeChatgpt])
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
### DeepSeek ###
|
||||||
|
deepseek_coder = Model(
|
||||||
|
name = 'deepseek-coder',
|
||||||
|
base_provider = 'DeepSeek',
|
||||||
|
best_provider = IterListProvider([FreeChatgpt])
|
||||||
|
)
|
||||||
|
|
||||||
|
deepseek_chat = Model(
|
||||||
|
name = 'deepseek-chat',
|
||||||
|
base_provider = 'DeepSeek',
|
||||||
|
best_provider = IterListProvider([FreeChatgpt])
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
### Qwen ###
|
||||||
|
Qwen2_7B_instruct = Model(
|
||||||
|
name = 'Qwen2-7B-Instruct',
|
||||||
|
base_provider = 'Qwen',
|
||||||
|
best_provider = IterListProvider([FreeChatgpt])
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
### Zhipu AI ###
|
||||||
|
glm4_9B_chat = Model(
|
||||||
|
name = 'glm4-9B-chat',
|
||||||
|
base_provider = 'Zhipu AI',
|
||||||
|
best_provider = IterListProvider([FreeChatgpt])
|
||||||
|
)
|
||||||
|
|
||||||
|
chatglm3_6B = Model(
|
||||||
|
name = 'chatglm3-6B',
|
||||||
|
base_provider = 'Zhipu AI',
|
||||||
|
best_provider = IterListProvider([FreeChatgpt])
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
### 01-ai ###
|
||||||
|
Yi_1_5_9B_chat = Model(
|
||||||
|
name = 'Yi-1.5-9B-Chat',
|
||||||
|
base_provider = '01-ai',
|
||||||
|
best_provider = IterListProvider([FreeChatgpt])
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
### Other ###
|
### Other ###
|
||||||
pi = Model(
|
pi = Model(
|
||||||
name = 'pi',
|
name = 'pi',
|
||||||
@ -364,14 +451,27 @@ pi = Model(
|
|||||||
sdxl = Model(
|
sdxl = Model(
|
||||||
name = 'stability-ai/sdxl',
|
name = 'stability-ai/sdxl',
|
||||||
base_provider = 'Stability AI',
|
base_provider = 'Stability AI',
|
||||||
best_provider = IterListProvider([ReplicateHome, DeepInfraImage])
|
best_provider = IterListProvider([DeepInfraImage])
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
### AI Forever ###
|
stable_diffusion_3 = Model(
|
||||||
kandinsky_2_2 = Model(
|
name = 'stability-ai/stable-diffusion-3',
|
||||||
name = 'ai-forever/kandinsky-2.2',
|
base_provider = 'Stability AI',
|
||||||
base_provider = 'AI Forever',
|
best_provider = IterListProvider([ReplicateHome])
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
|
sdxl_lightning_4step = Model(
|
||||||
|
name = 'bytedance/sdxl-lightning-4step',
|
||||||
|
base_provider = 'Stability AI',
|
||||||
|
best_provider = IterListProvider([ReplicateHome])
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
|
playground_v2_5_1024px_aesthetic = Model(
|
||||||
|
name = 'playgroundai/playground-v2.5-1024px-aesthetic',
|
||||||
|
base_provider = 'Stability AI',
|
||||||
best_provider = IterListProvider([ReplicateHome])
|
best_provider = IterListProvider([ReplicateHome])
|
||||||
|
|
||||||
)
|
)
|
||||||
@ -385,113 +485,124 @@ class ModelUtils:
|
|||||||
"""
|
"""
|
||||||
convert: dict[str, Model] = {
|
convert: dict[str, Model] = {
|
||||||
|
|
||||||
############
|
############
|
||||||
### Text ###
|
### Text ###
|
||||||
############
|
############
|
||||||
|
|
||||||
### OpenAI ###
|
### OpenAI ###
|
||||||
### GPT-3.5 / GPT-4 ###
|
### GPT-3.5 / GPT-4 ###
|
||||||
# gpt-3.5
|
# gpt-3.5
|
||||||
'gpt-3.5-turbo' : gpt_35_turbo,
|
'gpt-3.5-turbo': gpt_35_turbo,
|
||||||
'gpt-3.5-turbo-0613' : gpt_35_turbo_0613,
|
|
||||||
'gpt-3.5-turbo-16k' : gpt_35_turbo_16k,
|
|
||||||
'gpt-3.5-turbo-16k-0613' : gpt_35_turbo_16k_0613,
|
|
||||||
'gpt-3.5-long': gpt_35_long,
|
'gpt-3.5-long': gpt_35_long,
|
||||||
|
|
||||||
# gpt-4
|
# gpt-4
|
||||||
'gpt-4o' : gpt_4o,
|
'gpt-4o' : gpt_4o,
|
||||||
|
'gpt-4o-mini' : gpt_4o_mini,
|
||||||
'gpt-4' : gpt_4,
|
'gpt-4' : gpt_4,
|
||||||
'gpt-4-0613' : gpt_4_0613,
|
|
||||||
'gpt-4-32k' : gpt_4_32k,
|
|
||||||
'gpt-4-32k-0613' : gpt_4_32k_0613,
|
|
||||||
'gpt-4-turbo' : gpt_4_turbo,
|
'gpt-4-turbo' : gpt_4_turbo,
|
||||||
|
|
||||||
|
### Meta ###
|
||||||
### Meta ###
|
|
||||||
"meta-ai": meta,
|
"meta-ai": meta,
|
||||||
|
|
||||||
'llama-2-70b-chat': llama_2_70b_chat,
|
'llama-3-8b-instruct': llama_3_8b_instruct,
|
||||||
'llama3-8b': llama3_8b_instruct, # alias
|
'llama-3-70b-instruct': llama_3_70b_instruct,
|
||||||
'llama3-70b': llama3_70b_instruct, # alias
|
'llama-3-70b-chat': llama_3_70b_chat_hf,
|
||||||
'llama3-8b-instruct' : llama3_8b_instruct,
|
'llama-3-70b-instruct': llama_3_70b_instruct,
|
||||||
'llama3-70b-instruct': llama3_70b_instruct,
|
'llama-3.1-70b-instruct': llama_3_1_70b_instruct,
|
||||||
|
'llama-3.1-405b-instruct': llama_3_1_405b_instruct_FP8,
|
||||||
'codellama-34b-instruct': codellama_34b_instruct,
|
|
||||||
'codellama-70b-instruct': codellama_70b_instruct,
|
|
||||||
|
|
||||||
|
|
||||||
### Mistral (Opensource) ###
|
### Mistral (Opensource) ###
|
||||||
'mixtral-8x7b': mixtral_8x7b,
|
'mixtral-8x7b': mixtral_8x7b,
|
||||||
'mistral-7b-v02': mistral_7b_v02,
|
'mistral-7b-v02': mistral_7b_v02,
|
||||||
|
|
||||||
|
|
||||||
### NousResearch ###
|
### NousResearch ###
|
||||||
'Nous-Hermes-2-Mixtral-8x7B-DPO': Nous_Hermes_2_Mixtral_8x7B_DPO,
|
'Nous-Hermes-2-Mixtral-8x7B-DPO': Nous_Hermes_2_Mixtral_8x7B_DPO,
|
||||||
|
|
||||||
|
|
||||||
### 01-ai ###
|
|
||||||
'Yi-1.5-34B-Chat': Yi_1_5_34B_Chat,
|
|
||||||
|
|
||||||
|
|
||||||
### Microsoft ###
|
|
||||||
'Phi-3-mini-4k-instruct': Phi_3_mini_4k_instruct,
|
|
||||||
|
|
||||||
|
### 01-ai ###
|
||||||
|
'Yi-1.5-34b-chat': Yi_1_5_34B_chat,
|
||||||
|
|
||||||
|
### Microsoft ###
|
||||||
|
'Phi-3-mini-4k-instruct': Phi_3_mini_4k_instruct,
|
||||||
|
|
||||||
### Google ###
|
### Google ###
|
||||||
# gemini
|
# gemini
|
||||||
'gemini': gemini,
|
'gemini': gemini,
|
||||||
'gemini-pro': gemini_pro,
|
'gemini-pro': gemini_pro,
|
||||||
|
'gemini-pro': gemini_1_5,
|
||||||
|
'gemini-flash': gemini_flash,
|
||||||
|
|
||||||
# gemma
|
# gemma
|
||||||
'gemma-2-9b-it': gemma_2_9b_it,
|
'gemma-2b': gemma_2b_it,
|
||||||
'gemma-2-27b-it': gemma_2_27b_it,
|
'gemma-2-9b': gemma_2_9b_it,
|
||||||
|
'gemma-2-27b': gemma_2_27b_it,
|
||||||
|
|
||||||
### Anthropic ###
|
### Anthropic ###
|
||||||
'claude-v2': claude_v2,
|
'claude-2': claude_2,
|
||||||
|
'claude-2.0': claude_2_0,
|
||||||
|
'claude-2.1': claude_2_1,
|
||||||
|
|
||||||
'claude-3-opus': claude_3_opus,
|
'claude-3-opus': claude_3_opus,
|
||||||
'claude-3-sonnet': claude_3_sonnet,
|
'claude-3-sonnet': claude_3_sonnet,
|
||||||
|
'claude-3-5-sonnet': claude_3_5_sonnet,
|
||||||
'claude-3-haiku': claude_3_haiku,
|
'claude-3-haiku': claude_3_haiku,
|
||||||
|
|
||||||
|
'claude-3-opus': claude_3,
|
||||||
|
'claude-3-5-sonnet': claude_3_5,
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Reka AI ###
|
### Reka AI ###
|
||||||
'reka': reka_core,
|
'reka': reka_core,
|
||||||
|
|
||||||
|
|
||||||
### NVIDIA ###
|
### NVIDIA ###
|
||||||
'nemotron-4-340b-instruct': nemotron_4_340b_instruct,
|
'nemotron-4-340b-instruct': nemotron_4_340b_instruct,
|
||||||
|
|
||||||
|
|
||||||
### Blackbox ###
|
|
||||||
'blackbox': blackbox,
|
|
||||||
|
|
||||||
|
|
||||||
### CohereForAI ###
|
|
||||||
'command-r+': command_r_plus,
|
|
||||||
|
|
||||||
|
### Blackbox ###
|
||||||
|
'blackbox': blackbox,
|
||||||
|
|
||||||
|
### CohereForAI ###
|
||||||
|
'command-r+': command_r_plus,
|
||||||
|
|
||||||
### Databricks ###
|
### Databricks ###
|
||||||
'dbrx-instruct': dbrx_instruct,
|
'dbrx-instruct': dbrx_instruct,
|
||||||
|
|
||||||
|
### GigaChat ###
|
||||||
### GigaChat ###
|
|
||||||
'gigachat': gigachat,
|
'gigachat': gigachat,
|
||||||
|
|
||||||
|
### iFlytek ###
|
||||||
|
'SparkDesk-v1.1': SparkDesk_v1_1,
|
||||||
|
|
||||||
|
### DeepSeek ###
|
||||||
|
'deepseek-coder': deepseek_coder,
|
||||||
|
'deepseek-chat': deepseek_chat,
|
||||||
|
|
||||||
|
### Qwen ###
|
||||||
|
'Qwen2-7b-instruct': Qwen2_7B_instruct,
|
||||||
|
|
||||||
|
### Zhipu AI ###
|
||||||
|
'glm4-9b-chat': glm4_9B_chat,
|
||||||
|
'chatglm3-6b': chatglm3_6B,
|
||||||
|
|
||||||
|
### 01-ai ###
|
||||||
|
'Yi-1.5-9b-chat': Yi_1_5_9B_chat,
|
||||||
|
|
||||||
# Other
|
# Other
|
||||||
'pi': pi,
|
'pi': pi,
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#############
|
#############
|
||||||
### Image ###
|
### Image ###
|
||||||
#############
|
#############
|
||||||
|
|
||||||
### Stability AI ###
|
|
||||||
'sdxl': sdxl,
|
|
||||||
|
|
||||||
### AI Forever ###
|
### Stability AI ###
|
||||||
'kandinsky-2.2': kandinsky_2_2,
|
'sdxl': sdxl,
|
||||||
|
'stable-diffusion-3': stable_diffusion_3,
|
||||||
|
|
||||||
|
### ByteDance ###
|
||||||
|
'sdxl-lightning': sdxl_lightning_4step,
|
||||||
|
|
||||||
|
### Playground ###
|
||||||
|
'playground-v2.5': playground_v2_5_1024px_aesthetic,
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_all_models = list(ModelUtils.convert.keys())
|
_all_models = list(ModelUtils.convert.keys())
|
||||||
|
Loading…
Reference in New Issue
Block a user