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

XFEstudio/gpt4free

Added new providers TeachAnything MagickPenAsk MagickPenChat

93fa8960
kqlio67 <166700875+kqlio67@users.noreply.github.com>
提交于

代码差异

5 个文件 +171 -4
Added g4f/Provider/MagickPenAsk.py +50 -0
@@ -0,0 +1,50 @@
1 from __future__ import annotations
2
3 from aiohttp import ClientSession
4
5 from ..typing import AsyncResult, Messages
6 from .base_provider import AsyncGeneratorProvider, ProviderModelMixin
7 from .helper import format_prompt
8
9
10 class MagickPenAsk(AsyncGeneratorProvider, ProviderModelMixin):
11 url = "https://api.magickpen.com"
12 api_endpoint = "/ask"
13 working = True
14 supports_gpt_4 = True
15 default_model = "gpt-4o"
16
17 @classmethod
18 async def create_async_generator(
19 cls,
20 model: str,
21 messages: Messages,
22 proxy: str = None,
23 **kwargs
24 ) -> AsyncResult:
25 headers = {
26 "accept": "application/json, text/plain, */*",
27 "accept-language": "en-US,en;q=0.9",
28 "content-type": "application/json",
29 "dnt": "1",
30 "origin": "https://magickpen.com",
31 "priority": "u=1, i",
32 "referer": "https://magickpen.com/",
33 "sec-ch-ua": '"Not/A)Brand";v="8", "Chromium";v="126"',
34 "sec-ch-ua-mobile": "?0",
35 "sec-ch-ua-platform": '"Linux"',
36 "sec-fetch-dest": "empty",
37 "sec-fetch-mode": "cors",
38 "sec-fetch-site": "same-site",
39 "user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"
40 }
41 async with ClientSession(headers=headers) as session:
42 data = {
43 "query": format_prompt(messages),
44 "plan": "Pay as you go"
45 }
46 async with session.post(f"{cls.url}{cls.api_endpoint}", json=data, proxy=proxy) as response:
47 response.raise_for_status()
48 async for chunk in response.content:
49 if chunk:
50 yield chunk.decode()
Added g4f/Provider/MagickPenChat.py +50 -0
@@ -0,0 +1,50 @@
1 from __future__ import annotations
2
3 from aiohttp import ClientSession
4
5 from ..typing import AsyncResult, Messages
6 from .base_provider import AsyncGeneratorProvider, ProviderModelMixin
7 from .helper import format_prompt
8
9
10 class MagickPenChat(AsyncGeneratorProvider, ProviderModelMixin):
11 url = "https://api.magickpen.com"
12 api_endpoint = "/chat/free"
13 working = True
14 supports_gpt_4 = True
15 default_model = "gpt-4o-mini"
16
17 @classmethod
18 async def create_async_generator(
19 cls,
20 model: str,
21 messages: Messages,
22 proxy: str = None,
23 **kwargs
24 ) -> AsyncResult:
25 headers = {
26 "accept": "application/json, text/plain, */*",
27 "accept-language": "en-US,en;q=0.9",
28 "access-control-allow-origin": "*",
29 "content-type": "application/json",
30 "dnt": "1",
31 "origin": "https://magickpen.com",
32 "priority": "u=1, i",
33 "referer": "https://magickpen.com/",
34 "sec-ch-ua": '"Not/A)Brand";v="8", "Chromium";v="126"',
35 "sec-ch-ua-mobile": "?0",
36 "sec-ch-ua-platform": '"Linux"',
37 "sec-fetch-dest": "empty",
38 "sec-fetch-mode": "cors",
39 "sec-fetch-site": "same-site",
40 "user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"
41 }
42 async with ClientSession(headers=headers) as session:
43 data = {
44 "history": [{"role": "user", "content": format_prompt(messages)}]
45 }
46 async with session.post(f"{cls.url}{cls.api_endpoint}", json=data, proxy=proxy) as response:
47 response.raise_for_status()
48 async for chunk in response.content:
49 if chunk:
50 yield chunk.decode()
Added g4f/Provider/TeachAnything.py +62 -0
@@ -0,0 +1,62 @@
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-70b-instruct"
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 async for chunk in response.content.iter_any():
42 if chunk:
43 yield chunk.decode()
44
45 @staticmethod
46 def _get_headers() -> Dict[str, str]:
47 return {
48 "accept": "*/*",
49 "accept-language": "en-US,en;q=0.9",
50 "content-type": "application/json",
51 "dnt": "1",
52 "origin": "https://www.teach-anything.com",
53 "priority": "u=1, i",
54 "referer": "https://www.teach-anything.com/",
55 "sec-ch-ua": '"Not/A)Brand";v="8", "Chromium";v="126"',
56 "sec-ch-ua-mobile": "?0",
57 "sec-ch-ua-platform": '"Linux"',
58 "sec-fetch-dest": "empty",
59 "sec-fetch-mode": "cors",
60 "sec-fetch-site": "same-origin",
61 "user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"
62 }
Modified g4f/Provider/__init__.py +3 -0
@@ -40,6 +40,8 @@ from .Liaobots import Liaobots
40 40 from .LiteIcoding import LiteIcoding
41 41 from .Llama import Llama
42 42 from .Local import Local
43 from .MagickPenAsk import MagickPenAsk
44 from .MagickPenChat import MagickPenChat
43 45 from .Marsyoo import Marsyoo
44 46 from .MetaAI import MetaAI
45 47 from .MetaAIAccount import MetaAIAccount
@@ -50,6 +52,7 @@ from .Pizzagpt import Pizzagpt
50 52 from .Reka import Reka
51 53 from .Replicate import Replicate
52 54 from .ReplicateHome import ReplicateHome
55 from .TeachAnything import TeachAnything
53 56 from .Vercel import Vercel
54 57 from .WhiteRabbitNeo import WhiteRabbitNeo
55 58 from .You import You
Modified g4f/models.py +6 -4
@@ -27,6 +27,8 @@ from .Provider import (
27 27 Koala,
28 28 Liaobots,
29 29 LiteIcoding,
30 MagickPenAsk,
31 MagickPenChat,
30 32 Marsyoo,
31 33 MetaAI,
32 34 OpenaiChat,
@@ -36,6 +38,7 @@ from .Provider import (
36 38 Reka,
37 39 Replicate,
38 40 ReplicateHome,
41 TeachAnything,
39 42 You,
40 43 )
41 44
@@ -109,7 +112,6 @@ gpt_35_turbo = Model(
109 112 Koala,
110 113 ChatgptFree,
111 114 FreeChatgpt,
112 DDG,
113 115 AI365VIP,
114 116 Pizzagpt,
115 117 Allyfy,
@@ -136,7 +138,7 @@ gpt_4o = Model(
136 138 name = 'gpt-4o',
137 139 base_provider = 'openai',
138 140 best_provider = IterListProvider([
139 You, Liaobots, Chatgpt4o, AI365VIP, OpenaiChat, Marsyoo, LiteIcoding
141 You, Liaobots, Chatgpt4o, AI365VIP, OpenaiChat, Marsyoo, LiteIcoding, MagickPenAsk,
140 142 ])
141 143 )
142 144
@@ -144,7 +146,7 @@ gpt_4o_mini = Model(
144 146 name = 'gpt-4o-mini',
145 147 base_provider = 'openai',
146 148 best_provider = IterListProvider([
147 Liaobots, OpenaiChat, You, FreeNetfly
149 DDG, Liaobots, OpenaiChat, You, FreeNetfly, MagickPenChat,
148 150 ])
149 151 )
150 152
@@ -179,7 +181,7 @@ llama_3_70b_instruct = Model(
179 181 llama_3_70b_instruct = Model(
180 182 name = "meta/meta-llama-3-70b-instruct",
181 183 base_provider = "meta",
182 best_provider = IterListProvider([ReplicateHome])
184 best_provider = IterListProvider([ReplicateHome, TeachAnything])
183 185 )
184 186
185 187 llama_3_70b_chat_hf = Model(