Skip to content

Commit 267123b

Browse files
committed
chore: add openai compatible providers with code gen
1 parent 25118cc commit 267123b

108 files changed

Lines changed: 10512 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/providers/302ai/capabilities.rs

Lines changed: 398 additions & 0 deletions
Large diffs are not rendered by default.

src/providers/302ai/mod.rs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
//! This module provides the Ai302 provider, wrapping OpenAI Chat Completions for Ai302 requests.
2+
3+
pub mod capabilities;
4+
5+
// Generate the settings module
6+
crate::openai_compatible_settings!(
7+
Ai302ProviderSettings,
8+
Ai302ProviderSettingsBuilder,
9+
"Ai302",
10+
"https://api.302.ai/v1",
11+
"302AI_API_KEY"
12+
);
13+
14+
// Generate the provider struct and builder
15+
crate::openai_compatible_provider!(
16+
Ai302,
17+
Ai302Builder,
18+
Ai302ProviderSettings,
19+
"302ai"
20+
);
21+
22+
// Generate the language model implementation
23+
crate::openai_compatible_language_model!(Ai302);

src/providers/abacus/capabilities.rs

Lines changed: 344 additions & 0 deletions
Large diffs are not rendered by default.

src/providers/abacus/mod.rs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
//! This module provides the Abacus provider, wrapping OpenAI Chat Completions for Abacus requests.
2+
3+
pub mod capabilities;
4+
5+
// Generate the settings module
6+
crate::openai_compatible_settings!(
7+
AbacusProviderSettings,
8+
AbacusProviderSettingsBuilder,
9+
"Abacus",
10+
"https://routellm.abacus.ai/v1",
11+
"ABACUS_API_KEY"
12+
);
13+
14+
// Generate the provider struct and builder
15+
crate::openai_compatible_provider!(
16+
Abacus,
17+
AbacusBuilder,
18+
AbacusProviderSettings,
19+
"abacus"
20+
);
21+
22+
// Generate the language model implementation
23+
crate::openai_compatible_language_model!(Abacus);
Lines changed: 236 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,236 @@
1+
//! Capabilities for aihubmix models.
2+
//!
3+
//! This module defines model types and their capabilities for aihubmix providers.
4+
//! Users can implement additional traits on custom models.
5+
6+
use crate::core::capabilities::*;
7+
use crate::model_capabilities;
8+
use crate::providers::aihubmix::Aihubmix;
9+
10+
model_capabilities! {
11+
provider: Aihubmix,
12+
models: {
13+
KimiK20905 {
14+
model_name: "Kimi-K2-0905",
15+
constructor_name: kimi_k2_0905,
16+
display_name: "Kimi K2 0905",
17+
capabilities: [TextInputSupport, TextOutputSupport, ToolCallSupport]
18+
},
19+
ClaudeHaiku45 {
20+
model_name: "claude-haiku-4-5",
21+
constructor_name: claude_haiku_4_5,
22+
display_name: "Claude Haiku 4.5",
23+
capabilities: [ImageInputSupport, ReasoningSupport, TextInputSupport, TextOutputSupport, ToolCallSupport]
24+
},
25+
ClaudeOpus41 {
26+
model_name: "claude-opus-4-1",
27+
constructor_name: claude_opus_4_1,
28+
display_name: "Claude Opus 4.1",
29+
capabilities: [ImageInputSupport, ReasoningSupport, TextInputSupport, TextOutputSupport, ToolCallSupport]
30+
},
31+
ClaudeOpus45 {
32+
model_name: "claude-opus-4-5",
33+
constructor_name: claude_opus_4_5,
34+
display_name: "Claude Opus 4.5",
35+
capabilities: [ImageInputSupport, ReasoningSupport, TextInputSupport, TextOutputSupport, ToolCallSupport]
36+
},
37+
ClaudeSonnet45 {
38+
model_name: "claude-sonnet-4-5",
39+
constructor_name: claude_sonnet_4_5,
40+
display_name: "Claude Sonnet 4.5",
41+
capabilities: [ImageInputSupport, ReasoningSupport, TextInputSupport, TextOutputSupport, ToolCallSupport]
42+
},
43+
CodingGlm47 {
44+
model_name: "coding-glm-4.7",
45+
constructor_name: coding_glm_4_7,
46+
display_name: "Coding-GLM-4.7",
47+
capabilities: [ReasoningSupport, TextInputSupport, TextOutputSupport, ToolCallSupport]
48+
},
49+
CodingGlm47Free {
50+
model_name: "coding-glm-4.7-free",
51+
constructor_name: coding_glm_4_7_free,
52+
display_name: "Coding GLM 4.7 Free",
53+
capabilities: [ReasoningSupport, TextInputSupport, TextOutputSupport, ToolCallSupport]
54+
},
55+
CodingMinimaxM21Free {
56+
model_name: "coding-minimax-m2.1-free",
57+
constructor_name: coding_minimax_m2_1_free,
58+
display_name: "Coding MiniMax M2.1 Free",
59+
capabilities: [ReasoningSupport, TextInputSupport, TextOutputSupport, ToolCallSupport]
60+
},
61+
DeepseekV32 {
62+
model_name: "deepseek-v3.2",
63+
constructor_name: deepseek_v3_2,
64+
display_name: "DeepSeek-V3.2",
65+
capabilities: [ReasoningSupport, TextInputSupport, TextOutputSupport, ToolCallSupport]
66+
},
67+
DeepseekV32Fast {
68+
model_name: "deepseek-v3.2-fast",
69+
constructor_name: deepseek_v3_2_fast,
70+
display_name: "DeepSeek-V3.2-Fast",
71+
capabilities: [TextInputSupport, TextOutputSupport]
72+
},
73+
DeepseekV32Think {
74+
model_name: "deepseek-v3.2-think",
75+
constructor_name: deepseek_v3_2_think,
76+
display_name: "DeepSeek-V3.2-Think",
77+
capabilities: [ReasoningSupport, TextInputSupport, TextOutputSupport, ToolCallSupport]
78+
},
79+
Gemini25Flash {
80+
model_name: "gemini-2.5-flash",
81+
constructor_name: gemini_2_5_flash,
82+
display_name: "Gemini 2.5 Flash",
83+
capabilities: [AudioInputSupport, ImageInputSupport, TextInputSupport, TextOutputSupport, ToolCallSupport, VideoInputSupport]
84+
},
85+
Gemini25Pro {
86+
model_name: "gemini-2.5-pro",
87+
constructor_name: gemini_2_5_pro,
88+
display_name: "Gemini 2.5 Pro",
89+
capabilities: [AudioInputSupport, ImageInputSupport, ReasoningSupport, TextInputSupport, TextOutputSupport, ToolCallSupport, VideoInputSupport]
90+
},
91+
Gemini3ProPreview {
92+
model_name: "gemini-3-pro-preview",
93+
constructor_name: gemini_3_pro_preview,
94+
display_name: "Gemini 3 Pro Preview",
95+
capabilities: [AudioInputSupport, ImageInputSupport, ReasoningSupport, TextInputSupport, TextOutputSupport, ToolCallSupport, VideoInputSupport]
96+
},
97+
Glm46v {
98+
model_name: "glm-4.6v",
99+
constructor_name: glm_4_6v,
100+
display_name: "GLM-4.6V",
101+
capabilities: [ImageInputSupport, ReasoningSupport, TextInputSupport, TextOutputSupport, ToolCallSupport, VideoInputSupport]
102+
},
103+
Glm47 {
104+
model_name: "glm-4.7",
105+
constructor_name: glm_4_7,
106+
display_name: "GLM-4.7",
107+
capabilities: [ReasoningSupport, TextInputSupport, TextOutputSupport, ToolCallSupport]
108+
},
109+
Gpt41 {
110+
model_name: "gpt-4.1",
111+
constructor_name: gpt_4_1,
112+
display_name: "GPT-4.1",
113+
capabilities: [ImageInputSupport, TextInputSupport, TextOutputSupport, ToolCallSupport]
114+
},
115+
Gpt41Mini {
116+
model_name: "gpt-4.1-mini",
117+
constructor_name: gpt_4_1_mini,
118+
display_name: "GPT-4.1 mini",
119+
capabilities: [ImageInputSupport, TextInputSupport, TextOutputSupport, ToolCallSupport]
120+
},
121+
Gpt41Nano {
122+
model_name: "gpt-4.1-nano",
123+
constructor_name: gpt_4_1_nano,
124+
display_name: "GPT-4.1 nano",
125+
capabilities: [ImageInputSupport, TextInputSupport, TextOutputSupport, ToolCallSupport]
126+
},
127+
Gpt4o {
128+
model_name: "gpt-4o",
129+
constructor_name: gpt_4o,
130+
display_name: "GPT-4o",
131+
capabilities: [ImageInputSupport, TextInputSupport, TextOutputSupport, ToolCallSupport]
132+
},
133+
Gpt5 {
134+
model_name: "gpt-5",
135+
constructor_name: gpt_5,
136+
display_name: "GPT-5",
137+
capabilities: [ImageInputSupport, ReasoningSupport, TextInputSupport, TextOutputSupport, ToolCallSupport]
138+
},
139+
Gpt5Codex {
140+
model_name: "gpt-5-codex",
141+
constructor_name: gpt_5_codex,
142+
display_name: "GPT-5-Codex",
143+
capabilities: [ImageInputSupport, ReasoningSupport, TextInputSupport, TextOutputSupport, ToolCallSupport]
144+
},
145+
Gpt5Mini {
146+
model_name: "gpt-5-mini",
147+
constructor_name: gpt_5_mini,
148+
display_name: "GPT-5-Mini",
149+
capabilities: [ImageInputSupport, ReasoningSupport, TextInputSupport, TextOutputSupport, ToolCallSupport]
150+
},
151+
Gpt5Nano {
152+
model_name: "gpt-5-nano",
153+
constructor_name: gpt_5_nano,
154+
display_name: "GPT-5-Nano",
155+
capabilities: [ImageInputSupport, TextInputSupport, TextOutputSupport, ToolCallSupport]
156+
},
157+
Gpt5Pro {
158+
model_name: "gpt-5-pro",
159+
constructor_name: gpt_5_pro,
160+
display_name: "GPT-5-Pro",
161+
capabilities: [ImageInputSupport, ReasoningSupport, TextInputSupport, TextOutputSupport, ToolCallSupport]
162+
},
163+
Gpt51 {
164+
model_name: "gpt-5.1",
165+
constructor_name: gpt_5_1,
166+
display_name: "GPT-5.1",
167+
capabilities: [ImageInputSupport, ReasoningSupport, TextInputSupport, TextOutputSupport, ToolCallSupport]
168+
},
169+
Gpt51Codex {
170+
model_name: "gpt-5.1-codex",
171+
constructor_name: gpt_5_1_codex,
172+
display_name: "GPT-5.1 Codex",
173+
capabilities: [ImageInputSupport, ReasoningSupport, TextInputSupport, TextOutputSupport, ToolCallSupport]
174+
},
175+
Gpt51CodexMax {
176+
model_name: "gpt-5.1-codex-max",
177+
constructor_name: gpt_5_1_codex_max,
178+
display_name: "GPT-5.1-Codex-Max",
179+
capabilities: [ImageInputSupport, ReasoningSupport, StructuredOutputSupport, TextInputSupport, TextOutputSupport, ToolCallSupport]
180+
},
181+
Gpt51CodexMini {
182+
model_name: "gpt-5.1-codex-mini",
183+
constructor_name: gpt_5_1_codex_mini,
184+
display_name: "GPT-5.1 Codex Mini",
185+
capabilities: [ImageInputSupport, ReasoningSupport, TextInputSupport, TextOutputSupport, ToolCallSupport]
186+
},
187+
Gpt52 {
188+
model_name: "gpt-5.2",
189+
constructor_name: gpt_5_2,
190+
display_name: "GPT-5.2",
191+
capabilities: [ImageInputSupport, ReasoningSupport, TextInputSupport, TextOutputSupport, ToolCallSupport]
192+
},
193+
KimiK25 {
194+
model_name: "kimi-k2.5",
195+
constructor_name: kimi_k2_5,
196+
display_name: "Kimi K2.5",
197+
capabilities: [ImageInputSupport, ReasoningSupport, TextInputSupport, TextOutputSupport, ToolCallSupport, VideoInputSupport]
198+
},
199+
MinimaxM21 {
200+
model_name: "minimax-m2.1",
201+
constructor_name: minimax_m2_1,
202+
display_name: "MiniMax M2.1",
203+
capabilities: [ReasoningSupport, TextInputSupport, TextOutputSupport, ToolCallSupport]
204+
},
205+
O4Mini {
206+
model_name: "o4-mini",
207+
constructor_name: o4_mini,
208+
display_name: "o4-mini",
209+
capabilities: [ReasoningSupport, TextInputSupport, TextOutputSupport]
210+
},
211+
Qwen3235bA22bInstruct2507 {
212+
model_name: "qwen3-235b-a22b-instruct-2507",
213+
constructor_name: qwen3_235b_a22b_instruct_2507,
214+
display_name: "Qwen3 235B A22B Instruct 2507",
215+
capabilities: [TextInputSupport, TextOutputSupport, ToolCallSupport]
216+
},
217+
Qwen3235bA22bThinking2507 {
218+
model_name: "qwen3-235b-a22b-thinking-2507",
219+
constructor_name: qwen3_235b_a22b_thinking_2507,
220+
display_name: "Qwen3 235B A22B Thinking 2507",
221+
capabilities: [ReasoningSupport, TextInputSupport, TextOutputSupport, ToolCallSupport]
222+
},
223+
Qwen3Coder480bA35bInstruct {
224+
model_name: "qwen3-coder-480b-a35b-instruct",
225+
constructor_name: qwen3_coder_480b_a35b_instruct,
226+
display_name: "Qwen3 Coder 480B A35B Instruct",
227+
capabilities: [TextInputSupport, TextOutputSupport, ToolCallSupport]
228+
},
229+
Qwen3Max20260123 {
230+
model_name: "qwen3-max-2026-01-23",
231+
constructor_name: qwen3_max_2026_01_23,
232+
display_name: "Qwen3 Max",
233+
capabilities: [TextInputSupport, TextOutputSupport, ToolCallSupport]
234+
},
235+
}
236+
}

src/providers/aihubmix/mod.rs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
//! This module provides the Aihubmix provider, wrapping OpenAI Chat Completions for Aihubmix requests.
2+
3+
pub mod capabilities;
4+
5+
// Generate the settings module
6+
crate::openai_compatible_settings!(
7+
AihubmixProviderSettings,
8+
AihubmixProviderSettingsBuilder,
9+
"Aihubmix",
10+
"https://aihubmix.com/v1",
11+
"AIHUBMIX_API_KEY"
12+
);
13+
14+
// Generate the provider struct and builder
15+
crate::openai_compatible_provider!(
16+
Aihubmix,
17+
AihubmixBuilder,
18+
AihubmixProviderSettings,
19+
"aihubmix"
20+
);
21+
22+
// Generate the language model implementation
23+
crate::openai_compatible_language_model!(Aihubmix);

0 commit comments

Comments
 (0)