返回提交历史
Added
g4f/Provider/GeminiProChat.py
+56
-0
Modified
g4f/Provider/__init__.py
+2
-1
Modified
g4f/models.py
+1
-5
XFEstudio/gpt4free
Add GeminiProChat Provider (#1419)
* Add GeminiProChat Provider
eee038a7
代码差异
3 个文件
+59
-6
@@ -0,0 +1,56 @@
1
from __future__ import annotations
2
3
import time
4
from hashlib import sha256
5
from aiohttp import ClientSession
6
7
from ..typing import AsyncResult, Messages
8
from .base_provider import AsyncGeneratorProvider
9
10
11
class GeminiProChat(AsyncGeneratorProvider):
12
url = "https://geminiprochat.com"
13
working = True
14
supports_gpt_35_turbo = True
15
16
@classmethod
17
async def create_async_generator(
18
cls,
19
model: str,
20
messages: Messages,
21
proxy: str = None,
22
**kwargs
23
) -> AsyncResult:
24
headers = {
25
"User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/119.0",
26
"Accept": "*/*",
27
"Accept-Language": "de,en-US;q=0.7,en;q=0.3",
28
"Accept-Encoding": "gzip, deflate, br",
29
"Content-Type": "text/plain;charset=UTF-8",
30
"Referer": "https://geminiprochat.com/",
31
"Origin": "https://geminiprochat.com",
32
"Sec-Fetch-Dest": "empty",
33
"Sec-Fetch-Mode": "cors",
34
"Sec-Fetch-Site": "same-origin",
35
"Connection": "keep-alive",
36
"TE": "trailers",
37
}
38
async with ClientSession(headers=headers) as session:
39
timestamp = int(time.time() * 1e3)
40
data = {
41
"messages":[{
42
"role": "model" if message["role"] == "assistant" else "user",
43
"parts": [{"text": message["content"]}]
44
} for message in messages],
45
"time": timestamp,
46
"pass": None,
47
"sign": generate_signature(timestamp, messages[-1]["content"]),
48
}
49
async with session.post(f"{cls.url}/api/generate", json=data, proxy=proxy) as response:
50
response.raise_for_status()
51
async for chunk in response.content.iter_any():
52
yield chunk.decode()
53
54
def generate_signature(time: int, text: str):
55
message = f'{time}:{text}:9C4680FB-A4E1-6BC7-052A-7F68F9F5AD1F';
56
return sha256(message.encode()).hexdigest()
@@ -31,6 +31,8 @@ from .Chatxyz import Chatxyz
31
31
from .DeepInfra import DeepInfra
32
32
from .FakeGpt import FakeGpt
33
33
from .FreeGpt import FreeGpt
34
from .GeekGpt import GeekGpt
35
from .GeminiProChat import GeminiProChat
34
36
from .Gpt6 import Gpt6
35
37
from .GPTalk import GPTalk
36
38
from .GptChatly import GptChatly
@@ -53,7 +55,6 @@ from .Vercel import Vercel
53
55
from .Ylokh import Ylokh
54
56
from .You import You
55
57
from .Yqcloud import Yqcloud
56
from .GeekGpt import GeekGpt
57
58
from .Bestim import Bestim
58
59
59
60
import sys
@@ -4,7 +4,6 @@ from .Provider import RetryProvider, ProviderType
4
4
from .Provider import (
5
5
Chatgpt4Online,
6
6
ChatgptDemoAi,
7
ChatAnywhere,
8
7
ChatgptNext,
9
8
HuggingChat,
10
9
ChatgptDemo,
@@ -48,8 +47,7 @@ default = Model(
48
47
Bing,
49
48
ChatgptAi, GptGo, GeekGpt,
50
49
You,
51
Chatgpt4Online,
52
ChatAnywhere
50
Chatgpt4Online
53
51
])
54
52
)
55
53
@@ -62,7 +60,6 @@ gpt_35_long = Model(
62
60
GeekGpt, FakeGpt,
63
61
Berlin, Koala,
64
62
Chatgpt4Online,
65
ChatAnywhere,
66
63
ChatgptDemoAi,
67
64
OnlineGpt,
68
65
ChatgptNext,
@@ -79,7 +76,6 @@ gpt_35_turbo = Model(
79
76
GptGo, You,
80
77
GptForLove, ChatBase,
81
78
Chatgpt4Online,
82
ChatAnywhere,
83
79
])
84
80
)
85
81