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

XFEstudio/gpt4free

Returned provider 'g4f/Provider/ChatGot.py' updated documentation 'docs/providers-and-models.md'

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

代码差异

3 个文件 +78 -0
Modified docs/providers-and-models.md +2 -0
@@ -1,4 +1,5 @@
1 1
2
2 3 ## 🚀 Providers and Models
3 4 - [Providers](#Providers)
4 5 - [Models](#models)
@@ -20,6 +21,7 @@
20 21 |[chat18.aichatos8.com](https://chat18.aichatos8.com)|`g4f.Provider.Binjie`|`gpt-4`|❌|❌|✔|![Active](https://img.shields.io/badge/Active-brightgreen)|❌|
21 22 |[chat.bixin123.com](https://chat.bixin123.com)|`g4f.Provider.Bixin123`|`gpt-3.5-turbo, gpt-4-turbo, qwen-turbo`|❌|❌||![Inactive](https://img.shields.io/badge/Inactive-red)||
22 23 |[blackbox.ai](https://www.blackbox.ai)|`g4f.Provider.Blackbox`|`blackbox, gemini-flash, llama-3.1-8b, llama-3.1-70b, llama-3.1-405b, gpt-4o, gemini-pro, claude-3.5-sonnet`|`flux`|✔|✔|![Active](https://img.shields.io/badge/Active-brightgreen)|❌|
24 |[chatgot.one](https://www.chatgot.one/)|`g4f.Provider.ChatGot`|`gemini-pro`|❌|❌|✔|![Active](https://img.shields.io/badge/Active-brightgreen)|❌|
23 25 |[chatgpt.com](https://chatgpt.com)|`g4f.Provider.ChatGpt`|`?`|`?`|`?`|?|![Unknown](https://img.shields.io/badge/Unknown-grey) |❌|
24 26 |[chatgpt.es](https://chatgpt.es)|`g4f.Provider.ChatGptEs`|`gpt-4o, gpt-4o-mini`|❌|❌|✔|![Active](https://img.shields.io/badge/Active-brightgreen)|❌|
25 27 |[chatgpt4online.org](https://chatgpt4online.org)|`g4f.Provider.Chatgpt4Online`|`gpt-4`|❌|❌|✔|![Active](https://img.shields.io/badge/Active-brightgreen)|❌|
Added g4f/Provider/ChatGot.py +75 -0
@@ -0,0 +1,75 @@
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 ChatGot(AsyncGeneratorProvider, ProviderModelMixin):
16 url = "https://www.chatgot.one/"
17 working = True
18 supports_message_history = True
19 default_model = 'gemini-pro'
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 (Windows NT 10.0; Win64; x64; rv:122.0) Gecko/20100101 Firefox/122.0",
32 "Accept": "*/*",
33 "Accept-Language": "en-US,en;q=0.5",
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 "Connection": "keep-alive",
42 "TE": "trailers",
43 }
44 async with ClientSession(
45 connector=get_connector(connector, proxy), headers=headers
46 ) as session:
47 timestamp = int(time.time() * 1e3)
48 data = {
49 "messages": [
50 {
51 "role": "model" if message["role"] == "assistant" else "user",
52 "parts": [{"text": message["content"]}],
53 }
54 for message in messages
55 ],
56 "time": timestamp,
57 "pass": None,
58 "sign": generate_signature(timestamp, messages[-1]["content"]),
59 }
60 async with session.post(
61 f"{cls.url}/api/generate", json=data, proxy=proxy
62 ) as response:
63 if response.status == 500:
64 if "Quota exceeded" in await response.text():
65 raise RateLimitError(
66 f"Response {response.status}: Rate limit reached"
67 )
68 await raise_for_status(response)
69 async for chunk in response.content.iter_any():
70 yield chunk.decode(errors="ignore")
71
72
73 def generate_signature(time: int, text: str, secret: str = ""):
74 message = f"{time}:{text}:{secret}"
75 return sha256(message.encode()).hexdigest()
Modified g4f/Provider/__init__.py +1 -0
@@ -19,6 +19,7 @@ from .BingCreateImages import BingCreateImages
19 19 from .Binjie import Binjie
20 20 from .Bixin123 import Bixin123
21 21 from .Blackbox import Blackbox
22 from .ChatGot import ChatGot
22 23 from .ChatGpt import ChatGpt
23 24 from .Chatgpt4Online import Chatgpt4Online
24 25 from .Chatgpt4o import Chatgpt4o