synaptic_openai/
compat.rs1use std::sync::Arc;
8
9use synaptic_models::ProviderBackend;
10
11use crate::{OpenAiChatModel, OpenAiConfig, OpenAiEmbeddings, OpenAiEmbeddingsConfig};
12
13pub fn groq_config(api_key: impl Into<String>, model: impl Into<String>) -> OpenAiConfig {
19 OpenAiConfig::new(api_key, model).with_base_url("https://api.groq.com/openai/v1")
20}
21
22pub fn groq_chat_model(
24 api_key: impl Into<String>,
25 model: impl Into<String>,
26 backend: Arc<dyn ProviderBackend>,
27) -> OpenAiChatModel {
28 OpenAiChatModel::new(groq_config(api_key, model), backend)
29}
30
31pub fn deepseek_config(api_key: impl Into<String>, model: impl Into<String>) -> OpenAiConfig {
37 OpenAiConfig::new(api_key, model).with_base_url("https://api.deepseek.com/v1")
38}
39
40pub fn deepseek_chat_model(
42 api_key: impl Into<String>,
43 model: impl Into<String>,
44 backend: Arc<dyn ProviderBackend>,
45) -> OpenAiChatModel {
46 OpenAiChatModel::new(deepseek_config(api_key, model), backend)
47}
48
49pub fn fireworks_config(api_key: impl Into<String>, model: impl Into<String>) -> OpenAiConfig {
55 OpenAiConfig::new(api_key, model).with_base_url("https://api.fireworks.ai/inference/v1")
56}
57
58pub fn fireworks_chat_model(
60 api_key: impl Into<String>,
61 model: impl Into<String>,
62 backend: Arc<dyn ProviderBackend>,
63) -> OpenAiChatModel {
64 OpenAiChatModel::new(fireworks_config(api_key, model), backend)
65}
66
67pub fn together_config(api_key: impl Into<String>, model: impl Into<String>) -> OpenAiConfig {
73 OpenAiConfig::new(api_key, model).with_base_url("https://api.together.xyz/v1")
74}
75
76pub fn together_chat_model(
78 api_key: impl Into<String>,
79 model: impl Into<String>,
80 backend: Arc<dyn ProviderBackend>,
81) -> OpenAiChatModel {
82 OpenAiChatModel::new(together_config(api_key, model), backend)
83}
84
85pub fn xai_config(api_key: impl Into<String>, model: impl Into<String>) -> OpenAiConfig {
91 OpenAiConfig::new(api_key, model).with_base_url("https://api.x.ai/v1")
92}
93
94pub fn xai_chat_model(
96 api_key: impl Into<String>,
97 model: impl Into<String>,
98 backend: Arc<dyn ProviderBackend>,
99) -> OpenAiChatModel {
100 OpenAiChatModel::new(xai_config(api_key, model), backend)
101}
102
103pub fn mistral_config(api_key: impl Into<String>, model: impl Into<String>) -> OpenAiConfig {
109 OpenAiConfig::new(api_key, model).with_base_url("https://api.mistral.ai/v1")
110}
111
112pub fn mistral_chat_model(
114 api_key: impl Into<String>,
115 model: impl Into<String>,
116 backend: Arc<dyn ProviderBackend>,
117) -> OpenAiChatModel {
118 OpenAiChatModel::new(mistral_config(api_key, model), backend)
119}
120
121pub fn mistral_embeddings_config(api_key: impl Into<String>) -> OpenAiEmbeddingsConfig {
123 OpenAiEmbeddingsConfig::new(api_key).with_base_url("https://api.mistral.ai/v1")
124}
125
126pub fn mistral_embeddings(
128 api_key: impl Into<String>,
129 backend: Arc<dyn ProviderBackend>,
130) -> OpenAiEmbeddings {
131 OpenAiEmbeddings::new(mistral_embeddings_config(api_key), backend)
132}
133
134pub fn huggingface_config(api_key: impl Into<String>, model: impl Into<String>) -> OpenAiConfig {
140 OpenAiConfig::new(api_key, model).with_base_url("https://router.huggingface.co/v1")
141}
142
143pub fn huggingface_chat_model(
145 api_key: impl Into<String>,
146 model: impl Into<String>,
147 backend: Arc<dyn ProviderBackend>,
148) -> OpenAiChatModel {
149 OpenAiChatModel::new(huggingface_config(api_key, model), backend)
150}
151
152pub fn huggingface_embeddings_config(api_key: impl Into<String>) -> OpenAiEmbeddingsConfig {
154 OpenAiEmbeddingsConfig::new(api_key).with_base_url("https://router.huggingface.co/v1")
155}
156
157pub fn huggingface_embeddings(
159 api_key: impl Into<String>,
160 backend: Arc<dyn ProviderBackend>,
161) -> OpenAiEmbeddings {
162 OpenAiEmbeddings::new(huggingface_embeddings_config(api_key), backend)
163}
164
165pub fn cohere_config(api_key: impl Into<String>, model: impl Into<String>) -> OpenAiConfig {
171 OpenAiConfig::new(api_key, model).with_base_url("https://api.cohere.ai/compatibility/v1")
172}
173
174pub fn cohere_chat_model(
176 api_key: impl Into<String>,
177 model: impl Into<String>,
178 backend: Arc<dyn ProviderBackend>,
179) -> OpenAiChatModel {
180 OpenAiChatModel::new(cohere_config(api_key, model), backend)
181}
182
183pub fn cohere_embeddings_config(api_key: impl Into<String>) -> OpenAiEmbeddingsConfig {
185 OpenAiEmbeddingsConfig::new(api_key).with_base_url("https://api.cohere.ai/compatibility/v1")
186}
187
188pub fn cohere_embeddings(
190 api_key: impl Into<String>,
191 backend: Arc<dyn ProviderBackend>,
192) -> OpenAiEmbeddings {
193 OpenAiEmbeddings::new(cohere_embeddings_config(api_key), backend)
194}
195
196pub fn openrouter_config(api_key: impl Into<String>, model: impl Into<String>) -> OpenAiConfig {
202 OpenAiConfig::new(api_key, model).with_base_url("https://openrouter.ai/api/v1")
203}
204
205pub fn openrouter_chat_model(
207 api_key: impl Into<String>,
208 model: impl Into<String>,
209 backend: Arc<dyn ProviderBackend>,
210) -> OpenAiChatModel {
211 OpenAiChatModel::new(openrouter_config(api_key, model), backend)
212}