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

XFEstudio/gpt4free

feat(providers): unify Rocks and FluxAirforce into Airforce provider

3e491c63
kqlio67 <kqlio67@users.noreply.github.com>
提交于

代码差异

5 个文件 +396 -194
Added g4f/Provider/Airforce.py +255 -0
@@ -0,0 +1,255 @@
1 from __future__ import annotations
2
3 from aiohttp import ClientSession, ClientResponseError
4 from urllib.parse import urlencode
5 import json
6 import io
7 import asyncio
8
9 from ..typing import AsyncResult, Messages
10 from .base_provider import AsyncGeneratorProvider, ProviderModelMixin
11 from ..image import ImageResponse, is_accepted_format
12 from .helper import format_prompt
13
14 class Airforce(AsyncGeneratorProvider, ProviderModelMixin):
15 url = "https://api.airforce"
16 text_api_endpoint = "https://api.airforce/chat/completions"
17 image_api_endpoint = "https://api.airforce/v1/imagine2"
18 working = True
19 supports_gpt_35_turbo = True
20 supports_gpt_4 = True
21 supports_stream = True
22 supports_system_message = True
23 supports_message_history = True
24 default_model = 'llama-3-70b-chat'
25 text_models = [
26 # Open source models
27 'llama-2-13b-chat',
28
29 'llama-3-70b-chat',
30 'llama-3-70b-chat-turbo',
31 'llama-3-70b-chat-lite',
32
33 'llama-3-8b-chat',
34 'llama-3-8b-chat-turbo',
35 'llama-3-8b-chat-lite',
36
37 'llama-3.1-405b-turbo',
38 'llama-3.1-70b-turbo',
39 'llama-3.1-8b-turbo',
40
41 'LlamaGuard-2-8b',
42 'Llama-Guard-7b',
43 'Meta-Llama-Guard-3-8B',
44
45 'Mixtral-8x7B-Instruct-v0.1',
46 'Mixtral-8x22B-Instruct-v0.1',
47 'Mistral-7B-Instruct-v0.1',
48 'Mistral-7B-Instruct-v0.2',
49 'Mistral-7B-Instruct-v0.3',
50
51 'Qwen1.5-72B-Chat',
52 'Qwen1.5-110B-Chat',
53 'Qwen2-72B-Instruct',
54
55 'gemma-2b-it',
56 'gemma-2-9b-it',
57 'gemma-2-27b-it',
58
59 'dbrx-instruct',
60
61 'deepseek-llm-67b-chat',
62
63 'Nous-Hermes-2-Mixtral-8x7B-DPO',
64 'Nous-Hermes-2-Yi-34B',
65
66 'WizardLM-2-8x22B',
67
68 'SOLAR-10.7B-Instruct-v1.0',
69
70 'StripedHyena-Nous-7B',
71
72 'sparkdesk',
73
74
75 # Other models
76 'chatgpt-4o-latest',
77 'gpt-4',
78 'gpt-4-turbo',
79 'gpt-4o-mini-2024-07-18',
80 'gpt-4o-mini',
81 'gpt-4o',
82 'gpt-3.5-turbo',
83 'gpt-3.5-turbo-0125',
84 'gpt-3.5-turbo-1106',
85 'gpt-3.5-turbo-16k',
86 'gpt-3.5-turbo-0613',
87 'gpt-3.5-turbo-16k-0613',
88
89 'gemini-1.5-flash',
90 'gemini-1.5-pro',
91 ]
92 image_models = [
93 'flux',
94 'flux-realism',
95 'flux-anime',
96 'flux-3d',
97 'flux-disney',
98 'flux-pixel',
99 'any-dark',
100 ]
101
102 models = [
103 *text_models,
104 *image_models
105 ]
106 model_aliases = {
107 # Open source models
108 "llama-2-13b": "llama-2-13b-chat",
109
110 "llama-3-70b": "llama-3-70b-chat",
111 "llama-3-70b": "llama-3-70b-chat-turbo",
112 "llama-3-70b": "llama-3-70b-chat-lite",
113
114 "llama-3-8b": "llama-3-8b-chat",
115 "llama-3-8b": "llama-3-8b-chat-turbo",
116 "llama-3-8b": "llama-3-8b-chat-lite",
117
118 "llama-3.1-405b": "llama-3.1-405b-turbo",
119 "llama-3.1-70b": "llama-3.1-70b-turbo",
120 "llama-3.1-8b": "llama-3.1-8b-turbo",
121
122 "mixtral-8x7b": "Mixtral-8x7B-Instruct-v0.1",
123 "mixtral-8x22b": "Mixtral-8x22B-Instruct-v0.1",
124 "mistral-7b": "Mistral-7B-Instruct-v0.1",
125 "mistral-7b": "Mistral-7B-Instruct-v0.2",
126 "mistral-7b": "Mistral-7B-Instruct-v0.3",
127
128 "mixtral-8x7b-dpo": "Nous-Hermes-2-Mixtral-8x7B-DPO",
129
130 "qwen-1-5-72b": "Qwen1.5-72B-Chat",
131 "qwen-1_5-110b": "Qwen1.5-110B-Chat",
132 "qwen-2-72b": "Qwen2-72B-Instruct",
133
134 "gemma-2b": "gemma-2b-it",
135 "gemma-2b-9b": "gemma-2-9b-it",
136 "gemma-2b-27b": "gemma-2-27b-it",
137
138 "deepseek": "deepseek-llm-67b-chat",
139
140 "yi-34b": "Nous-Hermes-2-Yi-34B",
141
142 "wizardlm-2-8x22b": "WizardLM-2-8x22B",
143
144 "solar-10-7b": "SOLAR-10.7B-Instruct-v1.0",
145
146 "sh-n-7b": "StripedHyena-Nous-7B",
147
148 "sparkdesk-v1.1": "sparkdesk",
149
150
151 # Other models
152 "gpt-4o": "chatgpt-4o-latest",
153 "gpt-4o-mini": "gpt-4o-mini-2024-07-18",
154
155 "gpt-3.5-turbo": "gpt-3.5-turbo-0125",
156 "gpt-3.5-turbo": "gpt-3.5-turbo-1106",
157 "gpt-3.5-turbo": "gpt-3.5-turbo-16k",
158 "gpt-3.5-turbo": "gpt-3.5-turbo-0613",
159 "gpt-3.5-turbo": "gpt-3.5-turbo-16k-0613",
160
161
162 "gemini-flash": "gemini-1.5-flash",
163 "gemini-pro": "gemini-1.5-pro",
164 }
165
166 @classmethod
167 async def create_async_generator(
168 cls,
169 model: str,
170 messages: Messages,
171 proxy: str = None,
172 **kwargs
173 ) -> AsyncResult:
174 model = cls.get_model(model)
175
176 headers = {
177 "accept": "*/*",
178 "accept-language": "en-US,en;q=0.9",
179 "content-type": "application/json",
180 "origin": "https://api.airforce",
181 "sec-ch-ua": '"Chromium";v="128", "Not(A:Brand";v="24"',
182 "sec-ch-ua-mobile": "?0",
183 "sec-ch-ua-platform": '"Linux"',
184 "sec-fetch-dest": "empty",
185 "sec-fetch-mode": "cors",
186 "sec-fetch-site": "cross-site",
187 "user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36"
188 }
189
190
191 if model in cls.image_models:
192 async for item in cls.generate_image(model, messages, headers, proxy, **kwargs):
193 yield item
194 else:
195 async for item in cls.generate_text(model, messages, headers, proxy, **kwargs):
196 yield item
197
198 @classmethod
199 async def generate_text(cls, model: str, messages: Messages, headers: dict, proxy: str, **kwargs) -> AsyncResult:
200 async with ClientSession(headers=headers) as session:
201 data = {
202 "messages": [{"role": "user", "content": format_prompt(messages)}],
203 "model": model,
204 "temperature": kwargs.get('temperature', 1),
205 "top_p": kwargs.get('top_p', 1),
206 "stream": True
207 }
208
209 async with session.post(cls.text_api_endpoint, json=data, proxy=proxy) as response:
210 response.raise_for_status()
211 async for line in response.content:
212 if line:
213 line = line.decode('utf-8').strip()
214 if line.startswith("data: "):
215 try:
216 data = json.loads(line[6:])
217 if 'choices' in data and len(data['choices']) > 0:
218 delta = data['choices'][0].get('delta', {})
219 if 'content' in delta:
220 yield delta['content']
221 except json.JSONDecodeError:
222 continue
223 elif line == "data: [DONE]":
224 break
225
226 @classmethod
227 async def generate_image(cls, model: str, messages: Messages, headers: dict, proxy: str, **kwargs) -> AsyncResult:
228 prompt = messages[-1]['content'] if messages else ""
229 params = {
230 "prompt": prompt,
231 "size": kwargs.get("size", "1:1"),
232 "seed": kwargs.get("seed"),
233 "model": model
234 }
235 params = {k: v for k, v in params.items() if v is not None}
236
237 try:
238 async with ClientSession(headers=headers) as session:
239 async with session.get(cls.image_api_endpoint, params=params, proxy=proxy) as response:
240 response.raise_for_status()
241 content = await response.read()
242
243 if response.content_type.startswith('image/'):
244 image_url = str(response.url)
245 yield ImageResponse(image_url, prompt)
246 else:
247 try:
248 text = content.decode('utf-8', errors='ignore')
249 yield f"Error: {text}"
250 except Exception as decode_error:
251 yield f"Error: Unable to decode response - {str(decode_error)}"
252 except ClientResponseError as e:
253 yield f"Error: HTTP {e.status}: {e.message}"
254 except Exception as e:
255 yield f"Unexpected error: {str(e)}"
Deleted g4f/Provider/FluxAirforce.py +0 -82
@@ -1,82 +0,0 @@
1 from __future__ import annotations
2
3 from aiohttp import ClientSession, ClientResponseError
4 from urllib.parse import urlencode
5 import io
6
7 from ..typing import AsyncResult, Messages
8 from .base_provider import AsyncGeneratorProvider, ProviderModelMixin
9 from ..image import ImageResponse, is_accepted_format
10
11 class FluxAirforce(AsyncGeneratorProvider, ProviderModelMixin):
12 url = "https://flux.api.airforce/"
13 api_endpoint = "https://api.airforce/v1/imagine2"
14 working = True
15 default_model = 'flux-realism'
16 models = [
17 'flux',
18 'flux-realism',
19 'flux-anime',
20 'flux-3d',
21 'flux-disney'
22 ]
23
24 @classmethod
25 async def create_async_generator(
26 cls,
27 model: str,
28 messages: Messages,
29 proxy: str = None,
30 **kwargs
31 ) -> AsyncResult:
32 headers = {
33 "accept": "*/*",
34 "accept-language": "en-US,en;q=0.9",
35 "origin": "https://flux.api.airforce",
36 "priority": "u=1, i",
37 "referer": "https://flux.api.airforce/",
38 "sec-ch-ua": '"Chromium";v="127", "Not)A;Brand";v="99"',
39 "sec-ch-ua-mobile": "?0",
40 "sec-ch-ua-platform": '"Linux"',
41 "sec-fetch-dest": "empty",
42 "sec-fetch-mode": "cors",
43 "sec-fetch-site": "same-site",
44 "user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36"
45 }
46
47 prompt = messages[-1]['content'] if messages else ""
48
49 params = {
50 "prompt": prompt,
51 "size": kwargs.get("size", "1:1"),
52 "seed": kwargs.get("seed"),
53 "model": model
54 }
55
56 params = {k: v for k, v in params.items() if v is not None}
57
58 try:
59 async with ClientSession(headers=headers) as session:
60 async with session.get(f"{cls.api_endpoint}", params=params, proxy=proxy) as response:
61 response.raise_for_status()
62
63 content = await response.read()
64
65 if response.content_type.startswith('image/'):
66 image_url = str(response.url)
67 yield ImageResponse(image_url, prompt)
68 else:
69 try:
70 text = content.decode('utf-8', errors='ignore')
71 yield f"Error: {text}"
72 except Exception as decode_error:
73 yield f"Error: Unable to decode response - {str(decode_error)}"
74
75 except ClientResponseError as e:
76 yield f"Error: HTTP {e.status}: {e.message}"
77 except Exception as e:
78 yield f"Unexpected error: {str(e)}"
79
80 finally:
81 if not session.closed:
82 await session.close()
Deleted g4f/Provider/Rocks.py +0 -70
@@ -1,70 +0,0 @@
1 import asyncio
2 import json
3 from aiohttp import ClientSession
4 from ..typing import Messages, AsyncResult
5 from .base_provider import AsyncGeneratorProvider
6
7 class Rocks(AsyncGeneratorProvider):
8 url = "https://api.airforce"
9 api_endpoint = "/chat/completions"
10 supports_message_history = True
11 supports_gpt_35_turbo = True
12 supports_gpt_4 = True
13 supports_stream = True
14 supports_system_message = 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 payload = {"messages":messages,"model":model,"max_tokens":4096,"temperature":1,"top_p":1,"stream":True}
26
27 headers = {
28 "Accept": "application/json",
29 "Accept-Encoding": "gzip, deflate, br, zstd",
30 "Accept-Language": "en-US,en;q=0.9",
31 "Authorization": "Bearer missing api key",
32 "Origin": "https://llmplayground.net",
33 "Referer": "https://llmplayground.net/",
34 "Sec-Fetch-Dest": "empty",
35 "Sec-Fetch-Mode": "cors",
36 "Sec-Fetch-Site": "same-origin",
37 "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36",
38 }
39
40 async with ClientSession() as session:
41 async with session.post(
42 f"{cls.url}{cls.api_endpoint}",
43 json=payload,
44 proxy=proxy,
45 headers=headers
46 ) as response:
47 response.raise_for_status()
48 last_chunk_time = asyncio.get_event_loop().time()
49
50 async for line in response.content:
51 current_time = asyncio.get_event_loop().time()
52 if current_time - last_chunk_time > 5:
53 return
54
55 if line.startswith(b"\n"):
56 pass
57 elif "discord.com/invite/" in line.decode() or "discord.gg/" in line.decode():
58 pass # trolled
59 elif line.startswith(b"data: "):
60 try:
61 line = json.loads(line[6:])
62 except json.JSONDecodeError:
63 continue
64 chunk = line["choices"][0]["delta"].get("content")
65 if chunk:
66 yield chunk
67 last_chunk_time = current_time
68 else:
69 raise Exception(f"Unexpected line: {line}")
70 return
Modified g4f/Provider/__init__.py +1 -2
@@ -13,6 +13,7 @@ from .AI365VIP import AI365VIP
13 13 from .Allyfy import Allyfy
14 14 from .AiChatOnline import AiChatOnline
15 15 from .AiChats import AiChats
16 from .Airforce import Airforce
16 17 from .Aura import Aura
17 18 from .Bing import Bing
18 19 from .BingCreateImages import BingCreateImages
@@ -28,7 +29,6 @@ from .DDG import DDG
28 29 from .DeepInfra import DeepInfra
29 30 from .DeepInfraImage import DeepInfraImage
30 31 from .FlowGpt import FlowGpt
31 from .FluxAirforce import FluxAirforce
32 32 from .Free2GPT import Free2GPT
33 33 from .FreeChatgpt import FreeChatgpt
34 34 from .FreeGpt import FreeGpt
@@ -55,7 +55,6 @@ from .Reka import Reka
55 55 from .Snova import Snova
56 56 from .Replicate import Replicate
57 57 from .ReplicateHome import ReplicateHome
58 from .Rocks import Rocks
59 58 from .TeachAnything import TeachAnything
60 59 from .TwitterBio import TwitterBio
61 60 from .Upstage import Upstage
Modified g4f/models.py +140 -40
@@ -5,6 +5,7 @@ from dataclasses import dataclass
5 5 from .Provider import IterListProvider, ProviderType
6 6 from .Provider import (
7 7 AiChatOnline,
8 Airforce,
8 9 Allyfy,
9 10 Bing,
10 11 Binjie,
@@ -18,7 +19,6 @@ from .Provider import (
18 19 DDG,
19 20 DeepInfra,
20 21 DeepInfraImage,
21 FluxAirforce,
22 22 Free2GPT,
23 23 FreeChatgpt,
24 24 FreeGpt,
@@ -105,7 +105,7 @@ gpt_35_turbo = Model(
105 105 name = 'gpt-3.5-turbo',
106 106 base_provider = 'OpenAI',
107 107 best_provider = IterListProvider([
108 Allyfy, TwitterBio, Nexra, Bixin123, CodeNews,
108 Allyfy, TwitterBio, Nexra, Bixin123, CodeNews, Airforce,
109 109 ])
110 110 )
111 111
@@ -114,7 +114,8 @@ gpt_4o = Model(
114 114 name = 'gpt-4o',
115 115 base_provider = 'OpenAI',
116 116 best_provider = IterListProvider([
117 Liaobots, Chatgpt4o, OpenaiChat,
117 Liaobots, Chatgpt4o, Airforce,
118 OpenaiChat,
118 119 ])
119 120 )
120 121
@@ -122,8 +123,8 @@ gpt_4o_mini = Model(
122 123 name = 'gpt-4o-mini',
123 124 base_provider = 'OpenAI',
124 125 best_provider = IterListProvider([
125 DDG, Liaobots, You, FreeNetfly, Pizzagpt, ChatgptFree, AiChatOnline, CodeNews,
126 MagickPen, OpenaiChat, Koala,
126 DDG, Liaobots, You, FreeNetfly, Pizzagpt, ChatgptFree, AiChatOnline, CodeNews, MagickPen, Airforce,
127 OpenaiChat, Koala,
127 128 ])
128 129 )
129 130
@@ -131,7 +132,7 @@ gpt_4_turbo = Model(
131 132 name = 'gpt-4-turbo',
132 133 base_provider = 'OpenAI',
133 134 best_provider = IterListProvider([
134 Nexra, Bixin123, Liaobots, Bing
135 Nexra, Bixin123, Liaobots, Airforce, Bing
135 136 ])
136 137 )
137 138
@@ -139,7 +140,7 @@ gpt_4 = Model(
139 140 name = 'gpt-4',
140 141 base_provider = 'OpenAI',
141 142 best_provider = IterListProvider([
142 Chatgpt4Online, Nexra, Binjie, Bing,
143 Chatgpt4Online, Nexra, Binjie, Airforce, Bing,
143 144 gpt_4_turbo.best_provider, gpt_4o.best_provider, gpt_4o_mini.best_provider
144 145 ])
145 146 )
@@ -159,48 +160,60 @@ meta = Model(
159 160 best_provider = MetaAI
160 161 )
161 162
163 llama_2_13b = Model(
164 name = "llama-2-13b",
165 base_provider = "Meta",
166 best_provider = IterListProvider([Airforce])
167 )
168
162 169 llama_3_8b = Model(
163 170 name = "llama-3-8b",
164 171 base_provider = "Meta",
165 best_provider = IterListProvider([DeepInfra, Replicate])
172 best_provider = IterListProvider([Airforce, DeepInfra, Replicate])
166 173 )
167 174
168 175 llama_3_70b = Model(
169 176 name = "llama-3-70b",
170 177 base_provider = "Meta",
171 best_provider = IterListProvider([ReplicateHome, DeepInfra, Replicate])
178 best_provider = IterListProvider([ReplicateHome, Airforce, DeepInfra, Replicate])
172 179 )
173 180
174 181 llama_3_1_8b = Model(
175 182 name = "llama-3.1-8b",
176 183 base_provider = "Meta",
177 best_provider = IterListProvider([Blackbox, PerplexityLabs])
184 best_provider = IterListProvider([Blackbox, Airforce, PerplexityLabs])
178 185 )
179 186
180 187 llama_3_1_70b = Model(
181 188 name = "llama-3.1-70b",
182 189 base_provider = "Meta",
183 best_provider = IterListProvider([DDG, HuggingChat, FreeGpt, Blackbox, TeachAnything, Free2GPT, HuggingFace, PerplexityLabs])
190 best_provider = IterListProvider([DDG, HuggingChat, FreeGpt, Blackbox, TeachAnything, Free2GPT, Airforce, HuggingFace, PerplexityLabs])
184 191 )
185 192
186 193 llama_3_1_405b = Model(
187 194 name = "llama-3.1-405b",
188 195 base_provider = "Meta",
189 best_provider = IterListProvider([Blackbox])
196 best_provider = IterListProvider([Blackbox, Airforce])
190 197 )
191 198
192 199
193 200 ### Mistral ###
201 mistral_7b = Model(
202 name = "mistral-7b",
203 base_provider = "Mistral",
204 best_provider = IterListProvider([HuggingChat, Airforce, HuggingFace, DeepInfra])
205 )
206
194 207 mixtral_8x7b = Model(
195 208 name = "mixtral-8x7b",
196 209 base_provider = "Mistral",
197 best_provider = IterListProvider([HuggingChat, DDG, ReplicateHome, TwitterBio, DeepInfra, HuggingFace,])
210 best_provider = IterListProvider([HuggingChat, DDG, ReplicateHome, TwitterBio, Airforce, DeepInfra, HuggingFace])
198 211 )
199 212
200 mistral_7b = Model(
201 name = "mistral-7b",
213 mixtral_8x22b = Model(
214 name = "mixtral-8x22b",
202 215 base_provider = "Mistral",
203 best_provider = IterListProvider([HuggingChat, HuggingFace, DeepInfra])
216 best_provider = IterListProvider([Airforce])
204 217 )
205 218
206 219
@@ -208,7 +221,13 @@ mistral_7b = Model(
208 221 mixtral_8x7b_dpo = Model(
209 222 name = "mixtral-8x7b-dpo",
210 223 base_provider = "NousResearch",
211 best_provider = IterListProvider([HuggingChat, HuggingFace,])
224 best_provider = IterListProvider([HuggingChat, Airforce, HuggingFace])
225 )
226
227 yi_34b = Model(
228 name = 'yi-34b',
229 base_provider = 'NousResearch',
230 best_provider = IterListProvider([Airforce])
212 231 )
213 232
214 233
@@ -222,29 +241,45 @@ phi_3_mini_4k = Model(
222 241
223 242 ### Google ###
224 243 # gemini
225 gemini = Model(
226 name = 'gemini',
227 base_provider = 'Google',
228 best_provider = Gemini
229 )
230
231 244 gemini_pro = Model(
232 245 name = 'gemini-pro',
233 246 base_provider = 'Google',
234 best_provider = IterListProvider([GeminiPro, ChatGot, Liaobots])
247 best_provider = IterListProvider([GeminiPro, ChatGot, Liaobots, Airforce])
235 248 )
236 249
237 250 gemini_flash = Model(
238 251 name = 'gemini-flash',
239 252 base_provider = 'Google',
240 best_provider = IterListProvider([Liaobots, Blackbox])
253 best_provider = IterListProvider([Blackbox, Liaobots, Airforce])
241 254 )
242 255
256 gemini = Model(
257 name = 'gemini',
258 base_provider = 'Google',
259 best_provider = IterListProvider([
260 Gemini,
261 gemini_flash.best_provider, gemini_pro.best_provider
262 ])
263 )
264
265
243 266 # gemma
244 267 gemma_2b = Model(
245 268 name = 'gemma-2b',
246 269 base_provider = 'Google',
247 best_provider = IterListProvider([ReplicateHome])
270 best_provider = IterListProvider([ReplicateHome, Airforce])
271 )
272
273 gemma_2b_9b = Model(
274 name = 'gemma-2b-9b',
275 base_provider = 'Google',
276 best_provider = IterListProvider([Airforce])
277 )
278
279 gemma_2b_27b = Model(
280 name = 'gemma-2b-27b',
281 base_provider = 'Google',
282 best_provider = IterListProvider([Airforce])
248 283 )
249 284
250 285 ### Anthropic ###
@@ -311,7 +346,7 @@ blackbox = Model(
311 346 dbrx_instruct = Model(
312 347 name = 'dbrx-instruct',
313 348 base_provider = 'Databricks',
314 best_provider = IterListProvider([DeepInfra])
349 best_provider = IterListProvider([Airforce, DeepInfra])
315 350 )
316 351
317 352
@@ -327,7 +362,7 @@ command_r_plus = Model(
327 362 sparkdesk_v1_1 = Model(
328 363 name = 'sparkdesk-v1.1',
329 364 base_provider = 'iFlytek',
330 best_provider = IterListProvider([FreeChatgpt])
365 best_provider = IterListProvider([FreeChatgpt, Airforce])
331 366 )
332 367
333 368 ### Qwen ###
@@ -337,6 +372,24 @@ qwen_1_5_14b = Model(
337 372 best_provider = IterListProvider([FreeChatgpt])
338 373 )
339 374
375 qwen_1_5_72b = Model(
376 name = 'qwen-1.5-72b',
377 base_provider = 'Qwen',
378 best_provider = IterListProvider([Airforce])
379 )
380
381 qwen_1_5_110b = Model(
382 name = 'qwen-1.5-110b',
383 base_provider = 'Qwen',
384 best_provider = IterListProvider([Airforce])
385 )
386
387 qwen_2_72b = Model(
388 name = 'qwen-2-72b',
389 base_provider = 'Qwen',
390 best_provider = IterListProvider([Airforce])
391 )
392
340 393 qwen_turbo = Model(
341 394 name = 'qwen-turbo',
342 395 base_provider = 'Qwen',
@@ -360,7 +413,10 @@ glm_4_9b = Model(
360 413 glm_4 = Model(
361 414 name = 'glm-4',
362 415 base_provider = 'Zhipu AI',
363 best_provider = IterListProvider([CodeNews, glm_4_9b.best_provider,])
416 best_provider = IterListProvider([
417 CodeNews,
418 glm_3_6b.best_provider, glm_4_9b.best_provider
419 ])
364 420 )
365 421
366 422 ### 01-ai ###
@@ -370,14 +426,20 @@ yi_1_5_9b = Model(
370 426 best_provider = IterListProvider([FreeChatgpt])
371 427 )
372 428
373
374 ### Pi ###
429 ### Upstage ###
375 430 solar_1_mini = Model(
376 431 name = 'solar-1-mini',
377 432 base_provider = 'Upstage',
378 433 best_provider = IterListProvider([Upstage])
379 434 )
380 435
436 solar_10_7b = Model(
437 name = 'solar-10-7b',
438 base_provider = 'Upstage',
439 best_provider = Airforce
440 )
441
442
381 443 ### Pi ###
382 444 pi = Model(
383 445 name = 'pi',
@@ -410,10 +472,22 @@ westlake_7b_v2 = Model(
410 472 deepseek = Model(
411 473 name = 'deepseek',
412 474 base_provider = 'DeepSeek',
413 best_provider = CodeNews
475 best_provider = IterListProvider([CodeNews, Airforce])
414 476 )
415 477
478 ### WizardLM ###
479 wizardlm_2_8x22b = Model(
480 name = 'wizardlm-2-8x22b',
481 base_provider = 'WizardLM',
482 best_provider = Airforce
483 )
416 484
485 ### Together ###
486 sh_n_7b = Model(
487 name = 'sh-n-7b',
488 base_provider = 'Together',
489 best_provider = Airforce
490 )
417 491
418 492 #############
419 493 ### Image ###
@@ -446,35 +520,42 @@ playground_v2_5 = Model(
446 520 flux = Model(
447 521 name = 'flux',
448 522 base_provider = 'Flux AI',
449 best_provider = IterListProvider([FluxAirforce])
523 best_provider = IterListProvider([Airforce])
450 524
451 525 )
452 526
453 527 flux_realism = Model(
454 528 name = 'flux-realism',
455 529 base_provider = 'Flux AI',
456 best_provider = IterListProvider([FluxAirforce])
530 best_provider = IterListProvider([Airforce])
457 531
458 532 )
459 533
460 534 flux_anime = Model(
461 535 name = 'flux-anime',
462 536 base_provider = 'Flux AI',
463 best_provider = IterListProvider([FluxAirforce])
537 best_provider = IterListProvider([Airforce])
464 538
465 539 )
466 540
467 541 flux_3d = Model(
468 542 name = 'flux-3d',
469 543 base_provider = 'Flux AI',
470 best_provider = IterListProvider([FluxAirforce])
544 best_provider = IterListProvider([Airforce])
471 545
472 546 )
473 547
474 548 flux_disney = Model(
475 549 name = 'flux-disney',
476 550 base_provider = 'Flux AI',
477 best_provider = IterListProvider([FluxAirforce])
551 best_provider = IterListProvider([Airforce])
552
553 )
554
555 flux_pixel = Model(
556 name = 'flux-pixel',
557 base_provider = 'Flux AI',
558 best_provider = IterListProvider([Airforce])
478 559
479 560 )
480 561
@@ -537,6 +618,9 @@ class ModelUtils:
537 618 ### Meta ###
538 619 "meta-ai": meta,
539 620
621 # llama-2
622 'llama-2-13b': llama_2_13b,
623
540 624 # llama-3
541 625 'llama-3-8b': llama_3_8b,
542 626 'llama-3-70b': llama_3_70b,
@@ -545,14 +629,19 @@ class ModelUtils:
545 629 'llama-3.1-8b': llama_3_1_8b,
546 630 'llama-3.1-70b': llama_3_1_70b,
547 631 'llama-3.1-405b': llama_3_1_405b,
632
548 633
549 634 ### Mistral ###
550 'mixtral-8x7b': mixtral_8x7b,
551 635 'mistral-7b': mistral_7b,
636 'mixtral-8x7b': mixtral_8x7b,
637 'mixtral-8x22b': mixtral_8x22b,
552 638
553 639
554 640 ### NousResearch ###
555 'mixtral-8x7b-dpo': mixtral_8x7b_dpo,
641 'mixtral-8x7b-dpo': mixtral_8x7b_dpo,
642
643 'yi-34b': yi_34b,
644
556 645
557 646 ### Microsoft ###
558 647 'phi-3-mini-4k': phi_3_mini_4k,
@@ -566,6 +655,8 @@ class ModelUtils:
566 655
567 656 # gemma
568 657 'gemma-2b': gemma_2b,
658 'gemma-2b-9b': gemma_2b_9b,
659 'gemma-2b-27b': gemma_2b_27b,
569 660
570 661
571 662 ### Anthropic ###
@@ -575,8 +666,8 @@ class ModelUtils:
575 666
576 667 'claude-3-opus': claude_3_opus,
577 668 'claude-3-sonnet': claude_3_sonnet,
578 'claude-3-5-sonnet': claude_3_5_sonnet,
579 669 'claude-3-haiku': claude_3_haiku,
670 'claude-3-5-sonnet': claude_3_5_sonnet,
580 671
581 672
582 673 ### Reka AI ###
@@ -605,6 +696,9 @@ class ModelUtils:
605 696
606 697 ### Qwen ###
607 698 'qwen-1.5-14b': qwen_1_5_14b,
699 'qwen-1.5-72b': qwen_1_5_72b,
700 'qwen-1.5-110b': qwen_1_5_110b,
701 'qwen-2-72b': qwen_2_72b,
608 702 'qwen-turbo': qwen_turbo,
609 703
610 704
@@ -620,6 +714,7 @@ class ModelUtils:
620 714
621 715 ### Upstage ###
622 716 'solar-1-mini': solar_1_mini,
717 'solar-10-7b': solar_10_7b,
623 718
624 719
625 720 ### Pi ###
@@ -640,6 +735,10 @@ class ModelUtils:
640 735
641 736 ### DeepSeek ###
642 737 'deepseek': deepseek,
738
739
740 ### Together ###
741 'sh-n-7b': sh_n_7b,
643 742
644 743
645 744
@@ -662,6 +761,7 @@ class ModelUtils:
662 761 'flux-anime': flux_anime,
663 762 'flux-3d': flux_3d,
664 763 'flux-disney': flux_disney,
764 'flux-pixel': flux_pixel,
665 765
666 766
667 767 ### ###