XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet
公开
关注 0 Fork 0 Star 1
返回提交历史

XFEstudio/gpt4free

Update models.py: Refine provider list and model support

3bece242
kqlio67 <kqlio67@users.noreply.github.com>
提交于

代码差异

3 个文件 +84 -6
Added g4f/Provider/TeachAnything.py +76 -0
@@ -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 }
Modified g4f/Provider/__init__.py +3 -3
@@ -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
Modified g4f/models.py +5 -3
@@ -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(