返回提交历史
Added
g4f/Provider/TeachAnything.py
+76
-0
Modified
g4f/Provider/__init__.py
+3
-3
Modified
g4f/models.py
+5
-3
XFEstudio/gpt4free
Update models.py: Refine provider list and model support
3bece242
代码差异
3 个文件
+84
-6
@@ -0,0 +1,76 @@
1
from __future__ import annotations
2
3
from typing import Any, Dict
4
5
from aiohttp import ClientSession, ClientTimeout
6
7
from ..typing import AsyncResult, Messages
8
from .base_provider import AsyncGeneratorProvider, ProviderModelMixin
9
from .helper import format_prompt
10
11
12
class TeachAnything(AsyncGeneratorProvider, ProviderModelMixin):
13
url = "https://www.teach-anything.com"
14
api_endpoint = "/api/generate"
15
working = True
16
default_model = "llama-3.1-70b"
17
18
@classmethod
19
async def create_async_generator(
20
cls,
21
model: str,
22
messages: Messages,
23
proxy: str | None = None,
24
**kwargs: Any
25
) -> AsyncResult:
26
headers = cls._get_headers()
27
28
async with ClientSession(headers=headers) as session:
29
prompt = format_prompt(messages)
30
data = {"prompt": prompt}
31
32
timeout = ClientTimeout(total=60)
33
34
async with session.post(
35
f"{cls.url}{cls.api_endpoint}",
36
json=data,
37
proxy=proxy,
38
timeout=timeout
39
) as response:
40
response.raise_for_status()
41
buffer = b""
42
async for chunk in response.content.iter_any():
43
buffer += chunk
44
try:
45
decoded = buffer.decode('utf-8')
46
yield decoded
47
buffer = b""
48
except UnicodeDecodeError:
49
# If we can't decode, we'll wait for more data
50
continue
51
52
# Handle any remaining data in the buffer
53
if buffer:
54
try:
55
yield buffer.decode('utf-8', errors='replace')
56
except Exception as e:
57
print(f"Error decoding final buffer: {e}")
58
59
@staticmethod
60
def _get_headers() -> Dict[str, str]:
61
return {
62
"accept": "*/*",
63
"accept-language": "en-US,en;q=0.9",
64
"content-type": "application/json",
65
"dnt": "1",
66
"origin": "https://www.teach-anything.com",
67
"priority": "u=1, i",
68
"referer": "https://www.teach-anything.com/",
69
"sec-ch-ua": '"Not/A)Brand";v="8", "Chromium";v="126"',
70
"sec-ch-ua-mobile": "?0",
71
"sec-ch-ua-platform": '"Linux"',
72
"sec-fetch-dest": "empty",
73
"sec-fetch-mode": "cors",
74
"sec-fetch-site": "same-origin",
75
"user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"
76
}
@@ -17,8 +17,8 @@ from .Bing import Bing
17
17
from .BingCreateImages import BingCreateImages
18
18
from .Blackbox import Blackbox
19
19
from .ChatGot import ChatGot
20
from .Chatgpt4o import Chatgpt4o
21
20
from .Chatgpt4Online import Chatgpt4Online
21
from .Chatgpt4o import Chatgpt4o
22
22
from .ChatgptFree import ChatgptFree
23
23
from .DDG import DDG
24
24
from .DeepInfra import DeepInfra
@@ -33,7 +33,6 @@ from .GigaChat import GigaChat
33
33
from .GptTalkRu import GptTalkRu
34
34
from .HuggingChat import HuggingChat
35
35
from .HuggingFace import HuggingFace
36
from .HuggingFace import HuggingFace
37
36
from .Koala import Koala
38
37
from .Liaobots import Liaobots
39
38
from .LiteIcoding import LiteIcoding
@@ -47,11 +46,12 @@ from .Ollama import Ollama
47
46
from .PerplexityLabs import PerplexityLabs
48
47
from .Pi import Pi
49
48
from .Pizzagpt import Pizzagpt
50
from .Upstage import Upstage
51
49
from .Reka import Reka
52
50
from .Replicate import Replicate
53
51
from .ReplicateHome import ReplicateHome
54
52
from .Rocks import Rocks
53
from .TeachAnything import TeachAnything
54
from .Upstage import Upstage
55
55
from .Vercel import Vercel
56
56
from .WhiteRabbitNeo import WhiteRabbitNeo
57
57
from .You import You
@@ -4,12 +4,13 @@ from dataclasses import dataclass
4
4
5
5
from .Provider import IterListProvider, ProviderType
6
6
from .Provider import (
7
AiChatOnline,
7
8
Allyfy,
8
9
Bing,
9
10
Blackbox,
10
11
ChatGot,
11
Chatgpt4o,
12
12
Chatgpt4Online,
13
Chatgpt4o,
13
14
ChatgptFree,
14
15
DDG,
15
16
DeepInfra,
@@ -35,6 +36,7 @@ from .Provider import (
35
36
Reka,
36
37
Replicate,
37
38
ReplicateHome,
39
TeachAnything,
38
40
Upstage,
39
41
You,
40
42
)
@@ -106,7 +108,7 @@ gpt_4o_mini = Model(
106
108
name = 'gpt-4o-mini',
107
109
base_provider = 'openai',
108
110
best_provider = IterListProvider([
109
DDG, Liaobots, You, FreeNetfly, MagickPenAsk, MagickPenChat, Pizzagpt, ChatgptFree, OpenaiChat, Koala,
111
DDG, Liaobots, You, FreeNetfly, MagickPenAsk, MagickPenChat, Pizzagpt, ChatgptFree, AiChatOnline, OpenaiChat, Koala,
110
112
])
111
113
)
112
114
@@ -163,7 +165,7 @@ llama_3_1_8b = Model(
163
165
llama_3_1_70b = Model(
164
166
name = "llama-3.1-70b",
165
167
base_provider = "meta",
166
best_provider = IterListProvider([DDG, HuggingChat, FreeGpt, Blackbox, HuggingFace])
168
best_provider = IterListProvider([DDG, HuggingChat, FreeGpt, Blackbox, TeachAnything, HuggingFace])
167
169
)
168
170
169
171
llama_3_1_405b = Model(