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

XFEstudio/gpt4free

Update (docs/providers-and-models.md g4f/models.py g4f/Provider/nexra/)

8768a057
kqlio67 <kqlio67@users.noreply.github.com>
提交于

代码差异

7 个文件 +237 -292
Modified docs/providers-and-models.md +2 -5
@@ -64,10 +64,7 @@ This document provides an overview of various AI providers and models, including
64 64 |[app.myshell.ai/chat](https://app.myshell.ai/chat)|`g4f.Provider.MyShell`|✔|❌|?|?|![Disabled](https://img.shields.io/badge/Disabled-red)|❌|
65 65 |[nexra.aryahcr.cc/bing](https://nexra.aryahcr.cc/documentation/bing/en)|`g4f.Provider.NexraBing`|✔|❌|❌|✔|![Disabled](https://img.shields.io/badge/Disabled-red)|❌|
66 66 |[nexra.aryahcr.cc/blackbox](https://nexra.aryahcr.cc/documentation/blackbox/en)|`g4f.Provider.NexraBlackbox`|`blackboxai` |❌|❌|✔|![Active](https://img.shields.io/badge/Active-brightgreen)|❌|
67 |[nexra.aryahcr.cc/chatgpt](https://nexra.aryahcr.cc/documentation/chatgpt/en)|`g4f.Provider.NexraChatGPT`|`gpt-4, gpt-3.5-turbo, gpt-3` |❌|❌|✔|![Active](https://img.shields.io/badge/Active-brightgreen)|❌|
68 |[nexra.aryahcr.cc/chatgpt](https://nexra.aryahcr.cc/documentation/chatgpt/en)|`g4f.Provider.NexraChatGPT4o`|`gpt-4o` |❌|❌|✔|![Active](https://img.shields.io/badge/Active-brightgreen)|❌|
69 |[nexra.aryahcr.cc/chatgpt](https://nexra.aryahcr.cc/documentation/chatgpt/en)|`g4f.Provider.NexraChatGptV2`|`gpt-4` |❌|❌|✔|![Active](https://img.shields.io/badge/Active-brightgreen)|❌|
70 |[nexra.aryahcr.cc/chatgpt](https://nexra.aryahcr.cc/documentation/chatgpt/en)|`g4f.Provider.NexraChatGptWeb`|`gpt-4` |❌|❌|✔|![Active](https://img.shields.io/badge/Active-brightgreen)|❌|
67 |[nexra.aryahcr.cc/chatgpt](https://nexra.aryahcr.cc/documentation/chatgpt/en)|`g4f.Provider.NexraChatGPT`|`gpt-4, gpt-3.5-turbo, gpt-3, gpt-4o` |❌|❌|✔|![Active](https://img.shields.io/badge/Active-brightgreen)|❌|
71 68 |[nexra.aryahcr.cc/dall-e](https://nexra.aryahcr.cc/documentation/dall-e/en)|`g4f.Provider.NexraDallE`|❌|`dalle`|❌|❌|![Active](https://img.shields.io/badge/Active-brightgreen)|❌|
72 69 |[nexra.aryahcr.cc/dall-e](https://nexra.aryahcr.cc/documentation/dall-e/en)|`g4f.Provider.NexraDallE2`|❌|`dalle-2`|❌|❌|![Active](https://img.shields.io/badge/Active-brightgreen)|❌|
73 70 |[nexra.aryahcr.cc/emi](https://nexra.aryahcr.cc/documentation/emi/en)|`g4f.Provider.NexraEmi`|❌|`emi`|❌|❌|![Active](https://img.shields.io/badge/Active-brightgreen)|❌|
@@ -109,7 +106,7 @@ This document provides an overview of various AI providers and models, including
109 106 |-------|---------------|-----------|---------|
110 107 |gpt-3|OpenAI|1+ Providers|[platform.openai.com](https://platform.openai.com/docs/models/gpt-base)|
111 108 |gpt-3.5-turbo|OpenAI|5+ Providers|[platform.openai.com](https://platform.openai.com/docs/models/gpt-3-5-turbo)|
112 |gpt-4|OpenAI|9+ Providers|[platform.openai.com](https://platform.openai.com/docs/models/gpt-4-turbo-and-gpt-4)|
109 |gpt-4|OpenAI|7+ Providers|[platform.openai.com](https://platform.openai.com/docs/models/gpt-4-turbo-and-gpt-4)|
113 110 |gpt-4-turbo|OpenAI|3+ Providers|[platform.openai.com](https://platform.openai.com/docs/models/gpt-4-turbo-and-gpt-4)|
114 111 |gpt-4o|OpenAI|10+ Providers|[platform.openai.com](https://platform.openai.com/docs/models/gpt-4o)|
115 112 |gpt-4o-mini|OpenAI|14+ Providers|[platform.openai.com](https://platform.openai.com/docs/models/gpt-4o-mini)|
Modified g4f/Provider/nexra/NexraChatGPT.py +233 -37
@@ -1,45 +1,52 @@
1 1 from __future__ import annotations
2 2
3 import asyncio
3 4 import json
4 5 import requests
6 from typing import Any, Dict
5 7
6 from ...typing import CreateResult, Messages
7 from ..base_provider import ProviderModelMixin, AbstractProvider
8 from ...typing import AsyncResult, Messages
9 from ..base_provider import AsyncGeneratorProvider, ProviderModelMixin
8 10 from ..helper import format_prompt
9 11
10 class NexraChatGPT(AbstractProvider, ProviderModelMixin):
12
13 class NexraChatGPT(AsyncGeneratorProvider, ProviderModelMixin):
11 14 label = "Nexra ChatGPT"
12 15 url = "https://nexra.aryahcr.cc/documentation/chatgpt/en"
13 api_endpoint = "https://nexra.aryahcr.cc/api/chat/gpt"
16 api_endpoint_nexra_chatgpt = "https://nexra.aryahcr.cc/api/chat/gpt"
17 api_endpoint_nexra_chatgpt4o = "https://nexra.aryahcr.cc/api/chat/complements"
18 api_endpoint_nexra_chatgpt_v2 = "https://nexra.aryahcr.cc/api/chat/complements"
19 api_endpoint_nexra_gptweb = "https://nexra.aryahcr.cc/api/chat/gptweb"
14 20 working = True
21 supports_system_message = True
22 supports_message_history = True
23 supports_stream = True
15 24
16 25 default_model = 'gpt-3.5-turbo'
17 models = ['gpt-4', 'gpt-4-0613', 'gpt-4-0314', 'gpt-4-32k-0314', default_model, 'gpt-3.5-turbo-16k', 'gpt-3.5-turbo-0613', 'gpt-3.5-turbo-16k-0613', 'gpt-3.5-turbo-0301', 'text-davinci-003', 'text-davinci-002', 'code-davinci-002', 'gpt-3', 'text-curie-001', 'text-babbage-001', 'text-ada-001', 'davinci', 'curie', 'babbage', 'ada', 'babbage-002', 'davinci-002']
26 nexra_chatgpt = [
27 'gpt-4', 'gpt-4-0613', 'gpt-4-0314', 'gpt-4-32k-0314',
28 default_model, 'gpt-3.5-turbo-16k', 'gpt-3.5-turbo-0613', 'gpt-3.5-turbo-16k-0613', 'gpt-3.5-turbo-0301',
29 'text-davinci-003', 'text-davinci-002', 'code-davinci-002', 'gpt-3', 'text-curie-001', 'text-babbage-001', 'text-ada-001', 'davinci', 'curie', 'babbage', 'ada', 'babbage-002', 'davinci-002'
30 ]
31 nexra_chatgpt4o = ['gpt-4o']
32 nexra_chatgptv2 = ['chatgpt']
33 nexra_gptweb = ['gptweb']
34 models = nexra_chatgpt + nexra_chatgpt4o + nexra_chatgptv2 + nexra_gptweb
18 35
19 36 model_aliases = {
20 37 "gpt-4": "gpt-4-0613",
21 "gpt-4": "gpt-4-32k",
22 "gpt-4": "gpt-4-0314",
23 "gpt-4": "gpt-4-32k-0314",
24
38 "gpt-4-32k": "gpt-4-32k-0314",
25 39 "gpt-3.5-turbo": "gpt-3.5-turbo-16k",
26 "gpt-3.5-turbo": "gpt-3.5-turbo-0613",
27 "gpt-3.5-turbo": "gpt-3.5-turbo-16k-0613",
28 "gpt-3.5-turbo": "gpt-3.5-turbo-0301",
29
40 "gpt-3.5-turbo-0613": "gpt-3.5-turbo-16k-0613",
30 41 "gpt-3": "text-davinci-003",
31 "gpt-3": "text-davinci-002",
32 "gpt-3": "code-davinci-002",
33 "gpt-3": "text-curie-001",
34 "gpt-3": "text-babbage-001",
35 "gpt-3": "text-ada-001",
36 "gpt-3": "text-ada-001",
37 "gpt-3": "davinci",
38 "gpt-3": "curie",
39 "gpt-3": "babbage",
40 "gpt-3": "ada",
41 "gpt-3": "babbage-002",
42 "gpt-3": "davinci-002",
42 "text-davinci-002": "code-davinci-002",
43 "text-curie-001": "text-babbage-001",
44 "text-ada-001": "davinci",
45 "curie": "babbage",
46 "ada": "babbage-002",
47 "davinci-002": "davinci-002",
48 "chatgpt": "chatgpt",
49 "gptweb": "gptweb"
43 50 }
44 51
45 52 @classmethod
@@ -50,40 +57,229 @@ class NexraChatGPT(AbstractProvider, ProviderModelMixin):
50 57 return cls.model_aliases[model]
51 58 else:
52 59 return cls.default_model
53
60
54 61 @classmethod
55 def create_completion(
62 async def create_async_generator(
56 63 cls,
57 64 model: str,
58 65 messages: Messages,
66 stream: bool = False,
59 67 proxy: str = None,
60 68 markdown: bool = False,
61 69 **kwargs
62 ) -> CreateResult:
63 model = cls.get_model(model)
70 ) -> AsyncResult:
71 if model in cls.nexra_chatgpt:
72 async for chunk in cls._create_async_generator_nexra_chatgpt(model, messages, proxy, **kwargs):
73 yield chunk
74 elif model in cls.nexra_chatgpt4o:
75 async for chunk in cls._create_async_generator_nexra_chatgpt4o(model, messages, stream, proxy, markdown, **kwargs):
76 yield chunk
77 elif model in cls.nexra_chatgptv2:
78 async for chunk in cls._create_async_generator_nexra_chatgpt_v2(model, messages, stream, proxy, markdown, **kwargs):
79 yield chunk
80 elif model in cls.nexra_gptweb:
81 async for chunk in cls._create_async_generator_nexra_gptweb(model, messages, proxy, **kwargs):
82 yield chunk
64 83
84 @classmethod
85 async def _create_async_generator_nexra_chatgpt(
86 cls,
87 model: str,
88 messages: Messages,
89 proxy: str = None,
90 markdown: bool = False,
91 **kwargs
92 ) -> AsyncResult:
93 model = cls.get_model(model)
94
65 95 headers = {
66 'Content-Type': 'application/json'
96 "Content-Type": "application/json"
67 97 }
68 98
99 prompt = format_prompt(messages)
69 100 data = {
70 "messages": [],
71 "prompt": format_prompt(messages),
101 "messages": messages,
102 "prompt": prompt,
72 103 "model": model,
73 104 "markdown": markdown
74 105 }
106
107 loop = asyncio.get_event_loop()
108 try:
109 response = await loop.run_in_executor(None, cls._sync_post_request, cls.api_endpoint_nexra_chatgpt, data, headers, proxy)
110 filtered_response = cls._filter_response(response)
111
112 for chunk in filtered_response:
113 yield chunk
114 except Exception as e:
115 print(f"Error during API request (nexra_chatgpt): {e}")
116
117 @classmethod
118 async def _create_async_generator_nexra_chatgpt4o(
119 cls,
120 model: str,
121 messages: Messages,
122 stream: bool = False,
123 proxy: str = None,
124 markdown: bool = False,
125 **kwargs
126 ) -> AsyncResult:
127 model = cls.get_model(model)
75 128
76 response = requests.post(cls.api_endpoint, headers=headers, json=data)
129 headers = {
130 "Content-Type": "application/json"
131 }
132
133 prompt = format_prompt(messages)
134 data = {
135 "messages": [
136 {
137 "role": "user",
138 "content": prompt
139 }
140 ],
141 "stream": stream,
142 "markdown": markdown,
143 "model": model
144 }
77 145
78 return cls.process_response(response)
146 loop = asyncio.get_event_loop()
147 try:
148 response = await loop.run_in_executor(None, cls._sync_post_request, cls.api_endpoint_nexra_chatgpt4o, data, headers, proxy, stream)
149
150 if stream:
151 async for chunk in cls._process_streaming_response(response):
152 yield chunk
153 else:
154 for chunk in cls._process_non_streaming_response(response):
155 yield chunk
156 except Exception as e:
157 print(f"Error during API request (nexra_chatgpt4o): {e}")
79 158
80 159 @classmethod
81 def process_response(cls, response):
160 async def _create_async_generator_nexra_chatgpt_v2(
161 cls,
162 model: str,
163 messages: Messages,
164 stream: bool = False,
165 proxy: str = None,
166 markdown: bool = False,
167 **kwargs
168 ) -> AsyncResult:
169 model = cls.get_model(model)
170
171 headers = {
172 "Content-Type": "application/json"
173 }
174
175 prompt = format_prompt(messages)
176 data = {
177 "messages": [
178 {
179 "role": "user",
180 "content": prompt
181 }
182 ],
183 "stream": stream,
184 "markdown": markdown,
185 "model": model
186 }
187
188 loop = asyncio.get_event_loop()
189 try:
190 response = await loop.run_in_executor(None, cls._sync_post_request, cls.api_endpoint_nexra_chatgpt_v2, data, headers, proxy, stream)
191
192 if stream:
193 async for chunk in cls._process_streaming_response(response):
194 yield chunk
195 else:
196 for chunk in cls._process_non_streaming_response(response):
197 yield chunk
198 except Exception as e:
199 print(f"Error during API request (nexra_chatgpt_v2): {e}")
200
201 @classmethod
202 async def _create_async_generator_nexra_gptweb(
203 cls,
204 model: str,
205 messages: Messages,
206 proxy: str = None,
207 markdown: bool = False,
208 **kwargs
209 ) -> AsyncResult:
210 model = cls.get_model(model)
211
212 headers = {
213 "Content-Type": "application/json"
214 }
215
216 prompt = format_prompt(messages)
217 data = {
218 "prompt": prompt,
219 "markdown": markdown,
220 }
221
222 loop = asyncio.get_event_loop()
223 try:
224 response = await loop.run_in_executor(None, cls._sync_post_request, cls.api_endpoint_nexra_gptweb, data, headers, proxy)
225
226 for chunk in response.iter_content(1024):
227 if chunk:
228 decoded_chunk = chunk.decode().lstrip('_')
229 try:
230 response_json = json.loads(decoded_chunk)
231 if response_json.get("status"):
232 yield response_json.get("gpt", "")
233 except json.JSONDecodeError:
234 continue
235 except Exception as e:
236 print(f"Error during API request (nexra_gptweb): {e}")
237
238 @staticmethod
239 def _sync_post_request(url: str, data: Dict[str, Any], headers: Dict[str, str], proxy: str = None, stream: bool = False) -> requests.Response:
240 proxies = {
241 "http": proxy,
242 "https": proxy,
243 } if proxy else None
244
245 try:
246 response = requests.post(url, json=data, headers=headers, proxies=proxies, stream=stream)
247 response.raise_for_status()
248 return response
249 except requests.RequestException as e:
250 print(f"Request failed: {e}")
251 raise
252
253 @staticmethod
254 def _process_non_streaming_response(response: requests.Response) -> str:
82 255 if response.status_code == 200:
83 256 try:
84 data = response.json()
85 return data.get('gpt', '')
257 content = response.text.lstrip('')
258 data = json.loads(content)
259 return data.get('message', '')
86 260 except json.JSONDecodeError:
87 261 return "Error: Unable to decode JSON response"
88 262 else:
89 263 return f"Error: {response.status_code}"
264
265 @staticmethod
266 async def _process_streaming_response(response: requests.Response):
267 full_message = ""
268 for line in response.iter_lines(decode_unicode=True):
269 if line:
270 try:
271 line = line.lstrip('')
272 data = json.loads(line)
273 if data.get('finish'):
274 break
275 message = data.get('message', '')
276 if message:
277 yield message[len(full_message):]
278 full_message = message
279 except json.JSONDecodeError:
280 pass
281
282 @staticmethod
283 def _filter_response(response: requests.Response) -> str:
284 response_json = response.json()
285 return response_json.get("gpt", "")
Deleted g4f/Provider/nexra/NexraChatGPT4o.py +0 -86
@@ -1,86 +0,0 @@
1 from __future__ import annotations
2
3 import json
4 import requests
5
6 from ...typing import CreateResult, Messages
7 from ..base_provider import ProviderModelMixin, AbstractProvider
8 from ..helper import format_prompt
9
10 class NexraChatGPT4o(AbstractProvider, ProviderModelMixin):
11 label = "Nexra ChatGPT4o"
12 url = "https://nexra.aryahcr.cc/documentation/chatgpt/en"
13 api_endpoint = "https://nexra.aryahcr.cc/api/chat/complements"
14 working = True
15 supports_stream = True
16
17 default_model = "gpt-4o"
18 models = [default_model]
19
20 @classmethod
21 def get_model(cls, model: str) -> str:
22 return cls.default_model
23
24 @classmethod
25 def create_completion(
26 cls,
27 model: str,
28 messages: Messages,
29 stream: bool,
30 proxy: str = None,
31 markdown: bool = False,
32 **kwargs
33 ) -> CreateResult:
34 model = cls.get_model(model)
35
36 headers = {
37 'Content-Type': 'application/json'
38 }
39
40 data = {
41 "messages": [
42 {
43 "role": "user",
44 "content": format_prompt(messages)
45 }
46 ],
47 "stream": stream,
48 "markdown": markdown,
49 "model": model
50 }
51
52 response = requests.post(cls.api_endpoint, headers=headers, json=data, stream=stream)
53
54 if stream:
55 return cls.process_streaming_response(response)
56 else:
57 return cls.process_non_streaming_response(response)
58
59 @classmethod
60 def process_non_streaming_response(cls, response):
61 if response.status_code == 200:
62 try:
63 content = response.text.lstrip('')
64 data = json.loads(content)
65 return data.get('message', '')
66 except json.JSONDecodeError:
67 return "Error: Unable to decode JSON response"
68 else:
69 return f"Error: {response.status_code}"
70
71 @classmethod
72 def process_streaming_response(cls, response):
73 full_message = ""
74 for line in response.iter_lines(decode_unicode=True):
75 if line:
76 try:
77 line = line.lstrip('')
78 data = json.loads(line)
79 if data.get('finish'):
80 break
81 message = data.get('message', '')
82 if message and message != full_message:
83 yield message[len(full_message):]
84 full_message = message
85 except json.JSONDecodeError:
86 pass
Deleted g4f/Provider/nexra/NexraChatGptV2.py +0 -92
@@ -1,92 +0,0 @@
1 from __future__ import annotations
2
3 import json
4 import requests
5
6 from ...typing import CreateResult, Messages
7 from ..base_provider import ProviderModelMixin, AbstractProvider
8 from ..helper import format_prompt
9
10 class NexraChatGptV2(AbstractProvider, ProviderModelMixin):
11 label = "Nexra ChatGPT v2"
12 url = "https://nexra.aryahcr.cc/documentation/chatgpt/en"
13 api_endpoint = "https://nexra.aryahcr.cc/api/chat/complements"
14 working = True
15 supports_stream = True
16
17 default_model = 'chatgpt'
18 models = [default_model]
19 model_aliases = {"gpt-4": "chatgpt"}
20
21 @classmethod
22 def get_model(cls, model: str) -> str:
23 if model in cls.models:
24 return model
25 elif model in cls.model_aliases:
26 return cls.model_aliases[model]
27 else:
28 return cls.default_model
29
30 @classmethod
31 def create_completion(
32 cls,
33 model: str,
34 messages: Messages,
35 stream: bool,
36 proxy: str = None,
37 markdown: bool = False,
38 **kwargs
39 ) -> CreateResult:
40 model = cls.get_model(model)
41
42 headers = {
43 'Content-Type': 'application/json'
44 }
45
46 data = {
47 "messages": [
48 {
49 "role": "user",
50 "content": format_prompt(messages)
51 }
52 ],
53 "stream": stream,
54 "markdown": markdown,
55 "model": model
56 }
57
58 response = requests.post(cls.api_endpoint, headers=headers, json=data, stream=stream)
59
60 if stream:
61 return cls.process_streaming_response(response)
62 else:
63 return cls.process_non_streaming_response(response)
64
65 @classmethod
66 def process_non_streaming_response(cls, response):
67 if response.status_code == 200:
68 try:
69 content = response.text.lstrip('')
70 data = json.loads(content)
71 return data.get('message', '')
72 except json.JSONDecodeError:
73 return "Error: Unable to decode JSON response"
74 else:
75 return f"Error: {response.status_code}"
76
77 @classmethod
78 def process_streaming_response(cls, response):
79 full_message = ""
80 for line in response.iter_lines(decode_unicode=True):
81 if line:
82 try:
83 line = line.lstrip('')
84 data = json.loads(line)
85 if data.get('finish'):
86 break
87 message = data.get('message', '')
88 if message:
89 yield message[len(full_message):]
90 full_message = message
91 except json.JSONDecodeError:
92 pass
Deleted g4f/Provider/nexra/NexraChatGptWeb.py +0 -64
@@ -1,64 +0,0 @@
1 from __future__ import annotations
2
3 import json
4 import requests
5
6 from ...typing import CreateResult, Messages
7 from ..base_provider import ProviderModelMixin, AbstractProvider
8 from ..helper import format_prompt
9
10 class NexraChatGptWeb(AbstractProvider, ProviderModelMixin):
11 label = "Nexra ChatGPT Web"
12 url = "https://nexra.aryahcr.cc/documentation/chatgpt/en"
13 working = True
14
15 default_model = "gptweb"
16 models = [default_model]
17 model_aliases = {"gpt-4": "gptweb"}
18 api_endpoints = {"gptweb": "https://nexra.aryahcr.cc/api/chat/gptweb"}
19
20 @classmethod
21 def get_model(cls, model: str) -> str:
22 if model in cls.models:
23 return model
24 elif model in cls.model_aliases:
25 return cls.model_aliases[model]
26 else:
27 return cls.default_model
28
29 @classmethod
30 def create_completion(
31 cls,
32 model: str,
33 messages: Messages,
34 proxy: str = None,
35 markdown: bool = False,
36 **kwargs
37 ) -> CreateResult:
38 model = cls.get_model(model)
39 api_endpoint = cls.api_endpoints.get(model, cls.api_endpoints[cls.default_model])
40
41 headers = {
42 'Content-Type': 'application/json'
43 }
44
45 data = {
46 "prompt": format_prompt(messages),
47 "markdown": markdown
48 }
49
50 response = requests.post(api_endpoint, headers=headers, json=data)
51
52 return cls.process_response(response)
53
54 @classmethod
55 def process_response(cls, response):
56 if response.status_code == 200:
57 try:
58 content = response.text.lstrip('_')
59 json_response = json.loads(content)
60 return json_response.get('gpt', '')
61 except json.JSONDecodeError:
62 return "Error: Unable to decode JSON response"
63 else:
64 return f"Error: {response.status_code}"
Modified g4f/Provider/nexra/__init__.py +0 -3
@@ -1,9 +1,6 @@
1 1 from .NexraBing import NexraBing
2 2 from .NexraBlackbox import NexraBlackbox
3 3 from .NexraChatGPT import NexraChatGPT
4 from .NexraChatGPT4o import NexraChatGPT4o
5 from .NexraChatGptV2 import NexraChatGptV2
6 from .NexraChatGptWeb import NexraChatGptWeb
7 4 from .NexraDallE import NexraDallE
8 5 from .NexraDallE2 import NexraDallE2
9 6 from .NexraEmi import NexraEmi
Modified g4f/models.py +2 -5
@@ -42,9 +42,6 @@ from .Provider import (
42 42 NexraBing,
43 43 NexraBlackbox,
44 44 NexraChatGPT,
45 NexraChatGPT4o,
46 NexraChatGptV2,
47 NexraChatGptWeb,
48 45 NexraDallE,
49 46 NexraDallE2,
50 47 NexraEmi,
@@ -140,7 +137,7 @@ gpt_35_turbo = Model(
140 137 gpt_4o = Model(
141 138 name = 'gpt-4o',
142 139 base_provider = 'OpenAI',
143 best_provider = IterListProvider([NexraChatGPT4o, Blackbox, ChatGptEs, AmigoChat, DarkAI, Editee, GizAI, Airforce, Liaobots, OpenaiChat])
140 best_provider = IterListProvider([NexraChatGPT, Blackbox, ChatGptEs, AmigoChat, DarkAI, Editee, GizAI, Airforce, Liaobots, OpenaiChat])
144 141 )
145 142
146 143 gpt_4o_mini = Model(
@@ -158,7 +155,7 @@ gpt_4_turbo = Model(
158 155 gpt_4 = Model(
159 156 name = 'gpt-4',
160 157 base_provider = 'OpenAI',
161 best_provider = IterListProvider([Chatgpt4Online, Ai4Chat, NexraBing, NexraChatGPT, NexraChatGptV2, NexraChatGptWeb, Airforce, Bing, OpenaiChat, gpt_4_turbo.best_provider, gpt_4o.best_provider, gpt_4o_mini.best_provider])
158 best_provider = IterListProvider([Chatgpt4Online, Ai4Chat, NexraBing, NexraChatGPT, Airforce, Bing, OpenaiChat, gpt_4_turbo.best_provider, gpt_4o.best_provider, gpt_4o_mini.best_provider])
162 159 )
163 160
164 161 # o1