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

XFEstudio/gpt4free

Add GeminiProChat Provider (#1419)

* Add GeminiProChat Provider

eee038a7
H Lohaus <hlohaus@users.noreply.github.com>
提交于

代码差异

3 个文件 +59 -6
Added g4f/Provider/GeminiProChat.py +56 -0
@@ -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()
Modified g4f/Provider/__init__.py +2 -1
@@ -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
Modified g4f/models.py +1 -5
@@ -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