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

XFEstudio/gpt4free

Adding a new provider Free2GPT

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

代码差异

3 个文件 +82 -2
Added g4f/Provider/Free2GPT.py +77 -0
@@ -0,0 +1,77 @@
1 from __future__ import annotations
2
3 import time
4 from hashlib import sha256
5
6 from aiohttp import BaseConnector, ClientSession
7
8 from ..errors import RateLimitError
9 from ..requests import raise_for_status
10 from ..requests.aiohttp import get_connector
11 from ..typing import AsyncResult, Messages
12 from .base_provider import AsyncGeneratorProvider, ProviderModelMixin
13
14
15 class Free2GPT(AsyncGeneratorProvider, ProviderModelMixin):
16 url = "https://chat10.free2gpt.xyz"
17 working = True
18 supports_message_history = True
19 default_model = 'llama-3.1-70b'
20
21 @classmethod
22 async def create_async_generator(
23 cls,
24 model: str,
25 messages: Messages,
26 proxy: str = None,
27 connector: BaseConnector = None,
28 **kwargs,
29 ) -> AsyncResult:
30 headers = {
31 "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36",
32 "Accept": "*/*",
33 "Accept-Language": "en-US,en;q=0.9",
34 "Accept-Encoding": "gzip, deflate, br",
35 "Content-Type": "text/plain;charset=UTF-8",
36 "Referer": f"{cls.url}/",
37 "Origin": cls.url,
38 "Sec-Fetch-Dest": "empty",
39 "Sec-Fetch-Mode": "cors",
40 "Sec-Fetch-Site": "same-origin",
41 "Sec-Ch-Ua": '"Chromium";v="127", "Not)A;Brand";v="99"',
42 "Sec-Ch-Ua-Mobile": "?0",
43 "Sec-Ch-Ua-Platform": '"Linux"',
44 "Cache-Control": "no-cache",
45 "Pragma": "no-cache",
46 "Priority": "u=1, i",
47 }
48 async with ClientSession(
49 connector=get_connector(connector, proxy), headers=headers
50 ) as session:
51 timestamp = int(time.time() * 1e3)
52 system_message = {
53 "role": "system",
54 "content": ""
55 }
56 data = {
57 "messages": [system_message] + messages,
58 "time": timestamp,
59 "pass": None,
60 "sign": generate_signature(timestamp, messages[-1]["content"]),
61 }
62 async with session.post(
63 f"{cls.url}/api/generate", json=data, proxy=proxy
64 ) as response:
65 if response.status == 500:
66 if "Quota exceeded" in await response.text():
67 raise RateLimitError(
68 f"Response {response.status}: Rate limit reached"
69 )
70 await raise_for_status(response)
71 async for chunk in response.content.iter_any():
72 yield chunk.decode(errors="ignore")
73
74
75 def generate_signature(time: int, text: str, secret: str = ""):
76 message = f"{time}:{text}:{secret}"
77 return sha256(message.encode()).hexdigest()
Modified g4f/Provider/__init__.py +2 -1
@@ -16,7 +16,7 @@ from .AiChats import AiChats
16 16 from .Aura import Aura
17 17 from .Bing import Bing
18 18 from .BingCreateImages import BingCreateImages
19 from .Binjie import Binjie
19 from .Binjie import Binjie
20 20 from .Bixin123 import Bixin123
21 21 from .Blackbox import Blackbox
22 22 from .ChatGot import ChatGot
@@ -29,6 +29,7 @@ from .DeepInfra import DeepInfra
29 29 from .DeepInfraImage import DeepInfraImage
30 30 from .FlowGpt import FlowGpt
31 31 from .FluxAirforce import FluxAirforce
32 from .Free2GPT import Free2GPT
32 33 from .FreeChatgpt import FreeChatgpt
33 34 from .FreeGpt import FreeGpt
34 35 from .FreeNetfly import FreeNetfly
Modified g4f/models.py +3 -1
@@ -19,6 +19,7 @@ from .Provider import (
19 19 DeepInfra,
20 20 DeepInfraImage,
21 21 FluxAirforce,
22 Free2GPT,
22 23 FreeChatgpt,
23 24 FreeGpt,
24 25 FreeNetfly,
@@ -86,6 +87,7 @@ default = Model(
86 87 Blackbox,
87 88 Bixin123,
88 89 Binjie,
90 Free2GPT,
89 91 ])
90 92 )
91 93
@@ -182,7 +184,7 @@ llama_3_1_8b = Model(
182 184 llama_3_1_70b = Model(
183 185 name = "llama-3.1-70b",
184 186 base_provider = "Meta",
185 best_provider = IterListProvider([DDG, HuggingChat, FreeGpt, Blackbox, TeachAnything, HuggingFace])
187 best_provider = IterListProvider([DDG, HuggingChat, FreeGpt, Blackbox, TeachAnything, Free2GPT, HuggingFace])
186 188 )
187 189
188 190 llama_3_1_405b = Model(