mirror of
https://github.com/xtekky/gpt4free.git
synced 2025-10-30 11:06:22 +08:00
~ | code styling
This commit is contained in:
@@ -15,9 +15,8 @@ class AItianhu(BaseProvider):
|
||||
def create_completion(
|
||||
model: str,
|
||||
messages: list[dict[str, str]],
|
||||
stream: bool,
|
||||
**kwargs: Any,
|
||||
) -> CreateResult:
|
||||
stream: bool, **kwargs: Any) -> CreateResult:
|
||||
|
||||
base = ""
|
||||
for message in messages:
|
||||
base += "%s: %s\n" % (message["role"], message["content"])
|
||||
|
||||
@@ -7,7 +7,7 @@ from .base_provider import BaseProvider
|
||||
|
||||
|
||||
class Acytoo(BaseProvider):
|
||||
url = "https://chat.acytoo.com/"
|
||||
url = 'https://chat.acytoo.com/'
|
||||
working = True
|
||||
supports_gpt_35_turbo = True
|
||||
|
||||
@@ -16,33 +16,33 @@ class Acytoo(BaseProvider):
|
||||
cls,
|
||||
model: str,
|
||||
messages: list[dict[str, str]],
|
||||
stream: bool,
|
||||
**kwargs: Any,
|
||||
) -> CreateResult:
|
||||
headers = _create_header()
|
||||
payload = _create_payload(messages, kwargs.get('temperature', 0.5))
|
||||
stream: bool, **kwargs: Any) -> CreateResult:
|
||||
|
||||
response = requests.post(f'{cls.url}api/completions',
|
||||
headers=_create_header(), json=_create_payload(messages, kwargs.get('temperature', 0.5)))
|
||||
|
||||
response = requests.post("{cls.url}api/completions", headers=headers, json=payload)
|
||||
response.raise_for_status()
|
||||
response.encoding = "utf-8"
|
||||
response.encoding = 'utf-8'
|
||||
|
||||
yield response.text
|
||||
|
||||
|
||||
def _create_header():
|
||||
return {
|
||||
"accept": "*/*",
|
||||
"content-type": "application/json",
|
||||
'accept': '*/*',
|
||||
'content-type': 'application/json',
|
||||
}
|
||||
|
||||
|
||||
def _create_payload(messages: list[dict[str, str]], temperature):
|
||||
payload_messages = [
|
||||
message | {"createdAt": int(time.time()) * 1000} for message in messages
|
||||
message | {'createdAt': int(time.time()) * 1000} for message in messages
|
||||
]
|
||||
|
||||
return {
|
||||
"key": "",
|
||||
"model": "gpt-3.5-turbo",
|
||||
"messages": payload_messages,
|
||||
"temperature": temperature,
|
||||
"password": "",
|
||||
'key' : '',
|
||||
'model' : 'gpt-3.5-turbo',
|
||||
'messages' : payload_messages,
|
||||
'temperature' : temperature,
|
||||
'password' : ''
|
||||
}
|
||||
@@ -13,11 +13,9 @@ class Aichat(BaseProvider):
|
||||
def create_completion(
|
||||
model: str,
|
||||
messages: list[dict[str, str]],
|
||||
stream: bool,
|
||||
**kwargs: Any,
|
||||
) -> CreateResult:
|
||||
base = ""
|
||||
stream: bool, **kwargs: Any) -> CreateResult:
|
||||
|
||||
base = ""
|
||||
for message in messages:
|
||||
base += "%s: %s\n" % (message["role"], message["content"])
|
||||
base += "assistant:"
|
||||
|
||||
@@ -9,7 +9,6 @@ import requests
|
||||
from ..typing import SHA256, Any, CreateResult
|
||||
from .base_provider import BaseProvider
|
||||
|
||||
|
||||
class Ails(BaseProvider):
|
||||
url: str = "https://ai.ls"
|
||||
working = True
|
||||
@@ -20,9 +19,8 @@ class Ails(BaseProvider):
|
||||
def create_completion(
|
||||
model: str,
|
||||
messages: list[dict[str, str]],
|
||||
stream: bool,
|
||||
**kwargs: Any,
|
||||
) -> CreateResult:
|
||||
stream: bool, **kwargs: Any) -> CreateResult:
|
||||
|
||||
headers = {
|
||||
"authority": "api.caipacity.com",
|
||||
"accept": "*/*",
|
||||
|
||||
@@ -19,9 +19,7 @@ class Bard(AsyncProvider):
|
||||
model: str,
|
||||
messages: list[dict[str, str]],
|
||||
proxy: str = None,
|
||||
cookies: dict = get_cookies(".google.com"),
|
||||
**kwargs: Any,
|
||||
) -> str:
|
||||
cookies: dict = get_cookies(".google.com"), **kwargs: Any,) -> str:
|
||||
|
||||
formatted = "\n".join(
|
||||
["%s: %s" % (message["role"], message["content"]) for message in messages]
|
||||
|
||||
@@ -1,12 +1,6 @@
|
||||
import asyncio
|
||||
import json
|
||||
import os
|
||||
import random
|
||||
import asyncio, aiohttp, json, os, random
|
||||
|
||||
import aiohttp
|
||||
import asyncio
|
||||
from aiohttp import ClientSession
|
||||
|
||||
from ..typing import Any, AsyncGenerator, CreateResult, Union
|
||||
from .base_provider import AsyncGeneratorProvider, get_cookies
|
||||
|
||||
@@ -15,15 +9,14 @@ class Bing(AsyncGeneratorProvider):
|
||||
needs_auth = True
|
||||
working = True
|
||||
supports_gpt_4 = True
|
||||
supports_stream=True
|
||||
supports_stream = True
|
||||
|
||||
@staticmethod
|
||||
def create_async_generator(
|
||||
model: str,
|
||||
messages: list[dict[str, str]],
|
||||
cookies: dict = get_cookies(".bing.com"),
|
||||
**kwargs
|
||||
) -> AsyncGenerator:
|
||||
cookies: dict = get_cookies(".bing.com"), **kwargs) -> AsyncGenerator:
|
||||
|
||||
if len(messages) < 2:
|
||||
prompt = messages[0]["content"]
|
||||
context = None
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
import re
|
||||
|
||||
import requests
|
||||
import re, requests
|
||||
|
||||
from ..typing import Any, CreateResult
|
||||
from .base_provider import BaseProvider
|
||||
|
||||
|
||||
class ChatgptAi(BaseProvider):
|
||||
url = "https://chatgpt.ai/gpt-4/"
|
||||
url: str = "https://chatgpt.ai/gpt-4/"
|
||||
working = True
|
||||
supports_gpt_4 = True
|
||||
|
||||
@@ -15,9 +13,8 @@ class ChatgptAi(BaseProvider):
|
||||
def create_completion(
|
||||
model: str,
|
||||
messages: list[dict[str, str]],
|
||||
stream: bool,
|
||||
**kwargs: Any,
|
||||
) -> CreateResult:
|
||||
stream: bool, **kwargs: Any) -> CreateResult:
|
||||
|
||||
chat = ""
|
||||
for message in messages:
|
||||
chat += "%s: %s\n" % (message["role"], message["content"])
|
||||
@@ -26,36 +23,35 @@ class ChatgptAi(BaseProvider):
|
||||
response = requests.get("https://chatgpt.ai/")
|
||||
nonce, post_id, _, bot_id = re.findall(
|
||||
r'data-nonce="(.*)"\n data-post-id="(.*)"\n data-url="(.*)"\n data-bot-id="(.*)"\n data-width',
|
||||
response.text,
|
||||
)[0]
|
||||
response.text)[0]
|
||||
|
||||
headers = {
|
||||
"authority": "chatgpt.ai",
|
||||
"accept": "*/*",
|
||||
"accept-language": "en,fr-FR;q=0.9,fr;q=0.8,es-ES;q=0.7,es;q=0.6,en-US;q=0.5,am;q=0.4,de;q=0.3",
|
||||
"cache-control": "no-cache",
|
||||
"origin": "https://chatgpt.ai",
|
||||
"pragma": "no-cache",
|
||||
"referer": "https://chatgpt.ai/gpt-4/",
|
||||
"sec-ch-ua": '"Not.A/Brand";v="8", "Chromium";v="114", "Google Chrome";v="114"',
|
||||
"sec-ch-ua-mobile": "?0",
|
||||
"sec-ch-ua-platform": '"Windows"',
|
||||
"sec-fetch-dest": "empty",
|
||||
"sec-fetch-mode": "cors",
|
||||
"sec-fetch-site": "same-origin",
|
||||
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36",
|
||||
"authority" : "chatgpt.ai",
|
||||
"accept" : "*/*",
|
||||
"accept-language" : "en,fr-FR;q=0.9,fr;q=0.8,es-ES;q=0.7,es;q=0.6,en-US;q=0.5,am;q=0.4,de;q=0.3",
|
||||
"cache-control" : "no-cache",
|
||||
"origin" : "https://chatgpt.ai",
|
||||
"pragma" : "no-cache",
|
||||
"referer" : "https://chatgpt.ai/gpt-4/",
|
||||
"sec-ch-ua" : '"Not.A/Brand";v="8", "Chromium";v="114", "Google Chrome";v="114"',
|
||||
"sec-ch-ua-mobile" : "?0",
|
||||
"sec-ch-ua-platform" : '"Windows"',
|
||||
"sec-fetch-dest" : "empty",
|
||||
"sec-fetch-mode" : "cors",
|
||||
"sec-fetch-site" : "same-origin",
|
||||
"user-agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36",
|
||||
}
|
||||
data = {
|
||||
"_wpnonce": nonce,
|
||||
"post_id": post_id,
|
||||
"url": "https://chatgpt.ai/gpt-4",
|
||||
"action": "wpaicg_chat_shortcode_message",
|
||||
"message": chat,
|
||||
"bot_id": bot_id,
|
||||
"_wpnonce" : nonce,
|
||||
"post_id" : post_id,
|
||||
"url" : "https://chatgpt.ai/gpt-4",
|
||||
"action" : "wpaicg_chat_shortcode_message",
|
||||
"message" : chat,
|
||||
"bot_id" : bot_id,
|
||||
}
|
||||
|
||||
response = requests.post(
|
||||
"https://chatgpt.ai/wp-admin/admin-ajax.php", headers=headers, data=data
|
||||
)
|
||||
"https://chatgpt.ai/wp-admin/admin-ajax.php", headers=headers, data=data)
|
||||
|
||||
response.raise_for_status()
|
||||
yield response.json()["data"]
|
||||
@@ -1,8 +1,4 @@
|
||||
import base64
|
||||
import os
|
||||
import re
|
||||
|
||||
import requests
|
||||
import base64, os, re, requests
|
||||
|
||||
from ..typing import Any, CreateResult
|
||||
from .base_provider import BaseProvider
|
||||
@@ -17,53 +13,50 @@ class ChatgptLogin(BaseProvider):
|
||||
def create_completion(
|
||||
model: str,
|
||||
messages: list[dict[str, str]],
|
||||
stream: bool,
|
||||
**kwargs: Any,
|
||||
) -> CreateResult:
|
||||
stream: bool, **kwargs: Any) -> CreateResult:
|
||||
|
||||
headers = {
|
||||
"authority": "chatgptlogin.ac",
|
||||
"accept": "*/*",
|
||||
"accept-language": "en,fr-FR;q=0.9,fr;q=0.8,es-ES;q=0.7,es;q=0.6,en-US;q=0.5,am;q=0.4,de;q=0.3",
|
||||
"content-type": "application/json",
|
||||
"origin": "https://opchatgpts.net",
|
||||
"referer": "https://opchatgpts.net/chatgpt-free-use/",
|
||||
"sec-ch-ua": '"Chromium";v="116", "Not)A;Brand";v="24", "Google Chrome";v="116"',
|
||||
"sec-ch-ua-mobile": "?0",
|
||||
"sec-ch-ua-platform": '"Windows"',
|
||||
"sec-fetch-dest": "empty",
|
||||
"sec-fetch-mode": "cors",
|
||||
"sec-fetch-site": "same-origin",
|
||||
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36",
|
||||
"x-wp-nonce": _get_nonce(),
|
||||
"authority" : "chatgptlogin.ac",
|
||||
"accept" : "*/*",
|
||||
"accept-language" : "en,fr-FR;q=0.9,fr;q=0.8,es-ES;q=0.7,es;q=0.6,en-US;q=0.5,am;q=0.4,de;q=0.3",
|
||||
"content-type" : "application/json",
|
||||
"origin" : "https://opchatgpts.net",
|
||||
"referer" : "https://opchatgpts.net/chatgpt-free-use/",
|
||||
"sec-ch-ua" : '"Chromium";v="116", "Not)A;Brand";v="24", "Google Chrome";v="116"',
|
||||
"sec-ch-ua-mobile" : "?0",
|
||||
"sec-ch-ua-platform" : '"Windows"',
|
||||
"sec-fetch-dest" : "empty",
|
||||
"sec-fetch-mode" : "cors",
|
||||
"sec-fetch-site" : "same-origin",
|
||||
"user-agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36",
|
||||
"x-wp-nonce" : _get_nonce(),
|
||||
}
|
||||
|
||||
conversation = _transform(messages)
|
||||
|
||||
json_data = {
|
||||
"env": "chatbot",
|
||||
"session": "N/A",
|
||||
"prompt": "Converse as if you were an AI assistant. Be friendly, creative.",
|
||||
"context": "Converse as if you were an AI assistant. Be friendly, creative.",
|
||||
"messages": conversation,
|
||||
"newMessage": messages[-1]["content"],
|
||||
"userName": '<div class="mwai-name-text">User:</div>',
|
||||
"aiName": '<div class="mwai-name-text">AI:</div>',
|
||||
"model": "gpt-3.5-turbo",
|
||||
"temperature": kwargs.get("temperature", 0.8),
|
||||
"maxTokens": 1024,
|
||||
"maxResults": 1,
|
||||
"apiKey": "",
|
||||
"service": "openai",
|
||||
"env" : "chatbot",
|
||||
"session" : "N/A",
|
||||
"prompt" : "Converse as if you were an AI assistant. Be friendly, creative.",
|
||||
"context" : "Converse as if you were an AI assistant. Be friendly, creative.",
|
||||
"messages" : conversation,
|
||||
"newMessage" : messages[-1]["content"],
|
||||
"userName" : '<div class="mwai-name-text">User:</div>',
|
||||
"aiName" : '<div class="mwai-name-text">AI:</div>',
|
||||
"model" : "gpt-3.5-turbo",
|
||||
"temperature" : kwargs.get("temperature", 0.8),
|
||||
"maxTokens" : 1024,
|
||||
"maxResults" : 1,
|
||||
"apiKey" : "",
|
||||
"service" : "openai",
|
||||
"embeddingsIndex": "",
|
||||
"stop": "",
|
||||
"clientId": os.urandom(6).hex(),
|
||||
"stop" : "",
|
||||
"clientId" : os.urandom(6).hex()
|
||||
}
|
||||
|
||||
response = requests.post(
|
||||
"https://opchatgpts.net/wp-json/ai-chatbot/v1/chat",
|
||||
headers=headers,
|
||||
json=json_data,
|
||||
)
|
||||
response = requests.post("https://opchatgpts.net/wp-json/ai-chatbot/v1/chat",
|
||||
headers=headers, json=json_data)
|
||||
|
||||
response.raise_for_status()
|
||||
yield response.json()["reply"]
|
||||
|
||||
@@ -81,18 +74,15 @@ class ChatgptLogin(BaseProvider):
|
||||
|
||||
|
||||
def _get_nonce() -> str:
|
||||
res = requests.get(
|
||||
"https://opchatgpts.net/chatgpt-free-use/",
|
||||
headers={
|
||||
"Referer": "https://opchatgpts.net/chatgpt-free-use/",
|
||||
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36",
|
||||
},
|
||||
)
|
||||
res = requests.get("https://opchatgpts.net/chatgpt-free-use/",
|
||||
headers = {
|
||||
"Referer" : "https://opchatgpts.net/chatgpt-free-use/",
|
||||
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"})
|
||||
|
||||
result = re.search(
|
||||
r'class="mwai-chat mwai-chatgpt">.*<span>Send</span></button></div></div></div> <script defer src="(.*?)">',
|
||||
res.text,
|
||||
)
|
||||
res.text)
|
||||
|
||||
if result is None:
|
||||
return ""
|
||||
|
||||
@@ -106,11 +96,11 @@ def _get_nonce() -> str:
|
||||
def _transform(messages: list[dict[str, str]]) -> list[dict[str, Any]]:
|
||||
return [
|
||||
{
|
||||
"id": os.urandom(6).hex(),
|
||||
"role": message["role"],
|
||||
"id" : os.urandom(6).hex(),
|
||||
"role" : message["role"],
|
||||
"content": message["content"],
|
||||
"who": "AI: " if message["role"] == "assistant" else "User: ",
|
||||
"html": _html_encode(message["content"]),
|
||||
"who" : "AI: " if message["role"] == "assistant" else "User: ",
|
||||
"html" : _html_encode(message["content"]),
|
||||
}
|
||||
for message in messages
|
||||
]
|
||||
@@ -118,14 +108,14 @@ def _transform(messages: list[dict[str, str]]) -> list[dict[str, Any]]:
|
||||
|
||||
def _html_encode(string: str) -> str:
|
||||
table = {
|
||||
'"': """,
|
||||
"'": "'",
|
||||
"&": "&",
|
||||
">": ">",
|
||||
"<": "<",
|
||||
'"' : """,
|
||||
"'" : "'",
|
||||
"&" : "&",
|
||||
">" : ">",
|
||||
"<" : "<",
|
||||
"\n": "<br>",
|
||||
"\t": " ",
|
||||
" ": " ",
|
||||
" " : " ",
|
||||
}
|
||||
|
||||
for key in table:
|
||||
|
||||
@@ -1,14 +1,11 @@
|
||||
import json
|
||||
|
||||
import js2py
|
||||
import requests
|
||||
import json, js2py, requests
|
||||
|
||||
from ..typing import Any, CreateResult
|
||||
from .base_provider import BaseProvider
|
||||
|
||||
|
||||
class DeepAi(BaseProvider):
|
||||
url = "https://deepai.org"
|
||||
url: str = "https://deepai.org"
|
||||
working = True
|
||||
supports_stream = True
|
||||
supports_gpt_35_turbo = True
|
||||
@@ -17,10 +14,8 @@ class DeepAi(BaseProvider):
|
||||
def create_completion(
|
||||
model: str,
|
||||
messages: list[dict[str, str]],
|
||||
stream: bool,
|
||||
**kwargs: Any,
|
||||
) -> CreateResult:
|
||||
url = "https://api.deepai.org/make_me_a_pizza"
|
||||
stream: bool, **kwargs: Any) -> CreateResult:
|
||||
|
||||
token_js = """
|
||||
var agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36'
|
||||
var a, b, c, d, e, h, f, l, g, k, m, n, r, x, C, E, N, F, T, O, P, w, D, G, Q, R, W, I, aa, fa, na, oa, ha, ba, X, ia, ja, ka, J, la, K, L, ca, S, U, M, ma, B, da, V, Y;
|
||||
@@ -54,7 +49,9 @@ f = function () {
|
||||
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36",
|
||||
}
|
||||
|
||||
response = requests.post(url, headers=headers, data=payload, stream=True)
|
||||
response = requests.post("https://api.deepai.org/make_me_a_pizza",
|
||||
headers=headers, data=payload, stream=True)
|
||||
|
||||
for chunk in response.iter_content(chunk_size=None):
|
||||
response.raise_for_status()
|
||||
yield chunk.decode()
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
import json
|
||||
import re
|
||||
import time
|
||||
|
||||
import requests
|
||||
import json, re, time , requests
|
||||
|
||||
from ..typing import Any, CreateResult
|
||||
from .base_provider import BaseProvider
|
||||
@@ -17,41 +13,37 @@ class DfeHub(BaseProvider):
|
||||
def create_completion(
|
||||
model: str,
|
||||
messages: list[dict[str, str]],
|
||||
stream: bool,
|
||||
**kwargs: Any,
|
||||
) -> CreateResult:
|
||||
stream: bool, **kwargs: Any) -> CreateResult:
|
||||
|
||||
headers = {
|
||||
"authority": "chat.dfehub.com",
|
||||
"accept": "*/*",
|
||||
"accept-language": "en,fr-FR;q=0.9,fr;q=0.8,es-ES;q=0.7,es;q=0.6,en-US;q=0.5,am;q=0.4,de;q=0.3",
|
||||
"content-type": "application/json",
|
||||
"origin": "https://chat.dfehub.com",
|
||||
"referer": "https://chat.dfehub.com/",
|
||||
"sec-ch-ua": '"Not.A/Brand";v="8", "Chromium";v="114", "Google Chrome";v="114"',
|
||||
"sec-ch-ua-mobile": "?0",
|
||||
"authority" : "chat.dfehub.com",
|
||||
"accept" : "*/*",
|
||||
"accept-language" : "en,fr-FR;q=0.9,fr;q=0.8,es-ES;q=0.7,es;q=0.6,en-US;q=0.5,am;q=0.4,de;q=0.3",
|
||||
"content-type" : "application/json",
|
||||
"origin" : "https://chat.dfehub.com",
|
||||
"referer" : "https://chat.dfehub.com/",
|
||||
"sec-ch-ua" : '"Not.A/Brand";v="8", "Chromium";v="114", "Google Chrome";v="114"',
|
||||
"sec-ch-ua-mobile" : "?0",
|
||||
"sec-ch-ua-platform": '"macOS"',
|
||||
"sec-fetch-dest": "empty",
|
||||
"sec-fetch-mode": "cors",
|
||||
"sec-fetch-site": "same-origin",
|
||||
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36",
|
||||
"x-requested-with": "XMLHttpRequest",
|
||||
"sec-fetch-dest" : "empty",
|
||||
"sec-fetch-mode" : "cors",
|
||||
"sec-fetch-site" : "same-origin",
|
||||
"user-agent" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36",
|
||||
"x-requested-with" : "XMLHttpRequest",
|
||||
}
|
||||
|
||||
json_data = {
|
||||
"messages": messages,
|
||||
"model": "gpt-3.5-turbo",
|
||||
"temperature": kwargs.get("temperature", 0.5),
|
||||
"presence_penalty": kwargs.get("presence_penalty", 0),
|
||||
"frequency_penalty": kwargs.get("frequency_penalty", 0),
|
||||
"top_p": kwargs.get("top_p", 1),
|
||||
"stream": True,
|
||||
"messages" : messages,
|
||||
"model" : "gpt-3.5-turbo",
|
||||
"temperature" : kwargs.get("temperature", 0.5),
|
||||
"presence_penalty" : kwargs.get("presence_penalty", 0),
|
||||
"frequency_penalty" : kwargs.get("frequency_penalty", 0),
|
||||
"top_p" : kwargs.get("top_p", 1),
|
||||
"stream" : True
|
||||
}
|
||||
response = requests.post(
|
||||
"https://chat.dfehub.com/api/openai/v1/chat/completions",
|
||||
headers=headers,
|
||||
json=json_data,
|
||||
timeout=3
|
||||
)
|
||||
|
||||
response = requests.post("https://chat.dfehub.com/api/openai/v1/chat/completions",
|
||||
headers=headers, json=json_data, timeout=3)
|
||||
|
||||
for chunk in response.iter_lines():
|
||||
if b"detail" in chunk:
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
import json
|
||||
|
||||
import requests
|
||||
import json, requests, random
|
||||
|
||||
from ..typing import Any, CreateResult
|
||||
from .base_provider import BaseProvider
|
||||
|
||||
|
||||
class EasyChat(BaseProvider):
|
||||
url = "https://free.easychat.work"
|
||||
url: str = "https://free.easychat.work"
|
||||
supports_stream = True
|
||||
supports_gpt_35_turbo = True
|
||||
working = True
|
||||
@@ -16,9 +14,8 @@ class EasyChat(BaseProvider):
|
||||
def create_completion(
|
||||
model: str,
|
||||
messages: list[dict[str, str]],
|
||||
stream: bool,
|
||||
**kwargs: Any,
|
||||
) -> CreateResult:
|
||||
stream: bool, **kwargs: Any) -> CreateResult:
|
||||
|
||||
active_servers = [
|
||||
"https://chat10.fastgpt.me",
|
||||
"https://chat9.fastgpt.me",
|
||||
@@ -28,59 +25,62 @@ class EasyChat(BaseProvider):
|
||||
"https://chat4.fastgpt.me",
|
||||
"https://gxos1h1ddt.fastgpt.me"
|
||||
]
|
||||
server = active_servers[kwargs.get("active_server", 0)]
|
||||
|
||||
server = active_servers[kwargs.get("active_server", random.randint(0, 5))]
|
||||
headers = {
|
||||
"authority": f"{server}".replace("https://", ""),
|
||||
"accept": "text/event-stream",
|
||||
"accept-language": "en,fr-FR;q=0.9,fr;q=0.8,es-ES;q=0.7,es;q=0.6,en-US;q=0.5,am;q=0.4,de;q=0.3,fa=0.2",
|
||||
"content-type": "application/json",
|
||||
"origin": f"{server}",
|
||||
"referer": f"{server}/",
|
||||
"x-requested-with": "XMLHttpRequest",
|
||||
'plugins': '0',
|
||||
'sec-ch-ua': '"Chromium";v="116", "Not)A;Brand";v="24", "Google Chrome";v="116"',
|
||||
'sec-ch-ua-mobile': '?0',
|
||||
"authority" : f"{server}".replace("https://", ""),
|
||||
"accept" : "text/event-stream",
|
||||
"accept-language" : "en,fr-FR;q=0.9,fr;q=0.8,es-ES;q=0.7,es;q=0.6,en-US;q=0.5,am;q=0.4,de;q=0.3,fa=0.2",
|
||||
"content-type" : "application/json",
|
||||
"origin" : f"{server}",
|
||||
"referer" : f"{server}/",
|
||||
"x-requested-with" : "XMLHttpRequest",
|
||||
'plugins' : '0',
|
||||
'sec-ch-ua' : '"Chromium";v="116", "Not)A;Brand";v="24", "Google Chrome";v="116"',
|
||||
'sec-ch-ua-mobile' : '?0',
|
||||
'sec-ch-ua-platform': '"Windows"',
|
||||
'sec-fetch-dest': 'empty',
|
||||
'sec-fetch-mode': 'cors',
|
||||
'sec-fetch-site': 'same-origin',
|
||||
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',
|
||||
'usesearch': 'false',
|
||||
'x-requested-with': 'XMLHttpRequest'
|
||||
'sec-fetch-dest' : 'empty',
|
||||
'sec-fetch-mode' : 'cors',
|
||||
'sec-fetch-site' : 'same-origin',
|
||||
'user-agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',
|
||||
'usesearch' : 'false',
|
||||
'x-requested-with' : 'XMLHttpRequest'
|
||||
}
|
||||
|
||||
json_data = {
|
||||
"messages": messages,
|
||||
"stream": stream,
|
||||
"model": model,
|
||||
"temperature": kwargs.get("temperature", 0.5),
|
||||
"presence_penalty": kwargs.get("presence_penalty", 0),
|
||||
"frequency_penalty": kwargs.get("frequency_penalty", 0),
|
||||
"top_p": kwargs.get("top_p", 1),
|
||||
"messages" : messages,
|
||||
"stream" : stream,
|
||||
"model" : model,
|
||||
"temperature" : kwargs.get("temperature", 0.5),
|
||||
"presence_penalty" : kwargs.get("presence_penalty", 0),
|
||||
"frequency_penalty" : kwargs.get("frequency_penalty", 0),
|
||||
"top_p" : kwargs.get("top_p", 1)
|
||||
}
|
||||
|
||||
session = requests.Session()
|
||||
# init cookies from server
|
||||
session.get(f"{server}/")
|
||||
|
||||
response = session.post(
|
||||
f"{server}/api/openai/v1/chat/completions",
|
||||
headers=headers,
|
||||
json=json_data,
|
||||
stream=stream,
|
||||
)
|
||||
response = session.post(f"{server}/api/openai/v1/chat/completions",
|
||||
headers=headers, json=json_data, stream=stream)
|
||||
|
||||
if response.status_code == 200:
|
||||
|
||||
if stream == False:
|
||||
json_data = response.json()
|
||||
|
||||
if "choices" in json_data:
|
||||
yield json_data["choices"][0]["message"]["content"]
|
||||
else:
|
||||
raise Exception("No response from server")
|
||||
|
||||
else:
|
||||
|
||||
for chunk in response.iter_lines():
|
||||
|
||||
if b"content" in chunk:
|
||||
splitData = chunk.decode().split("data:")
|
||||
|
||||
if len(splitData) > 1:
|
||||
yield json.loads(splitData[1])["choices"][0]["delta"]["content"]
|
||||
else:
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import requests, json
|
||||
from abc import ABC, abstractmethod
|
||||
|
||||
from abc import ABC, abstractmethod
|
||||
from ..typing import Any, CreateResult
|
||||
|
||||
|
||||
@@ -17,42 +17,42 @@ class Equing(ABC):
|
||||
def create_completion(
|
||||
model: str,
|
||||
messages: list[dict[str, str]],
|
||||
stream: bool,
|
||||
**kwargs: Any) -> CreateResult:
|
||||
stream: bool, **kwargs: Any) -> CreateResult:
|
||||
|
||||
headers = {
|
||||
'authority': 'next.eqing.tech',
|
||||
'accept': 'text/event-stream',
|
||||
'accept-language': 'en,fr-FR;q=0.9,fr;q=0.8,es-ES;q=0.7,es;q=0.6,en-US;q=0.5,am;q=0.4,de;q=0.3',
|
||||
'cache-control': 'no-cache',
|
||||
'content-type': 'application/json',
|
||||
'origin': 'https://next.eqing.tech',
|
||||
'plugins': '0',
|
||||
'pragma': 'no-cache',
|
||||
'referer': 'https://next.eqing.tech/',
|
||||
'sec-ch-ua': '"Not/A)Brand";v="99", "Google Chrome";v="115", "Chromium";v="115"',
|
||||
'sec-ch-ua-mobile': '?0',
|
||||
'authority' : 'next.eqing.tech',
|
||||
'accept' : 'text/event-stream',
|
||||
'accept-language' : 'en,fr-FR;q=0.9,fr;q=0.8,es-ES;q=0.7,es;q=0.6,en-US;q=0.5,am;q=0.4,de;q=0.3',
|
||||
'cache-control' : 'no-cache',
|
||||
'content-type' : 'application/json',
|
||||
'origin' : 'https://next.eqing.tech',
|
||||
'plugins' : '0',
|
||||
'pragma' : 'no-cache',
|
||||
'referer' : 'https://next.eqing.tech/',
|
||||
'sec-ch-ua' : '"Not/A)Brand";v="99", "Google Chrome";v="115", "Chromium";v="115"',
|
||||
'sec-ch-ua-mobile' : '?0',
|
||||
'sec-ch-ua-platform': '"macOS"',
|
||||
'sec-fetch-dest': 'empty',
|
||||
'sec-fetch-mode': 'cors',
|
||||
'sec-fetch-site': 'same-origin',
|
||||
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36',
|
||||
'usesearch': 'false',
|
||||
'x-requested-with': 'XMLHttpRequest',
|
||||
'sec-fetch-dest' : 'empty',
|
||||
'sec-fetch-mode' : 'cors',
|
||||
'sec-fetch-site' : 'same-origin',
|
||||
'user-agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36',
|
||||
'usesearch' : 'false',
|
||||
'x-requested-with' : 'XMLHttpRequest'
|
||||
}
|
||||
|
||||
json_data = {
|
||||
'messages': messages,
|
||||
'stream': stream,
|
||||
'model': model,
|
||||
'temperature': kwargs.get('temperature', 0.5),
|
||||
'presence_penalty': kwargs.get('presence_penalty', 0),
|
||||
'frequency_penalty': kwargs.get('frequency_penalty', 0),
|
||||
'top_p': kwargs.get('top_p', 1),
|
||||
'messages' : messages,
|
||||
'stream' : stream,
|
||||
'model' : model,
|
||||
'temperature' : kwargs.get('temperature', 0.5),
|
||||
'presence_penalty' : kwargs.get('presence_penalty', 0),
|
||||
'frequency_penalty' : kwargs.get('frequency_penalty', 0),
|
||||
'top_p' : kwargs.get('top_p', 1),
|
||||
}
|
||||
|
||||
response = requests.post('https://next.eqing.tech/api/openai/v1/chat/completions',
|
||||
headers=headers, json=json_data, stream=stream)
|
||||
|
||||
if not stream:
|
||||
yield response.json()["choices"][0]["message"]["content"]
|
||||
return
|
||||
|
||||
@@ -17,39 +17,37 @@ class FastGpt(ABC):
|
||||
def create_completion(
|
||||
model: str,
|
||||
messages: list[dict[str, str]],
|
||||
stream: bool,
|
||||
**kwargs: Any) -> CreateResult:
|
||||
stream: bool, **kwargs: Any) -> CreateResult:
|
||||
|
||||
headers = {
|
||||
'authority': 'chat9.fastgpt.me',
|
||||
'accept': 'text/event-stream',
|
||||
'accept-language': 'en,fr-FR;q=0.9,fr;q=0.8,es-ES;q=0.7,es;q=0.6,en-US;q=0.5,am;q=0.4,de;q=0.3',
|
||||
'cache-control': 'no-cache',
|
||||
'content-type': 'application/json',
|
||||
# 'cookie': 'cf_clearance=idIAwtoSCn0uCzcWLGuD.KtiAJv9a1GsPduEOqIkyHU-1692278595-0-1-cb11fd7a.ab1546d4.ccf35fd7-0.2.1692278595; Hm_lvt_563fb31e93813a8a7094966df6671d3f=1691966491,1692278597; Hm_lpvt_563fb31e93813a8a7094966df6671d3f=1692278597',
|
||||
'origin': 'https://chat9.fastgpt.me',
|
||||
'plugins': '0',
|
||||
'pragma': 'no-cache',
|
||||
'referer': 'https://chat9.fastgpt.me/',
|
||||
'sec-ch-ua': '"Not/A)Brand";v="99", "Google Chrome";v="115", "Chromium";v="115"',
|
||||
'sec-ch-ua-mobile': '?0',
|
||||
'authority' : 'chat9.fastgpt.me',
|
||||
'accept' : 'text/event-stream',
|
||||
'accept-language' : 'en,fr-FR;q=0.9,fr;q=0.8,es-ES;q=0.7,es;q=0.6,en-US;q=0.5,am;q=0.4,de;q=0.3',
|
||||
'cache-control' : 'no-cache',
|
||||
'content-type' : 'application/json',
|
||||
'origin' : 'https://chat9.fastgpt.me',
|
||||
'plugins' : '0',
|
||||
'pragma' : 'no-cache',
|
||||
'referer' : 'https://chat9.fastgpt.me/',
|
||||
'sec-ch-ua' : '"Not/A)Brand";v="99", "Google Chrome";v="115", "Chromium";v="115"',
|
||||
'sec-ch-ua-mobile' : '?0',
|
||||
'sec-ch-ua-platform': '"macOS"',
|
||||
'sec-fetch-dest': 'empty',
|
||||
'sec-fetch-mode': 'cors',
|
||||
'sec-fetch-site': 'same-origin',
|
||||
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36',
|
||||
'usesearch': 'false',
|
||||
'x-requested-with': 'XMLHttpRequest',
|
||||
'sec-fetch-dest' : 'empty',
|
||||
'sec-fetch-mode' : 'cors',
|
||||
'sec-fetch-site' : 'same-origin',
|
||||
'user-agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36',
|
||||
'usesearch' : 'false',
|
||||
'x-requested-with' : 'XMLHttpRequest',
|
||||
}
|
||||
|
||||
json_data = {
|
||||
'messages': messages,
|
||||
'stream': stream,
|
||||
'model': model,
|
||||
'temperature': kwargs.get('temperature', 0.5),
|
||||
'presence_penalty': kwargs.get('presence_penalty', 0),
|
||||
'frequency_penalty': kwargs.get('frequency_penalty', 0),
|
||||
'top_p': kwargs.get('top_p', 1),
|
||||
'messages' : messages,
|
||||
'stream' : stream,
|
||||
'model' : model,
|
||||
'temperature' : kwargs.get('temperature', 0.5),
|
||||
'presence_penalty' : kwargs.get('presence_penalty', 0),
|
||||
'frequency_penalty' : kwargs.get('frequency_penalty', 0),
|
||||
'top_p' : kwargs.get('top_p', 1),
|
||||
}
|
||||
|
||||
subdomain = random.choice([
|
||||
|
||||
@@ -15,26 +15,23 @@ class Forefront(BaseProvider):
|
||||
def create_completion(
|
||||
model: str,
|
||||
messages: list[dict[str, str]],
|
||||
stream: bool,
|
||||
**kwargs: Any,
|
||||
) -> CreateResult:
|
||||
stream: bool, **kwargs: Any) -> CreateResult:
|
||||
|
||||
json_data = {
|
||||
"text": messages[-1]["content"],
|
||||
"action": "noauth",
|
||||
"id": "",
|
||||
"parentId": "",
|
||||
"workspaceId": "",
|
||||
"text" : messages[-1]["content"],
|
||||
"action" : "noauth",
|
||||
"id" : "",
|
||||
"parentId" : "",
|
||||
"workspaceId" : "",
|
||||
"messagePersona": "607e41fe-95be-497e-8e97-010a59b2e2c0",
|
||||
"model": "gpt-4",
|
||||
"messages": messages[:-1] if len(messages) > 1 else [],
|
||||
"internetMode": "auto",
|
||||
"model" : "gpt-4",
|
||||
"messages" : messages[:-1] if len(messages) > 1 else [],
|
||||
"internetMode" : "auto",
|
||||
}
|
||||
|
||||
response = requests.post(
|
||||
"https://streaming.tenant-forefront-default.knative.chi.coreweave.com/free-chat",
|
||||
json=json_data,
|
||||
stream=True,
|
||||
)
|
||||
response = requests.post("https://streaming.tenant-forefront-default.knative.chi.coreweave.com/free-chat",
|
||||
json=json_data, stream=True)
|
||||
|
||||
response.raise_for_status()
|
||||
for token in response.iter_lines():
|
||||
if b"delta" in token:
|
||||
|
||||
@@ -1,16 +1,12 @@
|
||||
import json
|
||||
import os
|
||||
import uuid
|
||||
import os, json, uuid, requests
|
||||
|
||||
import requests
|
||||
from Crypto.Cipher import AES
|
||||
|
||||
from ..typing import Any, CreateResult
|
||||
from .base_provider import BaseProvider
|
||||
|
||||
|
||||
class GetGpt(BaseProvider):
|
||||
url = "https://chat.getgpt.world/"
|
||||
url = 'https://chat.getgpt.world/'
|
||||
supports_stream = True
|
||||
working = True
|
||||
supports_gpt_35_turbo = True
|
||||
@@ -19,69 +15,68 @@ class GetGpt(BaseProvider):
|
||||
def create_completion(
|
||||
model: str,
|
||||
messages: list[dict[str, str]],
|
||||
stream: bool,
|
||||
**kwargs: Any,
|
||||
) -> CreateResult:
|
||||
stream: bool, **kwargs: Any) -> CreateResult:
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"Referer": "https://chat.getgpt.world/",
|
||||
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36",
|
||||
'Content-Type' : 'application/json',
|
||||
'Referer' : 'https://chat.getgpt.world/',
|
||||
'user-agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36',
|
||||
}
|
||||
|
||||
data = json.dumps(
|
||||
{
|
||||
"messages": messages,
|
||||
"frequency_penalty": kwargs.get("frequency_penalty", 0),
|
||||
"max_tokens": kwargs.get("max_tokens", 4000),
|
||||
"model": "gpt-3.5-turbo",
|
||||
"presence_penalty": kwargs.get("presence_penalty", 0),
|
||||
"temperature": kwargs.get("temperature", 1),
|
||||
"top_p": kwargs.get("top_p", 1),
|
||||
"stream": True,
|
||||
"uuid": str(uuid.uuid4()),
|
||||
'messages' : messages,
|
||||
'frequency_penalty' : kwargs.get('frequency_penalty', 0),
|
||||
'max_tokens' : kwargs.get('max_tokens', 4000),
|
||||
'model' : 'gpt-3.5-turbo',
|
||||
'presence_penalty' : kwargs.get('presence_penalty', 0),
|
||||
'temperature' : kwargs.get('temperature', 1),
|
||||
'top_p' : kwargs.get('top_p', 1),
|
||||
'stream' : True,
|
||||
'uuid' : str(uuid.uuid4())
|
||||
}
|
||||
)
|
||||
|
||||
res = requests.post(
|
||||
"https://chat.getgpt.world/api/chat/stream",
|
||||
headers=headers,
|
||||
json={"signature": _encrypt(data)},
|
||||
stream=True,
|
||||
)
|
||||
res = requests.post('https://chat.getgpt.world/api/chat/stream',
|
||||
headers=headers, json={'signature': _encrypt(data)}, stream=True)
|
||||
|
||||
res.raise_for_status()
|
||||
for line in res.iter_lines():
|
||||
if b"content" in line:
|
||||
line_json = json.loads(line.decode("utf-8").split("data: ")[1])
|
||||
yield (line_json["choices"][0]["delta"]["content"])
|
||||
if b'content' in line:
|
||||
line_json = json.loads(line.decode('utf-8').split('data: ')[1])
|
||||
yield (line_json['choices'][0]['delta']['content'])
|
||||
|
||||
@classmethod
|
||||
@property
|
||||
def params(cls):
|
||||
params = [
|
||||
("model", "str"),
|
||||
("messages", "list[dict[str, str]]"),
|
||||
("stream", "bool"),
|
||||
("temperature", "float"),
|
||||
("presence_penalty", "int"),
|
||||
("frequency_penalty", "int"),
|
||||
("top_p", "int"),
|
||||
("max_tokens", "int"),
|
||||
('model', 'str'),
|
||||
('messages', 'list[dict[str, str]]'),
|
||||
('stream', 'bool'),
|
||||
('temperature', 'float'),
|
||||
('presence_penalty', 'int'),
|
||||
('frequency_penalty', 'int'),
|
||||
('top_p', 'int'),
|
||||
('max_tokens', 'int'),
|
||||
]
|
||||
param = ", ".join([": ".join(p) for p in params])
|
||||
return f"g4f.provider.{cls.__name__} supports: ({param})"
|
||||
param = ', '.join([': '.join(p) for p in params])
|
||||
return f'g4f.provider.{cls.__name__} supports: ({param})'
|
||||
|
||||
|
||||
def _encrypt(e: str):
|
||||
t = os.urandom(8).hex().encode("utf-8")
|
||||
n = os.urandom(8).hex().encode("utf-8")
|
||||
r = e.encode("utf-8")
|
||||
t = os.urandom(8).hex().encode('utf-8')
|
||||
n = os.urandom(8).hex().encode('utf-8')
|
||||
r = e.encode('utf-8')
|
||||
|
||||
cipher = AES.new(t, AES.MODE_CBC, n)
|
||||
ciphertext = cipher.encrypt(_pad_data(r))
|
||||
return ciphertext.hex() + t.decode("utf-8") + n.decode("utf-8")
|
||||
|
||||
return ciphertext.hex() + t.decode('utf-8') + n.decode('utf-8')
|
||||
|
||||
|
||||
def _pad_data(data: bytes) -> bytes:
|
||||
block_size = AES.block_size
|
||||
padding_size = block_size - len(data) % block_size
|
||||
padding = bytes([padding_size] * padding_size)
|
||||
|
||||
return data + padding
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
import json
|
||||
import uuid
|
||||
|
||||
import requests
|
||||
import json, uuid, requests
|
||||
|
||||
from ..typing import Any, CreateResult
|
||||
from .base_provider import BaseProvider
|
||||
@@ -17,9 +14,8 @@ class H2o(BaseProvider):
|
||||
def create_completion(
|
||||
model: str,
|
||||
messages: list[dict[str, str]],
|
||||
stream: bool,
|
||||
**kwargs: Any,
|
||||
) -> CreateResult:
|
||||
stream: bool, **kwargs: Any) -> CreateResult:
|
||||
|
||||
conversation = ""
|
||||
for message in messages:
|
||||
conversation += "%s: %s\n" % (message["role"], message["content"])
|
||||
@@ -29,54 +25,48 @@ class H2o(BaseProvider):
|
||||
|
||||
headers = {"Referer": "https://gpt-gm.h2o.ai/r/jGfKSwU"}
|
||||
data = {
|
||||
"ethicsModalAccepted": "true",
|
||||
"ethicsModalAccepted" : "true",
|
||||
"shareConversationsWithModelAuthors": "true",
|
||||
"ethicsModalAcceptedAt": "",
|
||||
"activeModel": model,
|
||||
"searchEnabled": "true",
|
||||
"ethicsModalAcceptedAt" : "",
|
||||
"activeModel" : model,
|
||||
"searchEnabled" : "true",
|
||||
}
|
||||
session.post(
|
||||
"https://gpt-gm.h2o.ai/settings",
|
||||
headers=headers,
|
||||
data=data,
|
||||
)
|
||||
|
||||
session.post("https://gpt-gm.h2o.ai/settings",
|
||||
headers=headers, data=data)
|
||||
|
||||
headers = {"Referer": "https://gpt-gm.h2o.ai/"}
|
||||
data = {"model": model}
|
||||
|
||||
response = session.post(
|
||||
"https://gpt-gm.h2o.ai/conversation",
|
||||
headers=headers,
|
||||
json=data,
|
||||
).json()
|
||||
response = session.post("https://gpt-gm.h2o.ai/conversation",
|
||||
headers=headers, json=data).json()
|
||||
|
||||
if "conversationId" not in response:
|
||||
return
|
||||
|
||||
data = {
|
||||
"inputs": conversation,
|
||||
"parameters": {
|
||||
"temperature": kwargs.get("temperature", 0.4),
|
||||
"truncate": kwargs.get("truncate", 2048),
|
||||
"max_new_tokens": kwargs.get("max_new_tokens", 1024),
|
||||
"do_sample": kwargs.get("do_sample", True),
|
||||
"temperature" : kwargs.get("temperature", 0.4),
|
||||
"truncate" : kwargs.get("truncate", 2048),
|
||||
"max_new_tokens" : kwargs.get("max_new_tokens", 1024),
|
||||
"do_sample" : kwargs.get("do_sample", True),
|
||||
"repetition_penalty": kwargs.get("repetition_penalty", 1.2),
|
||||
"return_full_text": kwargs.get("return_full_text", False),
|
||||
"return_full_text" : kwargs.get("return_full_text", False),
|
||||
},
|
||||
"stream": True,
|
||||
"stream" : True,
|
||||
"options": {
|
||||
"id": kwargs.get("id", str(uuid.uuid4())),
|
||||
"response_id": kwargs.get("response_id", str(uuid.uuid4())),
|
||||
"is_retry": False,
|
||||
"use_cache": False,
|
||||
"id" : kwargs.get("id", str(uuid.uuid4())),
|
||||
"response_id" : kwargs.get("response_id", str(uuid.uuid4())),
|
||||
"is_retry" : False,
|
||||
"use_cache" : False,
|
||||
"web_search_id": "",
|
||||
},
|
||||
}
|
||||
|
||||
response = session.post(
|
||||
f"https://gpt-gm.h2o.ai/conversation/{response['conversationId']}",
|
||||
headers=headers,
|
||||
json=data,
|
||||
)
|
||||
response = session.post(f"https://gpt-gm.h2o.ai/conversation/{response['conversationId']}",
|
||||
headers=headers, json=data)
|
||||
|
||||
response.raise_for_status()
|
||||
response.encoding = "utf-8"
|
||||
generated_text = response.text.replace("\n", "").split("data:")
|
||||
|
||||
@@ -20,12 +20,10 @@ class Hugchat(BaseProvider):
|
||||
messages: list[dict[str, str]],
|
||||
stream: bool = False,
|
||||
proxy: str = None,
|
||||
cookies: str = get_cookies(".huggingface.co"),
|
||||
**kwargs
|
||||
) -> CreateResult:
|
||||
cookies: str = get_cookies(".huggingface.co"), **kwargs) -> CreateResult:
|
||||
|
||||
bot = ChatBot(
|
||||
cookies=cookies
|
||||
)
|
||||
cookies=cookies)
|
||||
|
||||
if proxy and "://" not in proxy:
|
||||
proxy = f"http://{proxy}"
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
import uuid
|
||||
|
||||
import requests
|
||||
import uuid, requests
|
||||
|
||||
from ..typing import Any, CreateResult
|
||||
from .base_provider import BaseProvider
|
||||
|
||||
|
||||
class Liaobots(BaseProvider):
|
||||
url = "https://liaobots.com"
|
||||
url: str = "https://liaobots.com"
|
||||
supports_stream = True
|
||||
needs_auth = True
|
||||
supports_gpt_35_turbo = True
|
||||
@@ -17,17 +15,17 @@ class Liaobots(BaseProvider):
|
||||
def create_completion(
|
||||
model: str,
|
||||
messages: list[dict[str, str]],
|
||||
stream: bool,
|
||||
**kwargs: Any,
|
||||
) -> CreateResult:
|
||||
stream: bool, **kwargs: Any) -> CreateResult:
|
||||
|
||||
headers = {
|
||||
"authority": "liaobots.com",
|
||||
"content-type": "application/json",
|
||||
"origin": "https://liaobots.com",
|
||||
"referer": "https://liaobots.com/",
|
||||
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36",
|
||||
"x-auth-code": str(kwargs.get("auth")),
|
||||
"authority" : "liaobots.com",
|
||||
"content-type" : "application/json",
|
||||
"origin" : "https://liaobots.com",
|
||||
"referer" : "https://liaobots.com/",
|
||||
"user-agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36",
|
||||
"x-auth-code" : str(kwargs.get("auth")),
|
||||
}
|
||||
|
||||
models = {
|
||||
"gpt-4": {
|
||||
"id": "gpt-4",
|
||||
@@ -44,18 +42,15 @@ class Liaobots(BaseProvider):
|
||||
}
|
||||
json_data = {
|
||||
"conversationId": str(uuid.uuid4()),
|
||||
"model": models[model],
|
||||
"messages": messages,
|
||||
"key": "",
|
||||
"prompt": "You are ChatGPT, a large language model trained by OpenAI. Follow the user's instructions carefully. Respond using markdown.",
|
||||
"model" : models[model],
|
||||
"messages" : messages,
|
||||
"key" : "",
|
||||
"prompt" : "You are ChatGPT, a large language model trained by OpenAI. Follow the user's instructions carefully. Respond using markdown.",
|
||||
}
|
||||
|
||||
response = requests.post(
|
||||
"https://liaobots.com/api/chat",
|
||||
headers=headers,
|
||||
json=json_data,
|
||||
stream=True,
|
||||
)
|
||||
response = requests.post("https://liaobots.com/api/chat",
|
||||
headers=headers, json=json_data, stream=True)
|
||||
|
||||
response.raise_for_status()
|
||||
for token in response.iter_content(chunk_size=2046):
|
||||
yield token.decode("utf-8")
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
import json
|
||||
|
||||
import requests
|
||||
import json, requests
|
||||
|
||||
from ..typing import Any, CreateResult
|
||||
from .base_provider import BaseProvider
|
||||
|
||||
|
||||
class Lockchat(BaseProvider):
|
||||
url = "http://supertest.lockchat.app"
|
||||
url: str = "http://supertest.lockchat.app"
|
||||
supports_stream = True
|
||||
supports_gpt_35_turbo = True
|
||||
supports_gpt_4 = True
|
||||
@@ -16,37 +14,33 @@ class Lockchat(BaseProvider):
|
||||
def create_completion(
|
||||
model: str,
|
||||
messages: list[dict[str, str]],
|
||||
stream: bool,
|
||||
**kwargs: Any,
|
||||
) -> CreateResult:
|
||||
stream: bool, **kwargs: Any) -> CreateResult:
|
||||
|
||||
temperature = float(kwargs.get("temperature", 0.7))
|
||||
payload = {
|
||||
"temperature": temperature,
|
||||
"messages": messages,
|
||||
"model": model,
|
||||
"stream": True,
|
||||
"messages" : messages,
|
||||
"model" : model,
|
||||
"stream" : True,
|
||||
}
|
||||
|
||||
headers = {
|
||||
"user-agent": "ChatX/39 CFNetwork/1408.0.4 Darwin/22.5.0",
|
||||
}
|
||||
response = requests.post(
|
||||
"http://supertest.lockchat.app/v1/chat/completions",
|
||||
json=payload,
|
||||
headers=headers,
|
||||
stream=True,
|
||||
)
|
||||
response = requests.post("http://supertest.lockchat.app/v1/chat/completions",
|
||||
json=payload, headers=headers, stream=True)
|
||||
|
||||
response.raise_for_status()
|
||||
for token in response.iter_lines():
|
||||
if b"The model: `gpt-4` does not exist" in token:
|
||||
print("error, retrying...")
|
||||
Lockchat.create_completion(
|
||||
model=model,
|
||||
messages=messages,
|
||||
stream=stream,
|
||||
temperature=temperature,
|
||||
**kwargs,
|
||||
)
|
||||
model = model,
|
||||
messages = messages,
|
||||
stream = stream,
|
||||
temperature = temperature,
|
||||
**kwargs)
|
||||
|
||||
if b"content" in token:
|
||||
token = json.loads(token.decode("utf-8").split("data: ")[1])
|
||||
token = token["choices"][0]["delta"].get("content")
|
||||
|
||||
@@ -13,25 +13,22 @@ class Opchatgpts(BaseProvider):
|
||||
def create_completion(
|
||||
model: str,
|
||||
messages: list[dict[str, str]],
|
||||
stream: bool,
|
||||
**kwargs: Any,
|
||||
) -> CreateResult:
|
||||
stream: bool, **kwargs: Any) -> CreateResult:
|
||||
|
||||
temperature = kwargs.get("temperature", 0.8)
|
||||
max_tokens = kwargs.get("max_tokens", 1024)
|
||||
system_prompt = kwargs.get(
|
||||
"system_prompt",
|
||||
"Converse as if you were an AI assistant. Be friendly, creative.",
|
||||
)
|
||||
payload = _create_payload(
|
||||
messages=messages,
|
||||
temperature=temperature,
|
||||
max_tokens=max_tokens,
|
||||
system_prompt=system_prompt,
|
||||
)
|
||||
"Converse as if you were an AI assistant. Be friendly, creative.")
|
||||
|
||||
payload = _create_payload(
|
||||
messages = messages,
|
||||
temperature = temperature,
|
||||
max_tokens = max_tokens,
|
||||
system_prompt = system_prompt)
|
||||
|
||||
response = requests.post("https://opchatgpts.net/wp-json/ai-chatbot/v1/chat", json=payload)
|
||||
|
||||
response = requests.post(
|
||||
"https://opchatgpts.net/wp-json/ai-chatbot/v1/chat", json=payload
|
||||
)
|
||||
response.raise_for_status()
|
||||
yield response.json()["reply"]
|
||||
|
||||
@@ -39,24 +36,23 @@ class Opchatgpts(BaseProvider):
|
||||
def _create_payload(
|
||||
messages: list[dict[str, str]],
|
||||
temperature: float,
|
||||
max_tokens: int,
|
||||
system_prompt: str,
|
||||
):
|
||||
max_tokens: int, system_prompt: str) -> dict:
|
||||
|
||||
return {
|
||||
"env": "chatbot",
|
||||
"session": "N/A",
|
||||
"prompt": "\n",
|
||||
"context": system_prompt,
|
||||
"messages": messages,
|
||||
"newMessage": messages[::-1][0]["content"],
|
||||
"userName": '<div class="mwai-name-text">User:</div>',
|
||||
"aiName": '<div class="mwai-name-text">AI:</div>',
|
||||
"model": "gpt-3.5-turbo",
|
||||
"temperature": temperature,
|
||||
"maxTokens": max_tokens,
|
||||
"maxResults": 1,
|
||||
"apiKey": "",
|
||||
"service": "openai",
|
||||
"embeddingsIndex": "",
|
||||
"stop": "",
|
||||
"env" : "chatbot",
|
||||
"session" : "N/A",
|
||||
"prompt" : "\n",
|
||||
"context" : system_prompt,
|
||||
"messages" : messages,
|
||||
"newMessage" : messages[::-1][0]["content"],
|
||||
"userName" : '<div class="mwai-name-text">User:</div>',
|
||||
"aiName" : '<div class="mwai-name-text">AI:</div>',
|
||||
"model" : "gpt-3.5-turbo",
|
||||
"temperature" : temperature,
|
||||
"maxTokens" : max_tokens,
|
||||
"maxResults" : 1,
|
||||
"apiKey" : "",
|
||||
"service" : "openai",
|
||||
"embeddingsIndex" : "",
|
||||
"stop" : "",
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ try:
|
||||
from revChatGPT.V1 import AsyncChatbot
|
||||
except ImportError:
|
||||
has_module = False
|
||||
|
||||
from .base_provider import AsyncGeneratorProvider, get_cookies
|
||||
from ..typing import AsyncGenerator
|
||||
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
import json
|
||||
import requests
|
||||
import json, requests
|
||||
|
||||
from ..typing import Any, CreateResult
|
||||
from .base_provider import BaseProvider
|
||||
|
||||
|
||||
class Raycast(BaseProvider):
|
||||
url = "https://raycast.com"
|
||||
# model = ['gpt-3.5-turbo', 'gpt-4']
|
||||
supports_gpt_35_turbo = True
|
||||
supports_gpt_4 = True
|
||||
supports_stream = True
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import json,random,requests
|
||||
# from curl_cffi import requests
|
||||
import json, random, requests
|
||||
|
||||
from ..typing import Any, CreateResult
|
||||
from .base_provider import BaseProvider
|
||||
|
||||
@@ -15,60 +15,58 @@ class Theb(BaseProvider):
|
||||
def create_completion(
|
||||
model: str,
|
||||
messages: list[dict[str, str]],
|
||||
stream: bool,
|
||||
**kwargs: Any,
|
||||
) -> CreateResult:
|
||||
stream: bool, **kwargs: Any) -> CreateResult:
|
||||
|
||||
conversation = ''
|
||||
for message in messages:
|
||||
conversation += '%s: %s\n' % (message['role'], message['content'])
|
||||
|
||||
conversation += 'assistant: '
|
||||
|
||||
auth = kwargs.get("auth", {
|
||||
"bearer_token":"free",
|
||||
"org_id":"theb",
|
||||
})
|
||||
|
||||
bearer_token = auth["bearer_token"]
|
||||
org_id = auth["org_id"]
|
||||
|
||||
headers = {
|
||||
'authority': 'beta.theb.ai',
|
||||
'accept': 'text/event-stream',
|
||||
'accept-language': 'id-ID,id;q=0.9,en-US;q=0.8,en;q=0.7',
|
||||
'authorization': 'Bearer '+bearer_token,
|
||||
'content-type': 'application/json',
|
||||
'origin': 'https://beta.theb.ai',
|
||||
'referer': 'https://beta.theb.ai/home',
|
||||
'sec-ch-ua': '"Chromium";v="116", "Not)A;Brand";v="24", "Google Chrome";v="116"',
|
||||
'sec-ch-ua-mobile': '?0',
|
||||
'authority' : 'beta.theb.ai',
|
||||
'accept' : 'text/event-stream',
|
||||
'accept-language' : 'id-ID,id;q=0.9,en-US;q=0.8,en;q=0.7',
|
||||
'authorization' : 'Bearer '+bearer_token,
|
||||
'content-type' : 'application/json',
|
||||
'origin' : 'https://beta.theb.ai',
|
||||
'referer' : 'https://beta.theb.ai/home',
|
||||
'sec-ch-ua' : '"Chromium";v="116", "Not)A;Brand";v="24", "Google Chrome";v="116"',
|
||||
'sec-ch-ua-mobile' : '?0',
|
||||
'sec-ch-ua-platform': '"Windows"',
|
||||
'sec-fetch-dest': 'empty',
|
||||
'sec-fetch-mode': 'cors',
|
||||
'sec-fetch-site': 'same-origin',
|
||||
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',
|
||||
'x-ai-model': 'ee8d4f29cb7047f78cbe84313ed6ace8',
|
||||
'sec-fetch-dest' : 'empty',
|
||||
'sec-fetch-mode' : 'cors',
|
||||
'sec-fetch-site' : 'same-origin',
|
||||
'user-agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',
|
||||
'x-ai-model' : 'ee8d4f29cb7047f78cbe84313ed6ace8',
|
||||
}
|
||||
# generate 10 random number
|
||||
# 0.1 - 0.9
|
||||
|
||||
req_rand = random.randint(100000000, 9999999999)
|
||||
|
||||
json_data: dict[str, Any] = {
|
||||
"text": conversation,
|
||||
"category": "04f58f64a4aa4191a957b47290fee864",
|
||||
"model": "ee8d4f29cb7047f78cbe84313ed6ace8",
|
||||
"text" : conversation,
|
||||
"category" : "04f58f64a4aa4191a957b47290fee864",
|
||||
"model" : "ee8d4f29cb7047f78cbe84313ed6ace8",
|
||||
"model_params": {
|
||||
"system_prompt": "You are ChatGPT, a large language model trained by OpenAI, based on the GPT-3.5 architecture.\nKnowledge cutoff: 2021-09\nCurrent date: {{YYYY-MM-DD}}",
|
||||
"temperature": kwargs.get("temperature", 1),
|
||||
"top_p": kwargs.get("top_p", 1),
|
||||
"frequency_penalty": kwargs.get("frequency_penalty", 0),
|
||||
"presence_penalty": kwargs.get("presence_penalty", 0),
|
||||
"long_term_memory": "auto"
|
||||
"system_prompt" : "You are ChatGPT, a large language model trained by OpenAI, based on the GPT-3.5 architecture.\nKnowledge cutoff: 2021-09\nCurrent date: {{YYYY-MM-DD}}",
|
||||
"temperature" : kwargs.get("temperature", 1),
|
||||
"top_p" : kwargs.get("top_p", 1),
|
||||
"frequency_penalty" : kwargs.get("frequency_penalty", 0),
|
||||
"presence_penalty" : kwargs.get("presence_penalty", 0),
|
||||
"long_term_memory" : "auto"
|
||||
}
|
||||
}
|
||||
response = requests.post(
|
||||
"https://beta.theb.ai/api/conversation?org_id="+org_id+"&req_rand="+str(req_rand),
|
||||
headers=headers,
|
||||
json=json_data,
|
||||
stream=True,
|
||||
)
|
||||
|
||||
response = requests.post(f"https://beta.theb.ai/api/conversation?org_id={org_id}&req_rand={req_rand}",
|
||||
headers=headers, json=json_data, stream=True)
|
||||
|
||||
response.raise_for_status()
|
||||
content = ""
|
||||
next_content = ""
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import uuid, requests
|
||||
|
||||
from ..typing import Any, CreateResult
|
||||
from .base_provider import BaseProvider
|
||||
|
||||
|
||||
class V50(BaseProvider):
|
||||
url = 'https://p5.v50.ltd'
|
||||
supports_gpt_35_turbo = True
|
||||
@@ -14,38 +14,39 @@ class V50(BaseProvider):
|
||||
def create_completion(
|
||||
model: str,
|
||||
messages: list[dict[str, str]],
|
||||
stream: bool,
|
||||
**kwargs: Any,
|
||||
) -> CreateResult:
|
||||
stream: bool, **kwargs: Any) -> CreateResult:
|
||||
|
||||
conversation = ''
|
||||
for message in messages:
|
||||
conversation += '%s: %s\n' % (message['role'], message['content'])
|
||||
|
||||
conversation += 'assistant: '
|
||||
payload = {
|
||||
"prompt": conversation,
|
||||
"options": {},
|
||||
"systemMessage": ".",
|
||||
"temperature": kwargs.get("temperature", 0.4),
|
||||
"top_p": kwargs.get("top_p", 0.4),
|
||||
"model": model,
|
||||
"user": str(uuid.uuid4())
|
||||
"prompt" : conversation,
|
||||
"options" : {},
|
||||
"systemMessage" : ".",
|
||||
"temperature" : kwargs.get("temperature", 0.4),
|
||||
"top_p" : kwargs.get("top_p", 0.4),
|
||||
"model" : model,
|
||||
"user" : str(uuid.uuid4())
|
||||
}
|
||||
|
||||
headers = {
|
||||
'authority': 'p5.v50.ltd',
|
||||
'accept': 'application/json, text/plain, */*',
|
||||
'accept-language': 'id-ID,id;q=0.9,en-US;q=0.8,en;q=0.7',
|
||||
'content-type': 'application/json',
|
||||
'origin': 'https://p5.v50.ltd',
|
||||
'referer': 'https://p5.v50.ltd/',
|
||||
'authority' : 'p5.v50.ltd',
|
||||
'accept' : 'application/json, text/plain, */*',
|
||||
'accept-language' : 'id-ID,id;q=0.9,en-US;q=0.8,en;q=0.7',
|
||||
'content-type' : 'application/json',
|
||||
'origin' : 'https://p5.v50.ltd',
|
||||
'referer' : 'https://p5.v50.ltd/',
|
||||
'sec-ch-ua-platform': '"Windows"',
|
||||
'sec-fetch-dest': 'empty',
|
||||
'sec-fetch-mode': 'cors',
|
||||
'sec-fetch-site': 'same-origin',
|
||||
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36'
|
||||
'sec-fetch-dest' : 'empty',
|
||||
'sec-fetch-mode' : 'cors',
|
||||
'sec-fetch-site' : 'same-origin',
|
||||
'user-agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36'
|
||||
}
|
||||
response = requests.post("https://p5.v50.ltd/api/chat-process",
|
||||
json=payload, headers=headers, proxies=kwargs['proxy'] if 'proxy' in kwargs else {})
|
||||
|
||||
if "https://fk1.v50.ltd" not in response.text:
|
||||
yield response.text
|
||||
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
import base64
|
||||
import json
|
||||
import uuid
|
||||
import base64, json, uuid, quickjs
|
||||
|
||||
import quickjs
|
||||
from curl_cffi import requests
|
||||
|
||||
from ..typing import Any, CreateResult, TypedDict
|
||||
from .base_provider import BaseProvider
|
||||
|
||||
@@ -18,9 +14,8 @@ class Vercel(BaseProvider):
|
||||
def create_completion(
|
||||
model: str,
|
||||
messages: list[dict[str, str]],
|
||||
stream: bool,
|
||||
**kwargs: Any,
|
||||
) -> CreateResult:
|
||||
stream: bool, **kwargs: Any) -> CreateResult:
|
||||
|
||||
if model in ["gpt-3.5-turbo", "gpt-4"]:
|
||||
model = "openai:" + model
|
||||
yield _chat(model_id=model, messages=messages)
|
||||
@@ -44,15 +39,13 @@ def _create_payload(model_id: str, messages: list[dict[str, str]]) -> dict[str,
|
||||
"messages": messages,
|
||||
"playgroundId": str(uuid.uuid4()),
|
||||
"chatIndex": 0,
|
||||
"model": model_id,
|
||||
} | default_params
|
||||
"model": model_id} | default_params
|
||||
|
||||
|
||||
def _create_header(session: requests.Session):
|
||||
custom_encoding = _get_custom_encoding(session)
|
||||
return {"custom-encoding": custom_encoding}
|
||||
|
||||
|
||||
# based on https://github.com/ading2210/vercel-llm-api
|
||||
def _get_custom_encoding(session: requests.Session):
|
||||
url = "https://sdk.vercel.ai/openai.jpeg"
|
||||
|
||||
@@ -1,9 +1,4 @@
|
||||
import json
|
||||
import random
|
||||
import string
|
||||
import time
|
||||
|
||||
import requests
|
||||
import json, random, string, time, requests
|
||||
|
||||
from ..typing import Any, CreateResult
|
||||
from .base_provider import BaseProvider
|
||||
@@ -19,51 +14,53 @@ class Wewordle(BaseProvider):
|
||||
cls,
|
||||
model: str,
|
||||
messages: list[dict[str, str]],
|
||||
stream: bool,
|
||||
**kwargs: Any,
|
||||
) -> CreateResult:
|
||||
stream: bool, **kwargs: Any) -> CreateResult:
|
||||
|
||||
# randomize user id and app id
|
||||
_user_id = "".join(
|
||||
random.choices(f"{string.ascii_lowercase}{string.digits}", k=16)
|
||||
)
|
||||
random.choices(f"{string.ascii_lowercase}{string.digits}", k=16))
|
||||
|
||||
_app_id = "".join(
|
||||
random.choices(f"{string.ascii_lowercase}{string.digits}", k=31)
|
||||
)
|
||||
random.choices(f"{string.ascii_lowercase}{string.digits}", k=31))
|
||||
|
||||
# make current date with format utc
|
||||
_request_date = time.strftime("%Y-%m-%dT%H:%M:%S.000Z", time.gmtime())
|
||||
headers = {
|
||||
"accept": "*/*",
|
||||
"pragma": "no-cache",
|
||||
"Content-Type": "application/json",
|
||||
"Connection": "keep-alive"
|
||||
"accept" : "*/*",
|
||||
"pragma" : "no-cache",
|
||||
"Content-Type" : "application/json",
|
||||
"Connection" : "keep-alive"
|
||||
# user agent android client
|
||||
# 'User-Agent': 'Dalvik/2.1.0 (Linux; U; Android 10; SM-G975F Build/QP1A.190711.020)',
|
||||
}
|
||||
|
||||
data: dict[str, Any] = {
|
||||
"user": _user_id,
|
||||
"messages": messages,
|
||||
"user" : _user_id,
|
||||
"messages" : messages,
|
||||
"subscriber": {
|
||||
"originalPurchaseDate": None,
|
||||
"originalApplicationVersion": None,
|
||||
"allPurchaseDatesMillis": {},
|
||||
"entitlements": {"active": {}, "all": {}},
|
||||
"allPurchaseDates": {},
|
||||
"allExpirationDatesMillis": {},
|
||||
"allExpirationDates": {},
|
||||
"originalAppUserId": f"$RCAnonymousID:{_app_id}",
|
||||
"latestExpirationDate": None,
|
||||
"requestDate": _request_date,
|
||||
"latestExpirationDateMillis": None,
|
||||
"nonSubscriptionTransactions": [],
|
||||
"originalPurchaseDateMillis": None,
|
||||
"managementURL": None,
|
||||
"originalPurchaseDate" : None,
|
||||
"originalApplicationVersion" : None,
|
||||
"allPurchaseDatesMillis" : {},
|
||||
"entitlements" : {"active": {}, "all": {}},
|
||||
"allPurchaseDates" : {},
|
||||
"allExpirationDatesMillis" : {},
|
||||
"allExpirationDates" : {},
|
||||
"originalAppUserId" : f"$RCAnonymousID:{_app_id}",
|
||||
"latestExpirationDate" : None,
|
||||
"requestDate" : _request_date,
|
||||
"latestExpirationDateMillis" : None,
|
||||
"nonSubscriptionTransactions" : [],
|
||||
"originalPurchaseDateMillis" : None,
|
||||
"managementURL" : None,
|
||||
"allPurchasedProductIdentifiers": [],
|
||||
"firstSeen": _request_date,
|
||||
"activeSubscriptions": [],
|
||||
},
|
||||
"firstSeen" : _request_date,
|
||||
"activeSubscriptions" : [],
|
||||
}
|
||||
}
|
||||
|
||||
response = requests.post(f"{cls.url}gptapi/v1/android/turbo", headers=headers, data=json.dumps(data))
|
||||
response = requests.post(f"{cls.url}gptapi/v1/android/turbo",
|
||||
headers=headers, data=json.dumps(data))
|
||||
|
||||
response.raise_for_status()
|
||||
_json = response.json()
|
||||
if "message" in _json:
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
import re
|
||||
import urllib.parse
|
||||
import json
|
||||
import urllib.parse, json
|
||||
|
||||
from curl_cffi import requests
|
||||
|
||||
from ..typing import Any, CreateResult
|
||||
from .base_provider import BaseProvider
|
||||
|
||||
@@ -17,17 +14,14 @@ class You(BaseProvider):
|
||||
def create_completion(
|
||||
model: str,
|
||||
messages: list[dict[str, str]],
|
||||
stream: bool,
|
||||
**kwargs: Any,
|
||||
) -> CreateResult:
|
||||
stream: bool, **kwargs: Any) -> CreateResult:
|
||||
|
||||
url_param = _create_url_param(messages, kwargs.get("history", []))
|
||||
headers = _create_header()
|
||||
url = f"https://you.com/api/streamingSearch?{url_param}"
|
||||
response = requests.get(
|
||||
url,
|
||||
headers=headers,
|
||||
impersonate="chrome107",
|
||||
)
|
||||
|
||||
response = requests.get(f"https://you.com/api/streamingSearch?{url_param}",
|
||||
headers=headers, impersonate="chrome107")
|
||||
|
||||
response.raise_for_status()
|
||||
|
||||
start = 'data: {"youChatToken": '
|
||||
|
||||
@@ -13,14 +13,14 @@ class Yqcloud(BaseProvider):
|
||||
def create_completion(
|
||||
model: str,
|
||||
messages: list[dict[str, str]],
|
||||
stream: bool,
|
||||
**kwargs: Any,
|
||||
) -> CreateResult:
|
||||
stream: bool, **kwargs: Any) -> CreateResult:
|
||||
|
||||
headers = _create_header()
|
||||
payload = _create_payload(messages)
|
||||
|
||||
url = "https://api.aichatos.cloud/api/generateStream"
|
||||
response = requests.post(url=url, headers=headers, json=payload)
|
||||
response = requests.post("https://api.aichatos.cloud/api/generateStream",
|
||||
headers=headers, json=payload)
|
||||
|
||||
response.raise_for_status()
|
||||
response.encoding = 'utf-8'
|
||||
yield response.text
|
||||
@@ -28,9 +28,9 @@ class Yqcloud(BaseProvider):
|
||||
|
||||
def _create_header():
|
||||
return {
|
||||
"accept": "application/json, text/plain, */*",
|
||||
"content-type": "application/json",
|
||||
"origin": "https://chat9.yqcloud.top",
|
||||
"accept" : "application/json, text/plain, */*",
|
||||
"content-type" : "application/json",
|
||||
"origin" : "https://chat9.yqcloud.top",
|
||||
}
|
||||
|
||||
|
||||
@@ -39,10 +39,11 @@ def _create_payload(messages: list[dict[str, str]]):
|
||||
for message in messages:
|
||||
prompt += "%s: %s\n" % (message["role"], message["content"])
|
||||
prompt += "assistant:"
|
||||
|
||||
return {
|
||||
"prompt": prompt,
|
||||
"network": True,
|
||||
"system": "",
|
||||
"prompt" : prompt,
|
||||
"network" : True,
|
||||
"system" : "",
|
||||
"withoutContext": False,
|
||||
"stream": False,
|
||||
"stream" : False,
|
||||
}
|
||||
@@ -4,7 +4,6 @@ from .Ails import Ails
|
||||
from .AiService import AiService
|
||||
from .AItianhu import AItianhu
|
||||
from .Bard import Bard
|
||||
from .base_provider import BaseProvider
|
||||
from .Bing import Bing
|
||||
from .ChatgptAi import ChatgptAi
|
||||
from .ChatgptLogin import ChatgptLogin
|
||||
@@ -30,36 +29,38 @@ from .FastGpt import FastGpt
|
||||
from .V50 import V50
|
||||
from .Wuguokai import Wuguokai
|
||||
|
||||
from .base_provider import BaseProvider
|
||||
|
||||
__all__ = [
|
||||
"BaseProvider",
|
||||
"Acytoo",
|
||||
"Aichat",
|
||||
"Ails",
|
||||
"AiService",
|
||||
"AItianhu",
|
||||
"Bard",
|
||||
"Bing",
|
||||
"ChatgptAi",
|
||||
"ChatgptLogin",
|
||||
"DeepAi",
|
||||
"DfeHub",
|
||||
"EasyChat",
|
||||
"Forefront",
|
||||
"GetGpt",
|
||||
"H2o",
|
||||
"Hugchat",
|
||||
"Liaobots",
|
||||
"Lockchat",
|
||||
"Opchatgpts",
|
||||
"Raycast",
|
||||
"OpenaiChat",
|
||||
"Theb",
|
||||
"Vercel",
|
||||
"Wewordle",
|
||||
"You",
|
||||
"Yqcloud",
|
||||
"Equing",
|
||||
"FastGpt",
|
||||
"Wuguokai"
|
||||
"V50"
|
||||
'BaseProvider',
|
||||
'Acytoo',
|
||||
'Aichat',
|
||||
'Ails',
|
||||
'AiService',
|
||||
'AItianhu',
|
||||
'Bard',
|
||||
'Bing',
|
||||
'ChatgptAi',
|
||||
'ChatgptLogin',
|
||||
'DeepAi',
|
||||
'DfeHub',
|
||||
'EasyChat',
|
||||
'Forefront',
|
||||
'GetGpt',
|
||||
'H2o',
|
||||
'Hugchat',
|
||||
'Liaobots',
|
||||
'Lockchat',
|
||||
'Opchatgpts',
|
||||
'Raycast',
|
||||
'OpenaiChat',
|
||||
'Theb',
|
||||
'Vercel',
|
||||
'Wewordle',
|
||||
'You',
|
||||
'Yqcloud',
|
||||
'Equing',
|
||||
'FastGpt',
|
||||
'Wuguokai',
|
||||
'V50'
|
||||
]
|
||||
|
||||
@@ -20,9 +20,8 @@ class BaseProvider(ABC):
|
||||
def create_completion(
|
||||
model: str,
|
||||
messages: list[dict[str, str]],
|
||||
stream: bool,
|
||||
**kwargs: Any,
|
||||
) -> CreateResult:
|
||||
stream: bool, **kwargs: Any) -> CreateResult:
|
||||
|
||||
raise NotImplementedError()
|
||||
|
||||
@classmethod
|
||||
@@ -42,8 +41,10 @@ _cookies = {}
|
||||
def get_cookies(cookie_domain: str) -> dict:
|
||||
if cookie_domain not in _cookies:
|
||||
_cookies[cookie_domain] = {}
|
||||
|
||||
for cookie in browser_cookie3.load(cookie_domain):
|
||||
_cookies[cookie_domain][cookie.name] = cookie.value
|
||||
|
||||
return _cookies[cookie_domain]
|
||||
|
||||
|
||||
@@ -53,18 +54,15 @@ class AsyncProvider(BaseProvider):
|
||||
cls,
|
||||
model: str,
|
||||
messages: list[dict[str, str]],
|
||||
stream: bool = False,
|
||||
**kwargs: Any
|
||||
) -> CreateResult:
|
||||
stream: bool = False, **kwargs: Any) -> CreateResult:
|
||||
|
||||
yield asyncio.run(cls.create_async(model, messages, **kwargs))
|
||||
|
||||
@staticmethod
|
||||
@abstractmethod
|
||||
async def create_async(
|
||||
model: str,
|
||||
messages: list[dict[str, str]],
|
||||
**kwargs: Any,
|
||||
) -> str:
|
||||
messages: list[dict[str, str]], **kwargs: Any) -> str:
|
||||
raise NotImplementedError()
|
||||
|
||||
|
||||
@@ -74,9 +72,8 @@ class AsyncGeneratorProvider(AsyncProvider):
|
||||
cls,
|
||||
model: str,
|
||||
messages: list[dict[str, str]],
|
||||
stream: bool = True,
|
||||
**kwargs: Any
|
||||
) -> CreateResult:
|
||||
stream: bool = True, **kwargs: Any) -> CreateResult:
|
||||
|
||||
if stream:
|
||||
yield from run_generator(cls.create_async_generator(model, messages, **kwargs))
|
||||
else:
|
||||
@@ -86,9 +83,8 @@ class AsyncGeneratorProvider(AsyncProvider):
|
||||
async def create_async(
|
||||
cls,
|
||||
model: str,
|
||||
messages: list[dict[str, str]],
|
||||
**kwargs: Any,
|
||||
) -> str:
|
||||
messages: list[dict[str, str]], **kwargs: Any) -> str:
|
||||
|
||||
chunks = [chunk async for chunk in cls.create_async_generator(model, messages, **kwargs)]
|
||||
if chunks:
|
||||
return "".join(chunks)
|
||||
@@ -97,8 +93,8 @@ class AsyncGeneratorProvider(AsyncProvider):
|
||||
@abstractmethod
|
||||
def create_async_generator(
|
||||
model: str,
|
||||
messages: list[dict[str, str]],
|
||||
) -> AsyncGenerator:
|
||||
messages: list[dict[str, str]]) -> AsyncGenerator:
|
||||
|
||||
raise NotImplementedError()
|
||||
|
||||
|
||||
|
||||
@@ -4,42 +4,39 @@ from .typing import Any, CreateResult, Union
|
||||
|
||||
logging = False
|
||||
|
||||
|
||||
class ChatCompletion:
|
||||
@staticmethod
|
||||
def create(
|
||||
model: Union[models.Model, str],
|
||||
messages: list[dict[str, str]],
|
||||
provider: Union[type[BaseProvider], None] = None,
|
||||
stream: bool = False,
|
||||
auth: Union[str, None] = None,
|
||||
**kwargs: Any,
|
||||
) -> Union[CreateResult, str]:
|
||||
model : Union[models.Model, str],
|
||||
messages : list[dict[str, str]],
|
||||
provider : Union[type[BaseProvider], None] = None,
|
||||
stream : bool = False,
|
||||
auth : Union[str, None] = None, **kwargs: Any) -> Union[CreateResult, str]:
|
||||
|
||||
if isinstance(model, str):
|
||||
try:
|
||||
model = models.ModelUtils.convert[model]
|
||||
except KeyError:
|
||||
raise Exception(f"The model: {model} does not exist")
|
||||
raise Exception(f'The model: {model} does not exist')
|
||||
|
||||
provider = model.best_provider if provider == None else provider
|
||||
|
||||
if not provider.working:
|
||||
raise Exception(f"{provider.__name__} is not working")
|
||||
raise Exception(f'{provider.__name__} is not working')
|
||||
|
||||
if provider.needs_auth and not auth:
|
||||
raise Exception(
|
||||
f'ValueError: {provider.__name__} requires authentication (use auth="cookie or token or jwt ..." param)'
|
||||
)
|
||||
f'ValueError: {provider.__name__} requires authentication (use auth=\'cookie or token or jwt ...\' param)')
|
||||
|
||||
if provider.needs_auth:
|
||||
kwargs["auth"] = auth
|
||||
kwargs['auth'] = auth
|
||||
|
||||
if not provider.supports_stream and stream:
|
||||
raise Exception(
|
||||
f"ValueError: {provider.__name__} does not support 'stream' argument"
|
||||
)
|
||||
f'ValueError: {provider.__name__} does not support "stream" argument')
|
||||
|
||||
if logging:
|
||||
print(f"Using {provider.__name__} provider")
|
||||
print(f'Using {provider.__name__} provider')
|
||||
|
||||
result = provider.create_completion(model.name, messages, stream, **kwargs)
|
||||
return result if stream else "".join(result)
|
||||
return result if stream else ''.join(result)
|
||||
|
||||
268
g4f/models.py
268
g4f/models.py
@@ -1,8 +1,6 @@
|
||||
from dataclasses import dataclass
|
||||
|
||||
from .Provider import Bard, BaseProvider, GetGpt, H2o, Liaobots, Vercel, Equing
|
||||
|
||||
|
||||
@dataclass
|
||||
class Model:
|
||||
name: str
|
||||
@@ -12,214 +10,190 @@ class Model:
|
||||
|
||||
# GPT-3.5 / GPT-4
|
||||
gpt_35_turbo = Model(
|
||||
name="gpt-3.5-turbo",
|
||||
base_provider="openai",
|
||||
best_provider=GetGpt,
|
||||
)
|
||||
name = 'gpt-3.5-turbo',
|
||||
base_provider = 'openai',
|
||||
best_provider = GetGpt)
|
||||
|
||||
gpt_4 = Model(
|
||||
name="gpt-4",
|
||||
base_provider="openai",
|
||||
best_provider=Liaobots,
|
||||
)
|
||||
name = 'gpt-4',
|
||||
base_provider = 'openai',
|
||||
best_provider = Liaobots)
|
||||
|
||||
# Bard
|
||||
palm = Model(
|
||||
name="palm",
|
||||
base_provider="google",
|
||||
best_provider=Bard,
|
||||
)
|
||||
name = 'palm',
|
||||
base_provider = 'google',
|
||||
best_provider = Bard)
|
||||
|
||||
# H2o
|
||||
falcon_7b = Model(
|
||||
name="h2oai/h2ogpt-gm-oasst1-en-2048-falcon-7b-v3",
|
||||
base_provider="huggingface",
|
||||
best_provider=H2o,
|
||||
)
|
||||
name = 'h2oai/h2ogpt-gm-oasst1-en-2048-falcon-7b-v3',
|
||||
base_provider = 'huggingface',
|
||||
best_provider = H2o)
|
||||
|
||||
falcon_40b = Model(
|
||||
name="h2oai/h2ogpt-gm-oasst1-en-2048-falcon-40b-v1",
|
||||
base_provider="huggingface",
|
||||
best_provider=H2o,
|
||||
)
|
||||
name = 'h2oai/h2ogpt-gm-oasst1-en-2048-falcon-40b-v1',
|
||||
base_provider = 'huggingface',
|
||||
best_provider = H2o)
|
||||
|
||||
llama_13b = Model(
|
||||
name="h2oai/h2ogpt-gm-oasst1-en-2048-open-llama-13b",
|
||||
base_provider="huggingface",
|
||||
best_provider=H2o,
|
||||
)
|
||||
name = 'h2oai/h2ogpt-gm-oasst1-en-2048-open-llama-13b',
|
||||
base_provider = 'huggingface',
|
||||
best_provider = H2o)
|
||||
|
||||
# Vercel
|
||||
claude_instant_v1 = Model(
|
||||
name="anthropic:claude-instant-v1",
|
||||
base_provider="anthropic",
|
||||
best_provider=Vercel,
|
||||
)
|
||||
name = 'anthropic:claude-instant-v1',
|
||||
base_provider = 'anthropic',
|
||||
best_provider = Vercel)
|
||||
|
||||
claude_v1 = Model(
|
||||
name="anthropic:claude-v1",
|
||||
base_provider="anthropic",
|
||||
best_provider=Vercel,
|
||||
)
|
||||
name = 'anthropic:claude-v1',
|
||||
base_provider = 'anthropic',
|
||||
best_provider = Vercel)
|
||||
|
||||
claude_v2 = Model(
|
||||
name="anthropic:claude-v2",
|
||||
base_provider="anthropic",
|
||||
best_provider=Vercel,
|
||||
)
|
||||
name = 'anthropic:claude-v2',
|
||||
base_provider = 'anthropic',
|
||||
best_provider = Vercel)
|
||||
|
||||
command_light_nightly = Model(
|
||||
name="cohere:command-light-nightly",
|
||||
base_provider="cohere",
|
||||
best_provider=Vercel,
|
||||
)
|
||||
name = 'cohere:command-light-nightly',
|
||||
base_provider = 'cohere',
|
||||
best_provider = Vercel)
|
||||
|
||||
command_nightly = Model(
|
||||
name="cohere:command-nightly",
|
||||
base_provider="cohere",
|
||||
best_provider=Vercel,
|
||||
)
|
||||
name = 'cohere:command-nightly',
|
||||
base_provider = 'cohere',
|
||||
best_provider = Vercel)
|
||||
|
||||
gpt_neox_20b = Model(
|
||||
name="huggingface:EleutherAI/gpt-neox-20b",
|
||||
base_provider="huggingface",
|
||||
best_provider=Vercel,
|
||||
)
|
||||
name = 'huggingface:EleutherAI/gpt-neox-20b',
|
||||
base_provider = 'huggingface',
|
||||
best_provider = Vercel)
|
||||
|
||||
oasst_sft_1_pythia_12b = Model(
|
||||
name="huggingface:OpenAssistant/oasst-sft-1-pythia-12b",
|
||||
base_provider="huggingface",
|
||||
best_provider=Vercel,
|
||||
)
|
||||
name = 'huggingface:OpenAssistant/oasst-sft-1-pythia-12b',
|
||||
base_provider = 'huggingface',
|
||||
best_provider = Vercel)
|
||||
|
||||
oasst_sft_4_pythia_12b_epoch_35 = Model(
|
||||
name="huggingface:OpenAssistant/oasst-sft-4-pythia-12b-epoch-3.5",
|
||||
base_provider="huggingface",
|
||||
best_provider=Vercel,
|
||||
)
|
||||
name = 'huggingface:OpenAssistant/oasst-sft-4-pythia-12b-epoch-3.5',
|
||||
base_provider = 'huggingface',
|
||||
best_provider = Vercel)
|
||||
|
||||
santacoder = Model(
|
||||
name="huggingface:bigcode/santacoder",
|
||||
base_provider="huggingface",
|
||||
best_provider=Vercel,
|
||||
)
|
||||
name = 'huggingface:bigcode/santacoder',
|
||||
base_provider = 'huggingface',
|
||||
best_provider = Vercel)
|
||||
|
||||
bloom = Model(
|
||||
name="huggingface:bigscience/bloom",
|
||||
base_provider="huggingface",
|
||||
best_provider=Vercel,
|
||||
)
|
||||
name = 'huggingface:bigscience/bloom',
|
||||
base_provider = 'huggingface',
|
||||
best_provider = Vercel)
|
||||
|
||||
flan_t5_xxl = Model(
|
||||
name="huggingface:google/flan-t5-xxl",
|
||||
base_provider="huggingface",
|
||||
best_provider=Vercel,
|
||||
)
|
||||
name = 'huggingface:google/flan-t5-xxl',
|
||||
base_provider = 'huggingface',
|
||||
best_provider = Vercel)
|
||||
|
||||
code_davinci_002 = Model(
|
||||
name="openai:code-davinci-002",
|
||||
base_provider="openai",
|
||||
best_provider=Vercel,
|
||||
)
|
||||
name = 'openai:code-davinci-002',
|
||||
base_provider = 'openai',
|
||||
best_provider = Vercel)
|
||||
|
||||
gpt_35_turbo_16k = Model(
|
||||
name="openai:gpt-3.5-turbo-16k",
|
||||
base_provider="openai",
|
||||
best_provider=Vercel,
|
||||
)
|
||||
name = 'openai:gpt-3.5-turbo-16k',
|
||||
base_provider = 'openai',
|
||||
best_provider = Vercel)
|
||||
|
||||
gpt_35_turbo_16k_0613 = Model(
|
||||
name="openai:gpt-3.5-turbo-16k-0613",
|
||||
base_provider="openai",
|
||||
best_provider=Equing,
|
||||
)
|
||||
name = 'openai:gpt-3.5-turbo-16k-0613',
|
||||
base_provider = 'openai',
|
||||
best_provider = Equing)
|
||||
|
||||
gpt_4_0613 = Model(
|
||||
name="openai:gpt-4-0613",
|
||||
base_provider="openai",
|
||||
best_provider=Vercel,
|
||||
)
|
||||
name = 'openai:gpt-4-0613',
|
||||
base_provider = 'openai',
|
||||
best_provider = Vercel)
|
||||
|
||||
text_ada_001 = Model(
|
||||
name="openai:text-ada-001",
|
||||
base_provider="openai",
|
||||
best_provider=Vercel,
|
||||
)
|
||||
name = 'openai:text-ada-001',
|
||||
base_provider = 'openai',
|
||||
best_provider = Vercel)
|
||||
|
||||
text_babbage_001 = Model(
|
||||
name="openai:text-babbage-001",
|
||||
base_provider="openai",
|
||||
best_provider=Vercel,
|
||||
)
|
||||
name = 'openai:text-babbage-001',
|
||||
base_provider = 'openai',
|
||||
best_provider = Vercel)
|
||||
|
||||
text_curie_001 = Model(
|
||||
name="openai:text-curie-001",
|
||||
base_provider="openai",
|
||||
best_provider=Vercel,
|
||||
)
|
||||
name = 'openai:text-curie-001',
|
||||
base_provider = 'openai',
|
||||
best_provider = Vercel)
|
||||
|
||||
text_davinci_002 = Model(
|
||||
name="openai:text-davinci-002",
|
||||
base_provider="openai",
|
||||
best_provider=Vercel,
|
||||
)
|
||||
name = 'openai:text-davinci-002',
|
||||
base_provider = 'openai',
|
||||
best_provider = Vercel)
|
||||
|
||||
text_davinci_003 = Model(
|
||||
name="openai:text-davinci-003",
|
||||
base_provider="openai",
|
||||
best_provider=Vercel,
|
||||
)
|
||||
name = 'openai:text-davinci-003',
|
||||
base_provider = 'openai',
|
||||
best_provider = Vercel)
|
||||
|
||||
llama13b_v2_chat = Model(
|
||||
name="replicate:a16z-infra/llama13b-v2-chat",
|
||||
base_provider="replicate",
|
||||
best_provider=Vercel,
|
||||
)
|
||||
name = 'replicate:a16z-infra/llama13b-v2-chat',
|
||||
base_provider = 'replicate',
|
||||
best_provider = Vercel)
|
||||
|
||||
llama7b_v2_chat = Model(
|
||||
name="replicate:a16z-infra/llama7b-v2-chat",
|
||||
base_provider="replicate",
|
||||
best_provider=Vercel,
|
||||
)
|
||||
name = 'replicate:a16z-infra/llama7b-v2-chat',
|
||||
base_provider = 'replicate',
|
||||
best_provider = Vercel)
|
||||
|
||||
|
||||
class ModelUtils:
|
||||
convert: dict[str, Model] = {
|
||||
# GPT-3.5 / GPT-4
|
||||
"gpt-3.5-turbo": gpt_35_turbo,
|
||||
"gpt-4": gpt_4,
|
||||
'gpt-3.5-turbo' : gpt_35_turbo,
|
||||
'gpt-4' : gpt_4,
|
||||
|
||||
# Bard
|
||||
"palm2": palm,
|
||||
"palm": palm,
|
||||
"google": palm,
|
||||
"google-bard": palm,
|
||||
"google-palm": palm,
|
||||
"bard": palm,
|
||||
'palm2' : palm,
|
||||
'palm' : palm,
|
||||
'google' : palm,
|
||||
'google-bard' : palm,
|
||||
'google-palm' : palm,
|
||||
'bard' : palm,
|
||||
|
||||
# H2o
|
||||
"falcon-40b": falcon_40b,
|
||||
"falcon-7b": falcon_7b,
|
||||
"llama-13b": llama_13b,
|
||||
'falcon-40b' : falcon_40b,
|
||||
'falcon-7b' : falcon_7b,
|
||||
'llama-13b' : llama_13b,
|
||||
|
||||
# Vercel
|
||||
"claude-instant-v1": claude_instant_v1,
|
||||
"claude-v1": claude_v1,
|
||||
"claude-v2": claude_v2,
|
||||
"command-light-nightly": command_light_nightly,
|
||||
"command-nightly": command_nightly,
|
||||
"gpt-neox-20b": gpt_neox_20b,
|
||||
"oasst-sft-1-pythia-12b": oasst_sft_1_pythia_12b,
|
||||
"oasst-sft-4-pythia-12b-epoch-3.5": oasst_sft_4_pythia_12b_epoch_35,
|
||||
"santacoder": santacoder,
|
||||
"bloom": bloom,
|
||||
"flan-t5-xxl": flan_t5_xxl,
|
||||
"code-davinci-002": code_davinci_002,
|
||||
"gpt-3.5-turbo-16k": gpt_35_turbo_16k,
|
||||
"gpt-3.5-turbo-16k-0613": gpt_35_turbo_16k_0613,
|
||||
"gpt-4-0613": gpt_4_0613,
|
||||
"text-ada-001": text_ada_001,
|
||||
"text-babbage-001": text_babbage_001,
|
||||
"text-curie-001": text_curie_001,
|
||||
"text-davinci-002": text_davinci_002,
|
||||
"text-davinci-003": text_davinci_003,
|
||||
"llama13b-v2-chat": llama13b_v2_chat,
|
||||
"llama7b-v2-chat": llama7b_v2_chat,
|
||||
'claude-instant-v1' : claude_instant_v1,
|
||||
'claude-v1' : claude_v1,
|
||||
'claude-v2' : claude_v2,
|
||||
'command-nightly' : command_nightly,
|
||||
'gpt-neox-20b' : gpt_neox_20b,
|
||||
'santacoder' : santacoder,
|
||||
'bloom' : bloom,
|
||||
'flan-t5-xxl' : flan_t5_xxl,
|
||||
'code-davinci-002' : code_davinci_002,
|
||||
'gpt-3.5-turbo-16k' : gpt_35_turbo_16k,
|
||||
'gpt-4-0613' : gpt_4_0613,
|
||||
'text-ada-001' : text_ada_001,
|
||||
'text-babbage-001' : text_babbage_001,
|
||||
'text-curie-001' : text_curie_001,
|
||||
'text-davinci-002' : text_davinci_002,
|
||||
'text-davinci-003' : text_davinci_003,
|
||||
'llama13b-v2-chat' : llama13b_v2_chat,
|
||||
'llama7b-v2-chat' : llama7b_v2_chat,
|
||||
|
||||
'oasst-sft-1-pythia-12b' : oasst_sft_1_pythia_12b,
|
||||
'oasst-sft-4-pythia-12b-epoch-3.5' : oasst_sft_4_pythia_12b_epoch_35,
|
||||
'command-light-nightly' : command_light_nightly,
|
||||
'gpt-3.5-turbo-16k-0613' : gpt_35_turbo_16k_0613,
|
||||
}
|
||||
@@ -1,15 +1,14 @@
|
||||
from typing import Any, AsyncGenerator, Generator, NewType, Tuple, TypedDict, Union
|
||||
|
||||
SHA256 = NewType("sha_256_hash", str)
|
||||
SHA256 = NewType('sha_256_hash', str)
|
||||
CreateResult = Generator[str, None, None]
|
||||
|
||||
|
||||
__all__ = [
|
||||
"Any",
|
||||
"AsyncGenerator",
|
||||
"Generator",
|
||||
"Tuple",
|
||||
"TypedDict",
|
||||
"SHA256",
|
||||
"CreateResult",
|
||||
'Any',
|
||||
'AsyncGenerator',
|
||||
'Generator',
|
||||
'Tuple',
|
||||
'TypedDict',
|
||||
'SHA256',
|
||||
'CreateResult',
|
||||
]
|
||||
Reference in New Issue
Block a user