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

XFEstudio/gpt4free

Delete g4f/Provider/ChatgptX.py

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

代码差异

1 个文件 +0 -106
Deleted g4f/Provider/ChatgptX.py +0 -106
@@ -1,106 +0,0 @@
1 from __future__ import annotations
2
3 import re
4 import json
5
6 from aiohttp import ClientSession
7 from ..typing import AsyncResult, Messages
8 from .base_provider import AsyncGeneratorProvider
9 from .helper import format_prompt
10 from ..errors import RateLimitError
11
12 class ChatgptX(AsyncGeneratorProvider):
13 url = "https://chatgptx.de"
14 supports_gpt_35_turbo = True
15 working = True
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-language': 'de-DE,de;q=0.9,en-DE;q=0.8,en;q=0.7,en-US',
27 'sec-ch-ua': '"Google Chrome";v="117", "Not;A=Brand";v="8", "Chromium";v="117"',
28 'sec-ch-ua-mobile': '?0',
29 'sec-ch-ua-platform': 'Linux',
30 'sec-fetch-dest': 'empty',
31 'sec-fetch-mode': 'cors',
32 'sec-fetch-site': 'same-origin',
33 'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36',
34 }
35 async with ClientSession(headers=headers) as session:
36 async with session.get(f"{cls.url}/", proxy=proxy) as response:
37 response = await response.text()
38
39 result = re.search(
40 r'<meta name="csrf-token" content="(.*?)"', response
41 )
42 if result:
43 csrf_token = result.group(1)
44
45 result = re.search(r"openconversions\('(.*?)'\)", response)
46 if result:
47 chat_id = result.group(1)
48
49 result = re.search(
50 r'<input type="hidden" id="user_id" value="(.*?)"', response
51 )
52 if result:
53 user_id = result.group(1)
54
55 if not csrf_token or not chat_id or not user_id:
56 raise RuntimeError("Missing csrf_token, chat_id or user_id")
57
58 data = {
59 '_token': csrf_token,
60 'user_id': user_id,
61 'chats_id': chat_id,
62 'prompt': format_prompt(messages),
63 'current_model': "gpt3"
64 }
65 headers = {
66 'authority': 'chatgptx.de',
67 'accept': 'application/json, text/javascript, */*; q=0.01',
68 'origin': cls.url,
69 'referer': f'{cls.url}/',
70 'x-csrf-token': csrf_token,
71 'x-requested-with': 'XMLHttpRequest'
72 }
73 async with session.post(f'{cls.url}/sendchat', data=data, headers=headers, proxy=proxy) as response:
74 response.raise_for_status()
75 chat = await response.json()
76 if "messages" in chat and "Anfragelimit" in chat["messages"]:
77 raise RateLimitError("Rate limit reached")
78 if "response" not in chat or not chat["response"]:
79 raise RuntimeError(f'Response: {chat}')
80 headers = {
81 'authority': 'chatgptx.de',
82 'accept': 'text/event-stream',
83 'referer': f'{cls.url}/',
84 'x-csrf-token': csrf_token,
85 'x-requested-with': 'XMLHttpRequest'
86 }
87 data = {
88 "user_id": user_id,
89 "chats_id": chat_id,
90 "current_model": "gpt3",
91 "conversions_id": chat["conversions_id"],
92 "ass_conversions_id": chat["ass_conversions_id"],
93 }
94 async with session.get(f'{cls.url}/chats_stream', params=data, headers=headers, proxy=proxy) as response:
95 response.raise_for_status()
96 async for line in response.content:
97 if line.startswith(b"data: "):
98 row = line[6:-1]
99 if row == b"[DONE]":
100 break
101 try:
102 content = json.loads(row)["choices"][0]["delta"].get("content")
103 except:
104 raise RuntimeError(f"Broken line: {line.decode()}")
105 if content:
106 yield content