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

XFEstudio/gpt4free

update g4f/models.py g4f/Provider/Ai4Chat.py g4f/Provider/Chatgpt4Online.py

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

代码差异

3 个文件 +50 -29
Modified g4f/Provider/Ai4Chat.py +45 -26
@@ -1,7 +1,9 @@
1 1 from __future__ import annotations
2 2
3 from aiohttp import ClientSession
3 import json
4 4 import re
5 import logging
6 from aiohttp import ClientSession
5 7
6 8 from ..typing import AsyncResult, Messages
7 9 from .base_provider import AsyncGeneratorProvider, ProviderModelMixin
@@ -9,18 +11,27 @@ from .helper import format_prompt
9 11
10 12
11 13 class Ai4Chat(AsyncGeneratorProvider, ProviderModelMixin):
14 label = "AI4Chat"
12 15 url = "https://www.ai4chat.co"
13 16 api_endpoint = "https://www.ai4chat.co/generate-response"
14 17 working = True
15 supports_stream = False
18 supports_stream = True
16 19 supports_system_message = True
17 20 supports_message_history = True
18 21
19 22 default_model = 'gpt-4'
23 models = [default_model]
24
25 model_aliases = {}
20 26
21 27 @classmethod
22 28 def get_model(cls, model: str) -> str:
23 return cls.default_model
29 if model in cls.models:
30 return model
31 elif model in cls.model_aliases:
32 return cls.model_aliases[model]
33 else:
34 return cls.default_model
24 35
25 36 @classmethod
26 37 async def create_async_generator(
@@ -33,26 +44,25 @@ class Ai4Chat(AsyncGeneratorProvider, ProviderModelMixin):
33 44 model = cls.get_model(model)
34 45
35 46 headers = {
36 'accept': '*/*',
37 'accept-language': 'en-US,en;q=0.9',
38 'cache-control': 'no-cache',
39 'content-type': 'application/json',
40 'cookie': 'messageCount=2',
41 'origin': 'https://www.ai4chat.co',
42 'pragma': 'no-cache',
43 'priority': 'u=1, i',
44 'referer': 'https://www.ai4chat.co/gpt/talkdirtytome',
45 'sec-ch-ua': '"Chromium";v="129", "Not=A?Brand";v="8"',
46 'sec-ch-ua-mobile': '?0',
47 'sec-ch-ua-platform': '"Linux"',
48 'sec-fetch-dest': 'empty',
49 'sec-fetch-mode': 'cors',
50 'sec-fetch-site': 'same-origin',
51 'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36'
47 "accept": "*/*",
48 "accept-language": "en-US,en;q=0.9",
49 "cache-control": "no-cache",
50 "content-type": "application/json",
51 "origin": "https://www.ai4chat.co",
52 "pragma": "no-cache",
53 "priority": "u=1, i",
54 "referer": "https://www.ai4chat.co/gpt/talkdirtytome",
55 "sec-ch-ua": '"Chromium";v="129", "Not=A?Brand";v="8"',
56 "sec-ch-ua-mobile": "?0",
57 "sec-ch-ua-platform": '"Linux"',
58 "sec-fetch-dest": "empty",
59 "sec-fetch-mode": "cors",
60 "sec-fetch-site": "same-origin",
61 "user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36"
52 62 }
53 63
54 64 async with ClientSession(headers=headers) as session:
55 payload = {
65 data = {
56 66 "messages": [
57 67 {
58 68 "role": "user",
@@ -61,9 +71,18 @@ class Ai4Chat(AsyncGeneratorProvider, ProviderModelMixin):
61 71 ]
62 72 }
63 73
64 async with session.post(cls.api_endpoint, json=payload, proxy=proxy) as response:
65 response.raise_for_status()
66 response_data = await response.json()
67 message = response_data.get('message', '')
68 clean_message = re.sub('<[^<]+?>', '', message).strip()
69 yield clean_message
74 try:
75 async with session.post(cls.api_endpoint, json=data, proxy=proxy) as response:
76 response.raise_for_status()
77 result = await response.text()
78
79 json_result = json.loads(result)
80
81 message = json_result.get("message", "")
82
83 clean_message = re.sub(r'<[^>]+>', '', message)
84
85 yield clean_message
86 except Exception as e:
87 logging.exception("Error while calling AI 4Chat API: %s", e)
88 yield f"Error: {e}"
Modified g4f/Provider/Chatgpt4Online.py +4 -1
@@ -13,11 +13,14 @@ class Chatgpt4Online(AsyncGeneratorProvider):
13 13 api_endpoint = "/wp-json/mwai-ui/v1/chats/submit"
14 14 working = True
15 15
16 default_model = 'gpt-4'
17 models = [default_model]
18
16 19 async def get_nonce(headers: dict) -> str:
17 20 async with ClientSession(headers=headers) as session:
18 21 async with session.post(f"https://chatgpt4online.org/wp-json/mwai/v1/start_session") as response:
19 22 return (await response.json())["restNonce"]
20
23
21 24 @classmethod
22 25 async def create_async_generator(
23 26 cls,
Modified g4f/models.py +1 -2
@@ -104,7 +104,6 @@ default = Model(
104 104 AmigoChat,
105 105 ChatifyAI,
106 106 Cloudflare,
107 Ai4Chat,
108 107 Editee,
109 108 AiMathGPT,
110 109 ])
@@ -151,7 +150,7 @@ gpt_4_turbo = Model(
151 150 gpt_4 = Model(
152 151 name = 'gpt-4',
153 152 base_provider = 'OpenAI',
154 best_provider = IterListProvider([NexraChatGPT, NexraChatGptV2, NexraChatGptWeb, Ai4Chat, Airforce, Chatgpt4Online, Bing, OpenaiChat, gpt_4_turbo.best_provider, gpt_4o.best_provider, gpt_4o_mini.best_provider])
153 best_provider = IterListProvider([Chatgpt4Online, Ai4Chat, NexraChatGPT, NexraChatGptV2, NexraChatGptWeb, Airforce, Bing, OpenaiChat, gpt_4_turbo.best_provider, gpt_4o.best_provider, gpt_4o_mini.best_provider])
155 154 )
156 155
157 156 # o1