@anolilab/ai-model-registry 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/LICENSE.md +391 -0
- package/README.md +585 -0
- package/dist/icons-sprite.d.ts +9 -0
- package/dist/icons-sprite.js +86 -0
- package/dist/index.d.ts +64 -0
- package/dist/index.js +16 -0
- package/dist/schema.d.ts +90 -0
- package/dist/schema.js +1 -0
- package/package.json +86 -0
- package/public/api.json +52491 -0
package/README.md
ADDED
|
@@ -0,0 +1,585 @@
|
|
|
1
|
+
# @anolilab/ai-model-registry
|
|
2
|
+
|
|
3
|
+
[](https://badge.fury.io/js/@anolilab%2Fai-model-registry)
|
|
4
|
+
[](https://opensource.org/licenses/Apache-2.0)
|
|
5
|
+
[](https://www.typescriptlang.org/)
|
|
6
|
+
|
|
7
|
+
A comprehensive, unified registry for AI model providers and their metadata. This package provides a tree-shakable interface to access model information from 50+ AI providers including OpenAI, Anthropic, Google, Meta, Groq, and many others.
|
|
8
|
+
|
|
9
|
+
## ✨ Features
|
|
10
|
+
|
|
11
|
+
- **🔄 Unified Interface**: Access models from multiple providers through a single API
|
|
12
|
+
- **🛡️ Type Safety**: Full TypeScript support with Zod schema validation
|
|
13
|
+
- **📦 Tree Shaking**: Import only what you need to minimize bundle size
|
|
14
|
+
- **💰 Rich Metadata**: Comprehensive model information including capabilities, pricing, and limits
|
|
15
|
+
- **🔍 Powerful Search**: Advanced search and filtering capabilities across all models
|
|
16
|
+
- **🔄 Auto-Sync**: Automatic data synchronization between models with the same ID
|
|
17
|
+
- **💸 Pricing Integration**: Real-time pricing data from Helicone API (840+ models)
|
|
18
|
+
- **📊 Provider Stats**: Detailed statistics and analytics
|
|
19
|
+
|
|
20
|
+
## 📦 Installation
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
# Using npm
|
|
24
|
+
npm install @anolilab/ai-model-registry
|
|
25
|
+
|
|
26
|
+
# Using yarn
|
|
27
|
+
yarn add @anolilab/ai-model-registry
|
|
28
|
+
|
|
29
|
+
# Using pnpm
|
|
30
|
+
pnpm add @anolilab/ai-model-registry
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## 🚀 Quick Start
|
|
34
|
+
|
|
35
|
+
```typescript
|
|
36
|
+
import { getProviders, getModelsByProvider, getModelById, searchModels, getAllModels } from "@anolilab/ai-model-registry";
|
|
37
|
+
|
|
38
|
+
// Get all available providers
|
|
39
|
+
const providers = getProviders();
|
|
40
|
+
console.log(providers);
|
|
41
|
+
// ['Anthropic', 'Google', 'Groq', 'Meta', 'OpenAI', 'DeepSeek', ...]
|
|
42
|
+
|
|
43
|
+
// Get all models from a specific provider
|
|
44
|
+
const anthropicModels = getModelsByProvider("Anthropic");
|
|
45
|
+
console.log(`Found ${anthropicModels.length} Anthropic models`);
|
|
46
|
+
|
|
47
|
+
// Get a specific model by ID
|
|
48
|
+
const model = getModelById("claude-3-opus-20240229");
|
|
49
|
+
if (model) {
|
|
50
|
+
console.log(`Model: ${model.name}`);
|
|
51
|
+
console.log(`Provider: ${model.provider}`);
|
|
52
|
+
console.log(`Cost: $${model.cost.input}/1K input, $${model.cost.output}/1K output`);
|
|
53
|
+
console.log(`Context: ${model.limit.context?.toLocaleString()} tokens`);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// Search for models with specific capabilities
|
|
57
|
+
const visionModels = searchModels({ vision: true });
|
|
58
|
+
const reasoningModels = searchModels({ reasoning: true });
|
|
59
|
+
const toolCallModels = searchModels({ tool_call: true });
|
|
60
|
+
|
|
61
|
+
// Get all models for advanced filtering
|
|
62
|
+
const allModels = getAllModels();
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## 📚 API Reference
|
|
66
|
+
|
|
67
|
+
### Core Functions
|
|
68
|
+
|
|
69
|
+
#### `getProviders(): string[]`
|
|
70
|
+
|
|
71
|
+
Returns an array of all available provider names.
|
|
72
|
+
|
|
73
|
+
```typescript
|
|
74
|
+
const providers = getProviders();
|
|
75
|
+
// ['Anthropic', 'Google', 'Groq', 'Meta', 'OpenAI', ...]
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
#### `getModelsByProvider(provider: string): Model[]`
|
|
79
|
+
|
|
80
|
+
Returns all models for a specific provider.
|
|
81
|
+
|
|
82
|
+
```typescript
|
|
83
|
+
const openAIModels = getModelsByProvider("OpenAI");
|
|
84
|
+
const anthropicModels = getModelsByProvider("Anthropic");
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
#### `getModelById(id: string): Model | undefined`
|
|
88
|
+
|
|
89
|
+
Returns a specific model by its ID, or `undefined` if not found.
|
|
90
|
+
|
|
91
|
+
```typescript
|
|
92
|
+
const gpt4 = getModelById("gpt-4");
|
|
93
|
+
const claude = getModelById("claude-3-opus-20240229");
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
#### `getAllModels(): Model[]`
|
|
97
|
+
|
|
98
|
+
Returns all models (useful for advanced filtering and custom logic).
|
|
99
|
+
|
|
100
|
+
```typescript
|
|
101
|
+
const allModels = getAllModels();
|
|
102
|
+
const expensiveModels = allModels.filter((model) => (model.cost.input || 0) > 0.1 || (model.cost.output || 0) > 0.1);
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
#### `getProviderStats(): Record<string, number>`
|
|
106
|
+
|
|
107
|
+
Returns provider statistics with model counts.
|
|
108
|
+
|
|
109
|
+
```typescript
|
|
110
|
+
const stats = getProviderStats();
|
|
111
|
+
console.log(stats);
|
|
112
|
+
// {
|
|
113
|
+
// 'OpenAI': 15,
|
|
114
|
+
// 'Anthropic': 8,
|
|
115
|
+
// 'Google': 12,
|
|
116
|
+
// 'Meta': 25,
|
|
117
|
+
// ...
|
|
118
|
+
// }
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### Advanced Search
|
|
122
|
+
|
|
123
|
+
#### `searchModels(criteria: SearchCriteria): Model[]`
|
|
124
|
+
|
|
125
|
+
Search models by various criteria with powerful filtering options.
|
|
126
|
+
|
|
127
|
+
```typescript
|
|
128
|
+
interface SearchCriteria {
|
|
129
|
+
// Capability filters
|
|
130
|
+
vision?: boolean;
|
|
131
|
+
reasoning?: boolean;
|
|
132
|
+
tool_call?: boolean;
|
|
133
|
+
streaming_supported?: boolean;
|
|
134
|
+
preview?: boolean;
|
|
135
|
+
|
|
136
|
+
// Provider filter
|
|
137
|
+
provider?: string;
|
|
138
|
+
|
|
139
|
+
// Modality filters
|
|
140
|
+
modalities?: {
|
|
141
|
+
input?: string[];
|
|
142
|
+
output?: string[];
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
// Context window filters
|
|
146
|
+
context_min?: number;
|
|
147
|
+
context_max?: number;
|
|
148
|
+
|
|
149
|
+
// Cost filters
|
|
150
|
+
max_input_cost?: number;
|
|
151
|
+
max_output_cost?: number;
|
|
152
|
+
}
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
#### Search Examples
|
|
156
|
+
|
|
157
|
+
```typescript
|
|
158
|
+
// Find all vision-capable models
|
|
159
|
+
const visionModels = searchModels({ vision: true });
|
|
160
|
+
|
|
161
|
+
// Find models with reasoning capabilities
|
|
162
|
+
const reasoningModels = searchModels({ reasoning: true });
|
|
163
|
+
|
|
164
|
+
// Find models that support tool calling
|
|
165
|
+
const toolCallModels = searchModels({ tool_call: true });
|
|
166
|
+
|
|
167
|
+
// Find models from a specific provider
|
|
168
|
+
const openAIModels = searchModels({ provider: "OpenAI" });
|
|
169
|
+
|
|
170
|
+
// Find models with large context windows
|
|
171
|
+
const largeContextModels = searchModels({ context_min: 100000 });
|
|
172
|
+
|
|
173
|
+
// Find affordable models
|
|
174
|
+
const affordableModels = searchModels({
|
|
175
|
+
max_input_cost: 0.01,
|
|
176
|
+
max_output_cost: 0.02,
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
// Find models that accept text and image input
|
|
180
|
+
const multimodalModels = searchModels({
|
|
181
|
+
modalities: {
|
|
182
|
+
input: ["text", "image"],
|
|
183
|
+
},
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
// Find models with streaming support
|
|
187
|
+
const streamingModels = searchModels({ streaming_supported: true });
|
|
188
|
+
|
|
189
|
+
// Find preview/beta models
|
|
190
|
+
const previewModels = searchModels({ preview: true });
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
## 🏗️ Model Schema
|
|
194
|
+
|
|
195
|
+
Each model follows a comprehensive schema with the following structure:
|
|
196
|
+
|
|
197
|
+
```typescript
|
|
198
|
+
interface Model {
|
|
199
|
+
// Core identification
|
|
200
|
+
id: string;
|
|
201
|
+
name: string | null;
|
|
202
|
+
provider?: string;
|
|
203
|
+
providerId?: string;
|
|
204
|
+
|
|
205
|
+
// Provider metadata
|
|
206
|
+
providerEnv?: string[];
|
|
207
|
+
providerNpm?: string;
|
|
208
|
+
providerDoc?: string;
|
|
209
|
+
providerModelsDevId?: string;
|
|
210
|
+
|
|
211
|
+
// Date information
|
|
212
|
+
releaseDate?: string | null;
|
|
213
|
+
lastUpdated?: string | null;
|
|
214
|
+
launchDate?: string;
|
|
215
|
+
trainingCutoff?: string | null;
|
|
216
|
+
|
|
217
|
+
// Capabilities
|
|
218
|
+
attachment: boolean;
|
|
219
|
+
reasoning: boolean;
|
|
220
|
+
temperature: boolean;
|
|
221
|
+
toolCall: boolean;
|
|
222
|
+
openWeights: boolean;
|
|
223
|
+
vision?: boolean;
|
|
224
|
+
extendedThinking?: boolean;
|
|
225
|
+
preview?: boolean;
|
|
226
|
+
|
|
227
|
+
// Knowledge and context
|
|
228
|
+
knowledge?: string | null;
|
|
229
|
+
|
|
230
|
+
// Pricing structure
|
|
231
|
+
cost: {
|
|
232
|
+
input: number | null; // per 1K tokens
|
|
233
|
+
output: number | null; // per 1K tokens
|
|
234
|
+
inputCacheHit: number | null; // cache hit pricing
|
|
235
|
+
imageGeneration?: number | null;
|
|
236
|
+
imageGenerationUltra?: number | null;
|
|
237
|
+
videoGeneration?: number | null;
|
|
238
|
+
videoGenerationWithAudio?: number | null;
|
|
239
|
+
videoGenerationWithoutAudio?: number | null;
|
|
240
|
+
};
|
|
241
|
+
|
|
242
|
+
// Limits
|
|
243
|
+
limit: {
|
|
244
|
+
context: number | null; // max tokens
|
|
245
|
+
output: number | null; // max tokens
|
|
246
|
+
};
|
|
247
|
+
|
|
248
|
+
// Modalities
|
|
249
|
+
modalities: {
|
|
250
|
+
input: string[]; // ['text', 'image', 'audio', ...]
|
|
251
|
+
output: string[]; // ['text', 'image', 'audio', ...]
|
|
252
|
+
};
|
|
253
|
+
|
|
254
|
+
// Infrastructure
|
|
255
|
+
regions?: string[];
|
|
256
|
+
streamingSupported?: boolean | null;
|
|
257
|
+
deploymentType?: string;
|
|
258
|
+
version?: string | null;
|
|
259
|
+
|
|
260
|
+
// Provider-specific capabilities
|
|
261
|
+
cacheRead?: boolean;
|
|
262
|
+
codeExecution?: boolean;
|
|
263
|
+
searchGrounding?: boolean;
|
|
264
|
+
structuredOutputs?: boolean;
|
|
265
|
+
batchMode?: boolean;
|
|
266
|
+
audioGeneration?: boolean;
|
|
267
|
+
imageGeneration?: boolean;
|
|
268
|
+
compoundSystem?: boolean;
|
|
269
|
+
|
|
270
|
+
// Version management
|
|
271
|
+
versions?: {
|
|
272
|
+
stable?: string | null;
|
|
273
|
+
preview?: string | null;
|
|
274
|
+
};
|
|
275
|
+
|
|
276
|
+
// Additional metadata
|
|
277
|
+
description?: string;
|
|
278
|
+
ownedBy?: string;
|
|
279
|
+
originalModelId?: string;
|
|
280
|
+
providerStatus?: string;
|
|
281
|
+
supportsTools?: boolean;
|
|
282
|
+
supportsStructuredOutput?: boolean;
|
|
283
|
+
}
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
## 🌳 Tree Shaking
|
|
287
|
+
|
|
288
|
+
The package supports tree shaking, so you can import only what you need:
|
|
289
|
+
|
|
290
|
+
```typescript
|
|
291
|
+
// Only import specific functions
|
|
292
|
+
import { getProviders, getModelById } from "@anolilab/ai-model-registry";
|
|
293
|
+
|
|
294
|
+
// Import schema for validation
|
|
295
|
+
import { ModelSchema } from "@anolilab/ai-model-registry/schema";
|
|
296
|
+
|
|
297
|
+
// Import icons (if needed)
|
|
298
|
+
import { getIcon } from "@anolilab/ai-model-registry/icons";
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
## 🏢 Supported Providers
|
|
302
|
+
|
|
303
|
+
The registry includes models from 50+ providers:
|
|
304
|
+
|
|
305
|
+
### Major Providers
|
|
306
|
+
|
|
307
|
+
- **OpenAI** (GPT-4, GPT-3.5, O1, O3, etc.)
|
|
308
|
+
- **Anthropic** (Claude 3.5, Claude 3, Claude 2.1, etc.)
|
|
309
|
+
- **Google** (Gemini 2.5, Gemini 1.5, PaLM, etc.)
|
|
310
|
+
- **Meta** (Llama 3, Llama 2, Code Llama, etc.)
|
|
311
|
+
- **Groq** (Various models with ultra-fast inference)
|
|
312
|
+
- **DeepSeek** (DeepSeek R1, DeepSeek V3, etc.)
|
|
313
|
+
|
|
314
|
+
### Specialized Providers
|
|
315
|
+
|
|
316
|
+
- **Mistral AI** (Mistral Large, Mixtral, etc.)
|
|
317
|
+
- **Cohere** (Command R, Command A, etc.)
|
|
318
|
+
- **Perplexity** (Sonar, Sonar Pro, etc.)
|
|
319
|
+
- **Together AI** (Various open models)
|
|
320
|
+
- **Fireworks AI** (Various models)
|
|
321
|
+
- **Vercel** (v0 models)
|
|
322
|
+
|
|
323
|
+
### Open Source & Research
|
|
324
|
+
|
|
325
|
+
- **HuggingFace** (Various hosted models)
|
|
326
|
+
- **ModelScope** (Chinese models)
|
|
327
|
+
- **OpenRouter** (Aggregated models)
|
|
328
|
+
- **GitHub Copilot** (Code models)
|
|
329
|
+
- **Azure** (OpenAI models)
|
|
330
|
+
|
|
331
|
+
And many more...
|
|
332
|
+
|
|
333
|
+
## 🛠️ Development
|
|
334
|
+
|
|
335
|
+
### Prerequisites
|
|
336
|
+
|
|
337
|
+
- Node.js 20+
|
|
338
|
+
- pnpm (recommended) or npm
|
|
339
|
+
|
|
340
|
+
### Setup
|
|
341
|
+
|
|
342
|
+
```bash
|
|
343
|
+
# Clone the repository
|
|
344
|
+
git clone https://github.com/anolilab/ai-models.git
|
|
345
|
+
cd ai-models
|
|
346
|
+
|
|
347
|
+
# Install dependencies
|
|
348
|
+
pnpm install
|
|
349
|
+
|
|
350
|
+
# Complete build process
|
|
351
|
+
pnpm run download # Download provider data
|
|
352
|
+
pnpm run aggregate # Aggregate and enrich data
|
|
353
|
+
pnpm run generate-icons # Generate provider icons
|
|
354
|
+
pnpm run build # Build the package
|
|
355
|
+
|
|
356
|
+
# Run tests
|
|
357
|
+
pnpm test
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
### Build Process
|
|
361
|
+
|
|
362
|
+
The complete build process involves several steps to download, aggregate, and generate all necessary data:
|
|
363
|
+
|
|
364
|
+
```bash
|
|
365
|
+
# 1. Download provider data
|
|
366
|
+
pnpm run download
|
|
367
|
+
|
|
368
|
+
# 2. Aggregate and enrich provider data (includes pricing from Helicone API)
|
|
369
|
+
pnpm run aggregate
|
|
370
|
+
|
|
371
|
+
# 3. Generate provider icons
|
|
372
|
+
pnpm run generate-icons
|
|
373
|
+
|
|
374
|
+
# 4. Build the package
|
|
375
|
+
pnpm run build
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
#### What Each Step Does
|
|
379
|
+
|
|
380
|
+
1. **Download (`pnpm run download`)**: Downloads model data from various AI providers using transformers in `scripts/download/transformers/`. This creates the raw provider data in `data/providers/`.
|
|
381
|
+
|
|
382
|
+
2. **Aggregate (`pnpm run aggregate`)**:
|
|
383
|
+
- Reads all provider data from `data/providers/`
|
|
384
|
+
- Fetches pricing data from Helicone API
|
|
385
|
+
- Enriches models with icon information
|
|
386
|
+
- Synchronizes data between models with the same ID
|
|
387
|
+
- Generates `data/all-models.json` and `src/models-data.ts`
|
|
388
|
+
|
|
389
|
+
3. **Generate Icons (`pnpm run generate-icons`)**:
|
|
390
|
+
- Creates SVG sprite sheet from LobeHub icons and custom icons
|
|
391
|
+
- Generates `src/icons-sprite.ts` with icon mappings
|
|
392
|
+
- Provides fallback icons for providers without official icons
|
|
393
|
+
|
|
394
|
+
4. **Build (`pnpm run build`)**:
|
|
395
|
+
- Compiles TypeScript to JavaScript
|
|
396
|
+
- Generates type definitions
|
|
397
|
+
- Creates the final distributable package
|
|
398
|
+
|
|
399
|
+
### Available Scripts
|
|
400
|
+
|
|
401
|
+
```bash
|
|
402
|
+
# Download provider data from various sources
|
|
403
|
+
pnpm run download
|
|
404
|
+
|
|
405
|
+
# Download data for a specific provider
|
|
406
|
+
pnpm run download --provider openai
|
|
407
|
+
pnpm run download --provider anthropic
|
|
408
|
+
|
|
409
|
+
# Aggregate provider data (includes pricing enrichment and synchronization)
|
|
410
|
+
pnpm run aggregate
|
|
411
|
+
|
|
412
|
+
# Generate provider icons
|
|
413
|
+
pnpm run generate-icons
|
|
414
|
+
|
|
415
|
+
# Build the package
|
|
416
|
+
pnpm run build
|
|
417
|
+
|
|
418
|
+
# Build for production
|
|
419
|
+
pnpm run build:prod
|
|
420
|
+
|
|
421
|
+
# Run tests
|
|
422
|
+
pnpm test
|
|
423
|
+
|
|
424
|
+
# Run tests with coverage
|
|
425
|
+
pnpm run test:coverage
|
|
426
|
+
|
|
427
|
+
# Lint code
|
|
428
|
+
pnpm run lint:eslint
|
|
429
|
+
|
|
430
|
+
# Type check
|
|
431
|
+
pnpm run lint:types
|
|
432
|
+
```
|
|
433
|
+
|
|
434
|
+
### Project Structure
|
|
435
|
+
|
|
436
|
+
```
|
|
437
|
+
packages/ai-model-registry/
|
|
438
|
+
├── src/
|
|
439
|
+
│ ├── index.ts # Main exports
|
|
440
|
+
│ ├── schema.ts # Model schema definitions
|
|
441
|
+
│ └── models-data.ts # Generated model data
|
|
442
|
+
├── scripts/
|
|
443
|
+
│ ├── aggregate-providers.ts # Data aggregation script
|
|
444
|
+
│ ├── generate-svg-sprite.ts # Icon generation
|
|
445
|
+
│ └── download/ # Provider data downloaders
|
|
446
|
+
├── data/
|
|
447
|
+
│ ├── all-models.json # Generated model data
|
|
448
|
+
│ └── providers/ # Raw provider data
|
|
449
|
+
└── assets/
|
|
450
|
+
└── icons/ # Provider icons
|
|
451
|
+
```
|
|
452
|
+
|
|
453
|
+
## 💰 Pricing Data Integration
|
|
454
|
+
|
|
455
|
+
This package automatically includes real-time pricing data from [Helicone's LLM Cost API](https://helicone.ai/api/llm-costs) during the aggregation process.
|
|
456
|
+
|
|
457
|
+
### Features
|
|
458
|
+
|
|
459
|
+
- **🔄 Automatic Enrichment**: Pricing data is automatically added during aggregation
|
|
460
|
+
- **🎯 Smart Matching**: Uses multiple strategies to match models with pricing data
|
|
461
|
+
- **🛡️ Non-Destructive**: Preserves existing pricing data while filling in missing values
|
|
462
|
+
- **🔄 Cost Conversion**: Automatically converts from per 1M tokens to per 1K tokens format
|
|
463
|
+
- **📊 840+ Models**: Covers pricing for 840+ models across all major providers
|
|
464
|
+
|
|
465
|
+
### Supported Pricing Providers
|
|
466
|
+
|
|
467
|
+
Helicone provides pricing data for models from:
|
|
468
|
+
|
|
469
|
+
- OpenAI (GPT-4, GPT-3.5, O1, O3, etc.)
|
|
470
|
+
- Anthropic (Claude models)
|
|
471
|
+
- Google (Gemini models)
|
|
472
|
+
- Meta (Llama models)
|
|
473
|
+
- Mistral (Mistral models)
|
|
474
|
+
- Groq (Various models)
|
|
475
|
+
- And many more...
|
|
476
|
+
|
|
477
|
+
### Usage
|
|
478
|
+
|
|
479
|
+
```bash
|
|
480
|
+
# Aggregate all models with pricing data
|
|
481
|
+
pnpm run aggregate
|
|
482
|
+
|
|
483
|
+
# Build the package (includes aggregation with pricing)
|
|
484
|
+
pnpm run build
|
|
485
|
+
```
|
|
486
|
+
|
|
487
|
+
## 🔄 Model Data Synchronization
|
|
488
|
+
|
|
489
|
+
The provider registry includes a powerful data synchronization system that automatically merges missing data between models with the same ID across different providers.
|
|
490
|
+
|
|
491
|
+
### How It Works
|
|
492
|
+
|
|
493
|
+
1. **Groups models by ID**: Finds all models with the same ID across different providers
|
|
494
|
+
2. **Calculates completeness scores**: Evaluates how complete each model's data is (excluding cost fields)
|
|
495
|
+
3. **Uses the most complete model as base**: Selects the model with the highest data completeness
|
|
496
|
+
4. **Merges missing data**: Fills in missing fields from other models with the same ID
|
|
497
|
+
5. **Preserves cost data**: Never overwrites existing cost information
|
|
498
|
+
|
|
499
|
+
### Protected Fields
|
|
500
|
+
|
|
501
|
+
The following cost-related fields are **never synchronized** to preserve pricing accuracy:
|
|
502
|
+
|
|
503
|
+
- `cost` (entire cost object)
|
|
504
|
+
- `input` (input cost)
|
|
505
|
+
- `output` (output cost)
|
|
506
|
+
- `inputCacheHit` (cache hit pricing)
|
|
507
|
+
- `imageGeneration` (image generation pricing)
|
|
508
|
+
- `videoGeneration` (video generation pricing)
|
|
509
|
+
|
|
510
|
+
### Example
|
|
511
|
+
|
|
512
|
+
If you have the same model (e.g., `gpt-4`) from multiple providers:
|
|
513
|
+
|
|
514
|
+
**OpenAI Provider:**
|
|
515
|
+
|
|
516
|
+
```json
|
|
517
|
+
{
|
|
518
|
+
"id": "gpt-4",
|
|
519
|
+
"name": "GPT-4",
|
|
520
|
+
"cost": { "input": 0.03, "output": 0.06 },
|
|
521
|
+
"description": null,
|
|
522
|
+
"releaseDate": "2023-03-14"
|
|
523
|
+
}
|
|
524
|
+
```
|
|
525
|
+
|
|
526
|
+
**Azure Provider:**
|
|
527
|
+
|
|
528
|
+
```json
|
|
529
|
+
{
|
|
530
|
+
"id": "gpt-4",
|
|
531
|
+
"name": null,
|
|
532
|
+
"cost": { "input": 0.03, "output": 0.06 },
|
|
533
|
+
"description": "GPT-4 is a large multimodal model",
|
|
534
|
+
"releaseDate": null
|
|
535
|
+
}
|
|
536
|
+
```
|
|
537
|
+
|
|
538
|
+
**Result after synchronization:**
|
|
539
|
+
|
|
540
|
+
```json
|
|
541
|
+
{
|
|
542
|
+
"id": "gpt-4",
|
|
543
|
+
"name": "GPT-4",
|
|
544
|
+
"cost": { "input": 0.03, "output": 0.06 },
|
|
545
|
+
"description": "GPT-4 is a large multimodal model",
|
|
546
|
+
"releaseDate": "2023-03-14"
|
|
547
|
+
}
|
|
548
|
+
```
|
|
549
|
+
|
|
550
|
+
## 🤝 Contributing
|
|
551
|
+
|
|
552
|
+
We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.
|
|
553
|
+
|
|
554
|
+
### Adding New Providers
|
|
555
|
+
|
|
556
|
+
1. Create a transformer in `scripts/download/transformers/`
|
|
557
|
+
2. Add provider configuration to `scripts/config.ts`
|
|
558
|
+
3. Run `pnpm run download --provider <provider-name>`
|
|
559
|
+
4. Test with `pnpm run aggregate`
|
|
560
|
+
|
|
561
|
+
### Reporting Issues
|
|
562
|
+
|
|
563
|
+
Please use our [Issue Tracker](https://github.com/anolilab/ai-models/issues) to report bugs or request features.
|
|
564
|
+
|
|
565
|
+
## 📄 License
|
|
566
|
+
|
|
567
|
+
This project is licensed under the Apache License 2.0 - see the [LICENSE](LICENSE.md) file for details.
|
|
568
|
+
|
|
569
|
+
## 🙏 Acknowledgments
|
|
570
|
+
|
|
571
|
+
- [Helicone](https://helicone.ai/) for providing pricing data
|
|
572
|
+
- [OpenRouter](https://openrouter.ai/) for reference data
|
|
573
|
+
- All the AI providers for their amazing models
|
|
574
|
+
- The open source community for inspiration and tools
|
|
575
|
+
|
|
576
|
+
## 📞 Support
|
|
577
|
+
|
|
578
|
+
- **Documentation**: [GitHub Wiki](https://github.com/anolilab/ai-models/wiki)
|
|
579
|
+
- **Issues**: [GitHub Issues](https://github.com/anolilab/ai-models/issues)
|
|
580
|
+
- **Discussions**: [GitHub Discussions](https://github.com/anolilab/ai-models/discussions)
|
|
581
|
+
- **Email**: support@anolilab.com
|
|
582
|
+
|
|
583
|
+
---
|
|
584
|
+
|
|
585
|
+
Made with ❤️ by [AnoliLab](https://anolilab.com)
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
declare const iconSymbols: Record<string, string>;
|
|
2
|
+
declare const providerIconMap: Record<string, string>;
|
|
3
|
+
declare const spriteSheet = "<svg xmlns=\"http://www.w3.org/2000/svg\" style=\"display: none;\">\n <symbol id=\"icon_alibaba\" viewBox=\"0 0 24 24\">\n <title>Alibaba</title><path d=\"M24 14.014c-2.8 1.512-5.62 2.896-8.759 3.524-.7.139-1.476.139-2.187.043-.678-.085-1.017-.682-.776-1.31.23-.585.536-1.181.93-1.671.852-1.065 1.814-2.034 2.678-3.088a15.75 15.75 0 001.422-2.054c.306-.511.164-1.129-.372-1.384-.897-.437-1.859-.745-2.81-1.075-.11-.043-.274.074-.492.149.273.244.47.425.743.67-2.821.48-5.49 1.16-8.08 2.098-.012.053-.033.095-.023.117.383.585.208 1.032-.35 1.394a2.365 2.365 0 00-.568.522c1.706.5 3.226.213 4.68-.735-.087-.127-.175-.244-.262-.372.546.096.874.394.918.862.011.107-.054.213-.087.32-.077-.086-.175-.17-.24-.267-.045-.064-.056-.138-.088-.245-1.728 1.15-3.587 1.438-5.632.842 0 .404-.022.745.011 1.075.022.287-.098.415-.36.564-.591.362-1.204.735-1.696 1.214-.59.585-.371 1.299.427 1.597.907.34 1.859.35 2.81.234 1.126-.139 2.23-.32 3.456-.49-1.433.67-2.844 1.14-4.33 1.33-1.04.14-2.078.214-3.106-.084-1.476-.415-2.133-1.501-1.75-2.96.361-1.363 1.236-2.449 2.176-3.45 3.139-3.332 7.108-5.024 11.7-5.365 1.072-.074 2.155.064 3.16.511 1.411.639 2.002 1.99 1.313 3.354-.448.905-1.072 1.735-1.695 2.555-.612.809-1.301 1.554-1.946 2.331-.186.234-.361.48-.503.745-.274.5-.088.83.492.778 1.213-.118 2.45-.213 3.62-.511 1.716-.437 3.389-1.054 5.084-1.597.175-.043.339-.107.492-.17z\"></path>\n </symbol>\n <symbol id=\"icon_amazon_bedrock\" viewBox=\"0 0 24 24\">\n <title>Bedrock</title><path d=\"M13.05 15.513h3.08c.214 0 .389.177.389.394v1.82a1.704 1.704 0 011.296 1.661c0 .943-.755 1.708-1.685 1.708-.931 0-1.686-.765-1.686-1.708 0-.807.554-1.484 1.297-1.662v-1.425h-2.69v4.663a.395.395 0 01-.188.338l-2.69 1.641a.385.385 0 01-.405-.002l-4.926-3.086a.395.395 0 01-.185-.336V16.3L2.196 14.87A.395.395 0 012 14.555L2 14.528V9.406c0-.14.073-.27.192-.34l2.465-1.462V4.448c0-.129.062-.249.165-.322l.021-.014L9.77 1.058a.385.385 0 01.407 0l2.69 1.675a.395.395 0 01.185.336V7.6h3.856V5.683a1.704 1.704 0 01-1.296-1.662c0-.943.755-1.708 1.685-1.708.931 0 1.685.765 1.685 1.708 0 .807-.553 1.484-1.296 1.662v2.311a.391.391 0 01-.389.394h-4.245v1.806h6.624a1.69 1.69 0 011.64-1.313c.93 0 1.685.764 1.685 1.707 0 .943-.754 1.708-1.685 1.708a1.69 1.69 0 01-1.64-1.314H13.05v1.937h4.953l.915 1.18a1.66 1.66 0 01.84-.227c.931 0 1.685.764 1.685 1.707 0 .943-.754 1.708-1.685 1.708-.93 0-1.685-.765-1.685-1.708 0-.346.102-.668.276-.937l-.724-.935H13.05v1.806zM9.973 1.856L7.93 3.122V6.09h-.778V3.604L5.435 4.669v2.945l2.11 1.36L9.712 7.61V5.334h.778V7.83c0 .136-.07.263-.184.335L7.963 9.638v2.081l1.422 1.009-.446.646-1.406-.998-1.53 1.005-.423-.66 1.605-1.055v-1.99L5.038 8.29l-2.26 1.34v1.676l1.972-1.189.398.677-2.37 1.429V14.3l2.166 1.258 2.27-1.368.397.677-2.176 1.311V19.3l1.876 1.175 2.365-1.426.398.678-2.017 1.216 1.918 1.201 2.298-1.403v-5.78l-4.758 2.893-.4-.675 5.158-3.136V3.289L9.972 1.856zM16.13 18.47a.913.913 0 00-.908.92c0 .507.406.918.908.918a.913.913 0 00.907-.919.913.913 0 00-.907-.92zm3.63-3.81a.913.913 0 00-.908.92c0 .508.406.92.907.92a.913.913 0 00.908-.92.913.913 0 00-.908-.92zm1.555-4.99a.913.913 0 00-.908.92c0 .507.407.918.908.918a.913.913 0 00.907-.919.913.913 0 00-.907-.92zM17.296 3.1a.913.913 0 00-.907.92c0 .508.406.92.907.92a.913.913 0 00.908-.92.913.913 0 00-.908-.92z\"></path>\n </symbol>\n <symbol id=\"icon_anthropic\" viewBox=\"0 0 24 24\">\n <title>Anthropic</title><path d=\"M13.827 3.52h3.603L24 20h-3.603l-6.57-16.48zm-7.258 0h3.767L16.906 20h-3.674l-1.343-3.461H5.017l-1.344 3.46H0L6.57 3.522zm4.132 9.959L8.453 7.687 6.205 13.48H10.7z\"></path>\n </symbol>\n <symbol id=\"icon_azure_openai\" viewBox=\"0 0 24 24\">\n <title>Azure</title><path d=\"M18.397 15.296H7.4a.51.51 0 00-.347.882l7.066 6.595c.206.192.477.298.758.298h6.226l-2.706-7.775z\" fill-opacity=\".75\"></path><path d=\"M8.295.857c-.477 0-.9.304-1.053.756L.495 21.605a1.11 1.11 0 001.052 1.466h5.43c.477 0 .9-.304 1.053-.755l1.341-3.975-2.318-2.163a.51.51 0 01.347-.882h3L15.271.857H8.295z\" fill-opacity=\".5\"></path><path d=\"M17.193 1.613a1.11 1.11 0 00-1.052-.756h-7.81.035c.477 0 .9.304 1.052.756l6.748 19.992a1.11 1.11 0 01-1.052 1.466h-.12 7.895a1.11 1.11 0 001.052-1.466L17.193 1.613z\"></path>\n </symbol>\n <symbol id=\"icon_openai\" viewBox=\"0 0 24 24\">\n <title>OpenAI</title><path d=\"M21.55 10.004a5.416 5.416 0 00-.478-4.501c-1.217-2.09-3.662-3.166-6.05-2.66A5.59 5.59 0 0010.831 1C8.39.995 6.224 2.546 5.473 4.838A5.553 5.553 0 001.76 7.496a5.487 5.487 0 00.691 6.5 5.416 5.416 0 00.477 4.502c1.217 2.09 3.662 3.165 6.05 2.66A5.586 5.586 0 0013.168 23c2.443.006 4.61-1.546 5.361-3.84a5.553 5.553 0 003.715-2.66 5.488 5.488 0 00-.693-6.497v.001zm-8.381 11.558a4.199 4.199 0 01-2.675-.954c.034-.018.093-.05.132-.074l4.44-2.53a.71.71 0 00.364-.623v-6.176l1.877 1.069c.02.01.033.029.036.05v5.115c-.003 2.274-1.87 4.118-4.174 4.123zM4.192 17.78a4.059 4.059 0 01-.498-2.763c.032.02.09.055.131.078l4.44 2.53c.225.13.504.13.73 0l5.42-3.088v2.138a.068.068 0 01-.027.057L9.9 19.288c-1.999 1.136-4.552.46-5.707-1.51h-.001zM3.023 8.216A4.15 4.15 0 015.198 6.41l-.002.151v5.06a.711.711 0 00.364.624l5.42 3.087-1.876 1.07a.067.067 0 01-.063.005l-4.489-2.559c-1.995-1.14-2.679-3.658-1.53-5.63h.001zm15.417 3.54l-5.42-3.088L14.896 7.6a.067.067 0 01.063-.006l4.489 2.557c1.998 1.14 2.683 3.662 1.529 5.633a4.163 4.163 0 01-2.174 1.807V12.38a.71.71 0 00-.363-.623zm1.867-2.773a6.04 6.04 0 00-.132-.078l-4.44-2.53a.731.731 0 00-.729 0l-5.42 3.088V7.325a.068.068 0 01.027-.057L14.1 4.713c2-1.137 4.555-.46 5.707 1.513.487.833.664 1.809.499 2.757h.001zm-11.741 3.81l-1.877-1.068a.065.065 0 01-.036-.051V6.559c.001-2.277 1.873-4.122 4.181-4.12.976 0 1.92.338 2.671.954-.034.018-.092.05-.131.073l-4.44 2.53a.71.71 0 00-.365.623l-.003 6.173v.002zm1.02-2.168L12 9.25l2.414 1.375v2.75L12 14.75l-2.415-1.375v-2.75z\"></path>\n </symbol>\n <symbol id=\"icon_deep_infra\" viewBox=\"0 0 24 24\">\n <title>DeepInfra</title><path d=\"M3.294 7.821A2.297 2.297 0 011 5.527a2.297 2.297 0 012.294-2.295A2.297 2.297 0 015.59 5.527 2.297 2.297 0 013.294 7.82zm0-3.688a1.396 1.396 0 000 2.79 1.396 1.396 0 000-2.79zM3.294 14.293A2.297 2.297 0 011 11.998a2.297 2.297 0 012.294-2.294 2.297 2.297 0 012.295 2.294 2.297 2.297 0 01-2.295 2.295zm0-3.688a1.395 1.395 0 000 2.788 1.395 1.395 0 100-2.788zM3.294 20.761A2.297 2.297 0 011 18.467a2.297 2.297 0 012.294-2.295 2.297 2.297 0 012.295 2.295 2.297 2.297 0 01-2.295 2.294zm0-3.688a1.396 1.396 0 000 2.79 1.396 1.396 0 000-2.79zM20.738 7.821a2.297 2.297 0 01-2.295-2.294 2.297 2.297 0 012.294-2.295 2.297 2.297 0 012.295 2.295 2.297 2.297 0 01-2.294 2.294zm0-3.688a1.396 1.396 0 101.395 1.395c0-.77-.626-1.395-1.395-1.395zM20.738 14.293a2.297 2.297 0 01-2.295-2.295 2.297 2.297 0 012.294-2.294 2.297 2.297 0 012.295 2.294 2.297 2.297 0 01-2.294 2.295zm0-3.688c-.769 0-1.395.625-1.395 1.393a1.396 1.396 0 002.79 0c0-.77-.626-1.393-1.395-1.393zM20.738 20.761a2.297 2.297 0 01-2.295-2.294 2.297 2.297 0 012.294-2.295 2.297 2.297 0 012.295 2.295 2.297 2.297 0 01-2.294 2.294zm0-3.688a1.396 1.396 0 101.395 1.395c0-.77-.626-1.395-1.395-1.395zM12.016 11.057a2.297 2.297 0 01-2.294-2.294 2.297 2.297 0 012.294-2.295 2.297 2.297 0 012.295 2.295 2.297 2.297 0 01-2.295 2.294zm0-3.688a1.396 1.396 0 101.395 1.395c0-.77-.625-1.395-1.395-1.395zM12.017 4.589a2.297 2.297 0 01-2.295-2.295A2.297 2.297 0 0112.017 0a2.297 2.297 0 012.294 2.294 2.297 2.297 0 01-2.294 2.295zm0-3.688a1.396 1.396 0 101.395 1.395c0-.77-.626-1.395-1.395-1.395zM12.017 17.529a2.297 2.297 0 01-2.295-2.295 2.297 2.297 0 012.295-2.294 2.297 2.297 0 012.294 2.294 2.297 2.297 0 01-2.294 2.295zm0-3.688a1.396 1.396 0 101.395 1.395c0-.77-.626-1.395-1.395-1.395zM12.016 24a2.297 2.297 0 01-2.294-2.295 2.297 2.297 0 012.294-2.294 2.297 2.297 0 012.295 2.294A2.297 2.297 0 0112.016 24zm0-3.688a1.396 1.396 0 101.395 1.395c0-.77-.625-1.395-1.395-1.395z\"></path><path d=\"M8.363 8.222a.742.742 0 01-.277-.053l-1.494-.596a.75.75 0 11.557-1.392l1.493.595a.75.75 0 01-.278 1.446h-.001zM8.363 14.566a.743.743 0 01-.277-.053l-1.494-.595a.75.75 0 11.557-1.393l1.493.596a.75.75 0 01-.278 1.445h-.001zM17.124 11.397a.741.741 0 01-.277-.054l-1.493-.595a.75.75 0 11.555-1.392l1.493.595a.75.75 0 01-.278 1.446zM17.124 5.05a.744.744 0 01-.277-.054L15.354 4.4a.75.75 0 01.555-1.392l1.493.596a.75.75 0 01-.278 1.445zM17.124 17.739a.743.743 0 01-.277-.053l-1.494-.596a.75.75 0 11.556-1.392l1.493.596a.75.75 0 01-.278 1.445zM6.91 17.966a.75.75 0 01-.279-1.445l1.494-.595a.749.749 0 11.556 1.392l-1.493.595a.743.743 0 01-.277.053H6.91zM6.91 11.66a.75.75 0 01-.279-1.446l1.494-.595a.75.75 0 01.556 1.392l-1.493.595a.743.743 0 01-.277.053H6.91zM6.91 5.033a.75.75 0 01-.279-1.446l1.494-.595a.75.75 0 01.556 1.392l-1.493.596a.744.744 0 01-.277.053H6.91zM8.363 21.364a.743.743 0 01-.277-.053l-1.494-.596a.75.75 0 01.555-1.392l1.494.595a.75.75 0 01-.278 1.446zM15.63 8.223a.75.75 0 01-.278-1.447l1.494-.595a.75.75 0 01.556 1.393l-1.494.595a.744.744 0 01-.276.054h-.002zM15.63 14.567a.75.75 0 01-.278-1.446l1.494-.596a.75.75 0 01.556 1.394l-1.494.595a.743.743 0 01-.276.053h-.002zM15.63 21.363a.749.749 0 01-.278-1.445l1.494-.595a.75.75 0 11.555 1.392l-1.494.595a.741.741 0 01-.277.053z\"></path>\n </symbol>\n <symbol id=\"icon_deepseek\" viewBox=\"0 0 24 24\">\n <title>DeepSeek</title><path d=\"M23.748 4.482c-.254-.124-.364.113-.512.234-.051.039-.094.09-.137.136-.372.397-.806.657-1.373.626-.829-.046-1.537.214-2.163.848-.133-.782-.575-1.248-1.247-1.548-.352-.156-.708-.311-.955-.65-.172-.241-.219-.51-.305-.774-.055-.16-.11-.323-.293-.35-.2-.031-.278.136-.356.276-.313.572-.434 1.202-.422 1.84.027 1.436.633 2.58 1.838 3.393.137.093.172.187.129.323-.082.28-.18.552-.266.833-.055.179-.137.217-.329.14a5.526 5.526 0 01-1.736-1.18c-.857-.828-1.631-1.742-2.597-2.458a11.365 11.365 0 00-.689-.471c-.985-.957.13-1.743.388-1.836.27-.098.093-.432-.779-.428-.872.004-1.67.295-2.687.684a3.055 3.055 0 01-.465.137 9.597 9.597 0 00-2.883-.102c-1.885.21-3.39 1.102-4.497 2.623C.082 8.606-.231 10.684.152 12.85c.403 2.284 1.569 4.175 3.36 5.653 1.858 1.533 3.997 2.284 6.438 2.14 1.482-.085 3.133-.284 4.994-1.86.47.234.962.327 1.78.397.63.059 1.236-.03 1.705-.128.735-.156.684-.837.419-.961-2.155-1.004-1.682-.595-2.113-.926 1.096-1.296 2.746-2.642 3.392-7.003.05-.347.007-.565 0-.845-.004-.17.035-.237.23-.256a4.173 4.173 0 001.545-.475c1.396-.763 1.96-2.015 2.093-3.517.02-.23-.004-.467-.247-.588zM11.581 18c-2.089-1.642-3.102-2.183-3.52-2.16-.392.024-.321.471-.235.763.09.288.207.486.371.739.114.167.192.416-.113.603-.673.416-1.842-.14-1.897-.167-1.361-.802-2.5-1.86-3.301-3.307-.774-1.393-1.224-2.887-1.298-4.482-.02-.386.093-.522.477-.592a4.696 4.696 0 011.529-.039c2.132.312 3.946 1.265 5.468 2.774.868.86 1.525 1.887 2.202 2.891.72 1.066 1.494 2.082 2.48 2.914.348.292.625.514.891.677-.802.09-2.14.11-3.054-.614zm1-6.44a.306.306 0 01.415-.287.302.302 0 01.2.288.306.306 0 01-.31.307.303.303 0 01-.304-.308zm3.11 1.596c-.2.081-.399.151-.59.16a1.245 1.245 0 01-.798-.254c-.274-.23-.47-.358-.552-.758a1.73 1.73 0 01.016-.588c.07-.327-.008-.537-.239-.727-.187-.156-.426-.199-.688-.199a.559.559 0 01-.254-.078c-.11-.054-.2-.19-.114-.358.028-.054.16-.186.192-.21.356-.202.767-.136 1.146.016.352.144.618.408 1.001.782.391.451.462.576.685.914.176.265.336.537.445.848.067.195-.019.354-.25.452z\"></path>\n </symbol>\n <symbol id=\"icon_fireworks_ai\" viewBox=\"0 0 24 24\">\n <title>Fireworks</title><path d=\"M14.8 5l-2.801 6.795L9.195 5H7.397l3.072 7.428a1.64 1.64 0 003.038.002L16.598 5H14.8zm1.196 10.352l5.124-5.244-.699-1.669-5.596 5.739a1.664 1.664 0 00-.343 1.807 1.642 1.642 0 001.516 1.012L16 17l8-.02-.699-1.669-7.303.041h-.002zM2.88 10.104l.699-1.669 5.596 5.739c.468.479.603 1.189.343 1.807a1.643 1.643 0 01-1.516 1.012l-8-.018-.002.002.699-1.669 7.303.042-5.122-5.246z\"></path>\n </symbol>\n <symbol id=\"icon_modelscope\" viewBox=\"0 0 24 24\">\n <title>ModelScope</title><path d=\"M2.667 5.3H8v2.667H5.333v2.666H2.667V8.467H.5v2.166h2.167V13.3H0V7.967h2.667V5.3zM2.667 13.3h2.666v2.667H8v2.666H2.667V13.3zM8 10.633h2.667V13.3H8v-2.667zM13.333 13.3v2.667h-2.666V13.3h2.666zM13.333 13.3v-2.667H16V13.3h-2.667z\"></path><path d=\"M21.333 13.3v-2.667h-2.666V7.967H16V5.3h5.333v2.667H24V13.3h-2.667zm0-2.667H23.5V8.467h-2.167v2.166z\"></path><path d=\"M21.333 13.3v5.333H16v-2.666h2.667V13.3h2.666z\"></path>\n </symbol>\n <symbol id=\"icon_github_copilot\" viewBox=\"0 0 24 24\">\n <title>GithubCopilot</title><path d=\"M19.245 5.364c1.322 1.36 1.877 3.216 2.11 5.817.622 0 1.2.135 1.592.654l.73.964c.21.278.323.61.323.955v2.62c0 .339-.173.669-.453.868C20.239 19.602 16.157 21.5 12 21.5c-4.6 0-9.205-2.583-11.547-4.258-.28-.2-.452-.53-.453-.868v-2.62c0-.345.113-.679.321-.956l.73-.963c.392-.517.974-.654 1.593-.654l.029-.297c.25-2.446.81-4.213 2.082-5.52 2.461-2.54 5.71-2.851 7.146-2.864h.198c1.436.013 4.685.323 7.146 2.864zm-7.244 4.328c-.284 0-.613.016-.962.05-.123.447-.305.85-.57 1.108-1.05 1.023-2.316 1.18-2.994 1.18-.638 0-1.306-.13-1.851-.464-.516.165-1.012.403-1.044.996a65.882 65.882 0 00-.063 2.884l-.002.48c-.002.563-.005 1.126-.013 1.69.002.326.204.63.51.765 2.482 1.102 4.83 1.657 6.99 1.657 2.156 0 4.504-.555 6.985-1.657a.854.854 0 00.51-.766c.03-1.682.006-3.372-.076-5.053-.031-.596-.528-.83-1.046-.996-.546.333-1.212.464-1.85.464-.677 0-1.942-.157-2.993-1.18-.266-.258-.447-.661-.57-1.108-.32-.032-.64-.049-.96-.05zm-2.525 4.013c.539 0 .976.426.976.95v1.753c0 .525-.437.95-.976.95a.964.964 0 01-.976-.95v-1.752c0-.525.437-.951.976-.951zm5 0c.539 0 .976.426.976.95v1.753c0 .525-.437.95-.976.95a.964.964 0 01-.976-.95v-1.752c0-.525.437-.951.976-.951zM7.635 5.087c-1.05.102-1.935.438-2.385.906-.975 1.037-.765 3.668-.21 4.224.405.394 1.17.657 1.995.657h.09c.649-.013 1.785-.176 2.73-1.11.435-.41.705-1.433.675-2.47-.03-.834-.27-1.52-.63-1.813-.39-.336-1.275-.482-2.265-.394zm6.465.394c-.36.292-.6.98-.63 1.813-.03 1.037.24 2.06.675 2.47.968.957 2.136 1.104 2.776 1.11h.044c.825 0 1.59-.263 1.995-.657.555-.556.765-3.187-.21-4.224-.45-.468-1.335-.804-2.385-.906-.99-.088-1.875.058-2.265.394zM12 7.615c-.24 0-.525.015-.84.044.03.16.045.336.06.526l-.001.159a2.94 2.94 0 01-.014.25c.225-.022.425-.027.612-.028h.366c.187 0 .387.006.612.028-.015-.146-.015-.277-.015-.409.015-.19.03-.365.06-.526a9.29 9.29 0 00-.84-.044z\"></path>\n </symbol>\n <symbol id=\"icon_github_models\" viewBox=\"0 0 24 24\">\n <title>Github</title><path d=\"M12 0c6.63 0 12 5.276 12 11.79-.001 5.067-3.29 9.567-8.175 11.187-.6.118-.825-.25-.825-.56 0-.398.015-1.665.015-3.242 0-1.105-.375-1.813-.81-2.181 2.67-.295 5.475-1.297 5.475-5.822 0-1.297-.465-2.344-1.23-3.169.12-.295.54-1.503-.12-3.125 0 0-1.005-.324-3.3 1.209a11.32 11.32 0 00-3-.398c-1.02 0-2.04.133-3 .398-2.295-1.518-3.3-1.209-3.3-1.209-.66 1.622-.24 2.83-.12 3.125-.765.825-1.23 1.887-1.23 3.169 0 4.51 2.79 5.527 5.46 5.822-.345.294-.66.81-.765 1.577-.69.31-2.415.81-3.495-.973-.225-.354-.9-1.223-1.845-1.209-1.005.015-.405.56.015.781.51.28 1.095 1.327 1.23 1.666.24.663 1.02 1.93 4.035 1.385 0 .988.015 1.916.015 2.196 0 .31-.225.664-.825.56C3.303 21.374-.003 16.867 0 11.791 0 5.276 5.37 0 12 0z\"></path>\n </symbol>\n <symbol id=\"icon_google\" viewBox=\"0 0 24 24\">\n <title>Google</title><path d=\"M23 12.245c0-.905-.075-1.565-.236-2.25h-10.54v4.083h6.186c-.124 1.014-.797 2.542-2.294 3.569l-.021.136 3.332 2.53.23.022C21.779 18.417 23 15.593 23 12.245z\"></path><path d=\"M12.225 23c3.03 0 5.574-.978 7.433-2.665l-3.542-2.688c-.948.648-2.22 1.1-3.891 1.1a6.745 6.745 0 01-6.386-4.572l-.132.011-3.465 2.628-.045.124C4.043 20.531 7.835 23 12.225 23z\"></path><path d=\"M5.84 14.175A6.65 6.65 0 015.463 12c0-.758.138-1.491.361-2.175l-.006-.147-3.508-2.67-.115.054A10.831 10.831 0 001 12c0 1.772.436 3.447 1.197 4.938l3.642-2.763z\"></path><path d=\"M12.225 5.253c2.108 0 3.529.892 4.34 1.638l3.167-3.031C17.787 2.088 15.255 1 12.225 1 7.834 1 4.043 3.469 2.197 7.062l3.63 2.763a6.77 6.77 0 016.398-4.572z\"></path>\n </symbol>\n <symbol id=\"icon_google_vertex\" viewBox=\"0 0 24 24\">\n <title>Google</title><path d=\"M23 12.245c0-.905-.075-1.565-.236-2.25h-10.54v4.083h6.186c-.124 1.014-.797 2.542-2.294 3.569l-.021.136 3.332 2.53.23.022C21.779 18.417 23 15.593 23 12.245z\"></path><path d=\"M12.225 23c3.03 0 5.574-.978 7.433-2.665l-3.542-2.688c-.948.648-2.22 1.1-3.891 1.1a6.745 6.745 0 01-6.386-4.572l-.132.011-3.465 2.628-.045.124C4.043 20.531 7.835 23 12.225 23z\"></path><path d=\"M5.84 14.175A6.65 6.65 0 015.463 12c0-.758.138-1.491.361-2.175l-.006-.147-3.508-2.67-.115.054A10.831 10.831 0 001 12c0 1.772.436 3.447 1.197 4.938l3.642-2.763z\"></path><path d=\"M12.225 5.253c2.108 0 3.529.892 4.34 1.638l3.167-3.031C17.787 2.088 15.255 1 12.225 1 7.834 1 4.043 3.469 2.197 7.062l3.63 2.763a6.77 6.77 0 016.398-4.572z\"></path>\n </symbol>\n <symbol id=\"icon_google_vertex_anthropic\" viewBox=\"0 0 24 24\">\n <title>Google</title><path d=\"M23 12.245c0-.905-.075-1.565-.236-2.25h-10.54v4.083h6.186c-.124 1.014-.797 2.542-2.294 3.569l-.021.136 3.332 2.53.23.022C21.779 18.417 23 15.593 23 12.245z\"></path><path d=\"M12.225 23c3.03 0 5.574-.978 7.433-2.665l-3.542-2.688c-.948.648-2.22 1.1-3.891 1.1a6.745 6.745 0 01-6.386-4.572l-.132.011-3.465 2.628-.045.124C4.043 20.531 7.835 23 12.225 23z\"></path><path d=\"M5.84 14.175A6.65 6.65 0 015.463 12c0-.758.138-1.491.361-2.175l-.006-.147-3.508-2.67-.115.054A10.831 10.831 0 001 12c0 1.772.436 3.447 1.197 4.938l3.642-2.763z\"></path><path d=\"M12.225 5.253c2.108 0 3.529.892 4.34 1.638l3.167-3.031C17.787 2.088 15.255 1 12.225 1 7.834 1 4.043 3.469 2.197 7.062l3.63 2.763a6.77 6.77 0 016.398-4.572z\"></path>\n </symbol>\n <symbol id=\"icon_groq\" viewBox=\"0 0 24 24\">\n <title>Groq</title><path d=\"M12.036 2c-3.853-.035-7 3-7.036 6.781-.035 3.782 3.055 6.872 6.908 6.907h2.42v-2.566h-2.292c-2.407.028-4.38-1.866-4.408-4.23-.029-2.362 1.901-4.298 4.308-4.326h.1c2.407 0 4.358 1.915 4.365 4.278v6.305c0 2.342-1.944 4.25-4.323 4.279a4.375 4.375 0 01-3.033-1.252l-1.851 1.818A7 7 0 0012.029 22h.092c3.803-.056 6.858-3.083 6.879-6.816v-6.5C18.907 4.963 15.817 2 12.036 2z\"></path>\n </symbol>\n <symbol id=\"icon_openrouter\" viewBox=\"0 0 24 24\">\n <title>OpenRouter</title><path d=\"M16.804 1.957l7.22 4.105v.087L16.73 10.21l.017-2.117-.821-.03c-1.059-.028-1.611.002-2.268.11-1.064.175-2.038.577-3.147 1.352L8.345 11.03c-.284.195-.495.336-.68.455l-.515.322-.397.234.385.23.53.338c.476.314 1.17.796 2.701 1.866 1.11.775 2.083 1.177 3.147 1.352l.3.045c.694.091 1.375.094 2.825.033l.022-2.159 7.22 4.105v.087L16.589 22l.014-1.862-.635.022c-1.386.042-2.137.002-3.138-.162-1.694-.28-3.26-.926-4.881-2.059l-2.158-1.5a21.997 21.997 0 00-.755-.498l-.467-.28a55.927 55.927 0 00-.76-.43C2.908 14.73.563 14.116 0 14.116V9.888l.14.004c.564-.007 2.91-.622 3.809-1.124l1.016-.58.438-.274c.428-.28 1.072-.726 2.686-1.853 1.621-1.133 3.186-1.78 4.881-2.059 1.152-.19 1.974-.213 3.814-.138l.02-1.907z\"></path>\n </symbol>\n <symbol id=\"icon_hugging_face\" viewBox=\"0 0 24 24\">\n <title>HuggingFace</title><path d=\"M16.781 3.277c2.997 1.704 4.844 4.851 4.844 8.258 0 .995-.155 1.955-.443 2.857a1.332 1.332 0 011.125.4 1.41 1.41 0 01.2 1.723c.204.165.352.385.428.632l.017.062c.06.222.12.69-.2 1.166.244.37.279.836.093 1.236-.255.57-.893 1.018-2.128 1.5l-.202.078-.131.048c-.478.173-.89.295-1.061.345l-.086.024c-.89.243-1.808.375-2.732.394-1.32 0-2.3-.36-2.923-1.067a9.852 9.852 0 01-3.18.018C9.778 21.647 8.802 22 7.494 22a11.249 11.249 0 01-2.541-.343l-.221-.06-.273-.08a16.574 16.574 0 01-1.175-.405c-1.237-.483-1.875-.93-2.13-1.501-.186-.4-.151-.867.093-1.236a1.42 1.42 0 01-.2-1.166c.069-.273.226-.516.447-.694a1.41 1.41 0 01.2-1.722c.233-.248.557-.391.917-.407l.078-.001a9.385 9.385 0 01-.44-2.85c0-3.407 1.847-6.554 4.844-8.258a9.822 9.822 0 019.687 0zM4.188 14.758c.125.687 2.357 2.35 2.14 2.707-.19.315-.796-.239-.948-.386l-.041-.04-.168-.147c-.561-.479-2.304-1.9-2.74-1.432-.43.46.119.859 1.055 1.42l.784.467.136.083c1.045.643 1.12.84.95 1.113-.188.295-3.07-2.1-3.34-1.083-.27 1.011 2.942 1.304 2.744 2.006-.2.7-2.265-1.324-2.685-.537-.425.79 2.913 1.718 2.94 1.725l.16.04.175.042c1.227.284 3.565.65 4.435-.604.673-.973.64-1.709-.248-2.61l-.057-.057c-.945-.928-1.495-2.288-1.495-2.288l-.017-.058-.025-.072c-.082-.22-.284-.639-.63-.584-.46.073-.798 1.21.12 1.933l.05.038c.977.721-.195 1.21-.573.534l-.058-.104-.143-.25c-.463-.799-1.282-2.111-1.739-2.397-.532-.332-.907-.148-.782.541zm14.842-.541c-.533.335-1.563 2.074-1.94 2.751a.613.613 0 01-.687.302.436.436 0 01-.176-.098.303.303 0 01-.049-.06l-.014-.028-.008-.02-.007-.019-.003-.013-.003-.017a.289.289 0 01-.004-.048c0-.12.071-.266.25-.427.026-.024.054-.047.084-.07l.047-.036c.022-.016.043-.032.063-.049.883-.71.573-1.81.131-1.917l-.031-.006-.056-.004a.368.368 0 00-.062.006l-.028.005-.042.014-.039.017-.028.015-.028.019-.036.027-.023.02c-.173.158-.273.428-.31.542l-.016.054s-.53 1.309-1.439 2.234l-.054.054c-.365.358-.596.69-.702 1.018-.143.437-.066.868.21 1.353.055.097.117.195.187.296.882 1.275 3.282.876 4.494.59l.286-.07.25-.074c.276-.084.736-.233 1.2-.42l.188-.077.065-.028.064-.028.124-.056.081-.038c.529-.252.964-.543.994-.827l.001-.036a.299.299 0 00-.037-.139c-.094-.176-.271-.212-.491-.168l-.045.01c-.044.01-.09.024-.136.04l-.097.035-.054.022c-.559.23-1.238.705-1.607.745h.006a.452.452 0 01-.05.003h-.024l-.024-.003-.023-.005c-.068-.016-.116-.06-.14-.142a.22.22 0 01-.005-.1c.062-.345.958-.595 1.713-.91l.066-.028c.528-.224.97-.483.985-.832v-.04a.47.47 0 00-.016-.098c-.048-.18-.175-.251-.36-.251-.785 0-2.55 1.36-2.92 1.36-.025 0-.048-.007-.058-.024a.6.6 0 01-.046-.088c-.1-.238.068-.462 1.06-1.066l.209-.126c.538-.32 1.01-.588 1.341-.831.29-.212.475-.406.503-.6l.003-.028c.008-.113-.038-.227-.147-.344a.266.266 0 00-.07-.054l-.034-.015-.013-.005a.403.403 0 00-.13-.02c-.162 0-.369.07-.595.18-.637.313-1.431.952-1.826 1.285l-.249.215-.033.033c-.08.078-.288.27-.493.386l-.071.037-.041.019a.535.535 0 01-.122.036h.005a.346.346 0 01-.031.003l.01-.001-.013.001c-.079.005-.145-.021-.19-.095a.113.113 0 01-.014-.065c.027-.465 2.034-1.991 2.152-2.642l.009-.048c.1-.65-.271-.817-.791-.493zM11.938 2.984c-4.798 0-8.688 3.829-8.688 8.55 0 .692.083 1.364.24 2.008l.008-.009c.252-.298.612-.46 1.017-.46.355.008.699.117.993.312.22.14.465.384.715.694.261-.372.69-.598 1.15-.605.852 0 1.367.728 1.562 1.383l.047.105.06.127c.192.396.595 1.139 1.143 1.68 1.06 1.04 1.324 2.115.8 3.266a8.865 8.865 0 002.024-.014c-.505-1.12-.26-2.17.74-3.186l.066-.066c.695-.684 1.157-1.69 1.252-1.912.195-.655.708-1.383 1.56-1.383.46.007.889.233 1.15.605.25-.31.495-.553.718-.694a1.87 1.87 0 01.99-.312c.357 0 .682.126.925.36.14-.61.215-1.245.215-1.898 0-4.722-3.89-8.55-8.687-8.55zm1.857 8.926l.439-.212c.553-.264.89-.383.89.152 0 1.093-.771 3.208-3.155 3.262h-.184c-2.325-.052-3.116-2.06-3.156-3.175l-.001-.087c0-1.107 1.452.586 3.25.586.716 0 1.379-.272 1.917-.526zm4.017-3.143c.45 0 .813.358.813.8 0 .441-.364.8-.813.8a.806.806 0 01-.812-.8c0-.442.364-.8.812-.8zm-11.624 0c.448 0 .812.358.812.8 0 .441-.364.8-.812.8a.806.806 0 01-.813-.8c0-.442.364-.8.813-.8zm7.79-.841c.32-.384.846-.54 1.33-.394.483.146.83.564.878 1.06.048.495-.212.97-.659 1.203-.322.168-.447-.477-.767-.585l.002-.003c-.287-.098-.772.362-.925.079a1.215 1.215 0 01.14-1.36zm-4.323 0c.322.384.377.92.14 1.36-.152.283-.64-.177-.925-.079l.003.003c-.108.036-.194.134-.273.24l-.118.165c-.11.15-.22.262-.377.18a1.226 1.226 0 01-.658-1.204c.048-.495.395-.913.878-1.059a1.262 1.262 0 011.33.394z\"></path>\n </symbol>\n <symbol id=\"icon_inference\" viewBox=\"0 0 24 24\">\n <title>Inference</title><path d=\"M22 21.376h-4.89V2.62H22v18.756zM14.532 21.376h-3.469V2.62h3.469v18.756zM8.764 21.376h-2.66V2.62h2.66v18.756zM3.903 21.376H2V2.62h1.903v18.756z\"></path>\n </symbol>\n <symbol id=\"icon_meta\" viewBox=\"0 0 24 24\">\n <title>Meta</title><path d=\"M6.897 4c1.915 0 3.516.932 5.43 3.376l.282-.373c.19-.246.383-.484.58-.71l.313-.35C14.588 4.788 15.792 4 17.225 4c1.273 0 2.469.557 3.491 1.516l.218.213c1.73 1.765 2.917 4.71 3.053 8.026l.011.392.002.25c0 1.501-.28 2.759-.818 3.7l-.14.23-.108.153c-.301.42-.664.758-1.086 1.009l-.265.142-.087.04a3.493 3.493 0 01-.302.118 4.117 4.117 0 01-1.33.208c-.524 0-.996-.067-1.438-.215-.614-.204-1.163-.56-1.726-1.116l-.227-.235c-.753-.812-1.534-1.976-2.493-3.586l-1.43-2.41-.544-.895-1.766 3.13-.343.592C7.597 19.156 6.227 20 4.356 20c-1.21 0-2.205-.42-2.936-1.182l-.168-.184c-.484-.573-.837-1.311-1.043-2.189l-.067-.32a8.69 8.69 0 01-.136-1.288L0 14.468c.002-.745.06-1.49.174-2.23l.1-.573c.298-1.53.828-2.958 1.536-4.157l.209-.34c1.177-1.83 2.789-3.053 4.615-3.16L6.897 4zm-.033 2.615l-.201.01c-.83.083-1.606.673-2.252 1.577l-.138.199-.01.018c-.67 1.017-1.185 2.378-1.456 3.845l-.004.022a12.591 12.591 0 00-.207 2.254l.002.188c.004.18.017.36.04.54l.043.291c.092.503.257.908.486 1.208l.117.137c.303.323.698.492 1.17.492 1.1 0 1.796-.676 3.696-3.641l2.175-3.4.454-.701-.139-.198C9.11 7.3 8.084 6.616 6.864 6.616zm10.196-.552l-.176.007c-.635.048-1.223.359-1.82.933l-.196.198c-.439.462-.887 1.064-1.367 1.807l.266.398c.18.274.362.56.55.858l.293.475 1.396 2.335.695 1.114c.583.926 1.03 1.6 1.408 2.082l.213.262c.282.326.529.54.777.673l.102.05c.227.1.457.138.718.138.176.002.35-.023.518-.073.338-.104.61-.32.813-.637l.095-.163.077-.162c.194-.459.29-1.06.29-1.785l-.006-.449c-.08-2.871-.938-5.372-2.2-6.798l-.176-.189c-.67-.683-1.444-1.074-2.27-1.074z\"></path>\n </symbol>\n <symbol id=\"icon_mistral\" viewBox=\"0 0 24 24\">\n <title>Mistral</title><path d=\"M3.428 3.4h3.429v3.428h3.429v3.429h-.002 3.431V6.828h3.427V3.4h3.43v13.714H24v3.429H13.714v-3.428h-3.428v-3.429h-3.43v3.428h3.43v3.429H0v-3.429h3.428V3.4zm10.286 13.715h3.428v-3.429h-3.427v3.429z\"></path>\n </symbol>\n <symbol id=\"icon_morph\" viewBox=\"0 0 48 48\">\n <path d=\"M16.5586 6C17.4193 6.00005 18.1838 6.55068 18.4561 7.36719L19.5439 10.6328C19.8162 11.4493 20.5807 12 21.4414 12H26.5586C27.4193 12 28.1838 11.4493 28.4561 10.6328L29.5439 7.36719C29.8162 6.55068 30.5807 6.00005 31.4414 6H34.5586C35.4193 6.00005 36.1838 6.55068 36.4561 7.36719L37.6523 10.958C37.8686 11.6067 38.402 12.1008 39.0654 12.2666L44.4854 13.6211C45.3756 13.8438 46 14.6439 46 15.5615V32.4385C46 33.3561 45.3756 34.1562 44.4854 34.3789L39.0654 35.7334C38.402 35.8992 37.8686 36.3933 37.6523 37.042L36.4561 40.6328C36.1838 41.4493 35.4193 42 34.5586 42H31.4414C30.5807 42 29.8162 41.4493 29.5439 40.6328L28.8779 38.6328C28.4463 37.3379 29.4095 36.0003 30.7744 36H36C37.1046 36 38 35.1046 38 34V14C38 12.8954 37.1046 12 36 12H30C28.8954 12 28 12.8954 28 14V28C28 29.1046 27.1046 30 26 30H22C20.8954 30 20 29.1046 20 28V14C20 12.8954 19.1046 12 18 12H12C10.8954 12 10 12.8954 10 14V34C10 35.1046 10.8954 36 12 36H17.2256C18.5905 36.0003 19.5537 37.3379 19.1221 38.6328L18.4561 40.6328C18.1838 41.4493 17.4193 42 16.5586 42H13.4414C12.5807 42 11.8162 41.4493 11.5439 40.6328L10.3477 37.042C10.1314 36.3933 9.59795 35.8992 8.93457 35.7334L3.51465 34.3789C2.62444 34.1562 2.00001 33.3561 2 32.4385V15.5615C2.00001 14.6439 2.62444 13.8438 3.51465 13.6211L8.93457 12.2666C9.59795 12.1008 10.1314 11.6067 10.3477 10.958L11.5439 7.36719C11.8162 6.55068 12.5807 6.00005 13.4414 6H16.5586Z\" fill=\"#99D52A\"/>\n </symbol>\n <symbol id=\"icon_requesty\" viewBox=\"0 0 24 24\">\n <path d=\"M0 0 C0.78464532 0.00754043 1.56929064 0.01508087 2.37771308 0.0228498 C11.55438744 0.14663599 20.7132784 0.62846277 29.8755188 1.13043213 C31.80603655 1.23267734 33.73657412 1.33454905 35.66712952 1.43608093 C40.85059986 1.71020784 46.0336988 1.99079161 51.21670008 2.27363682 C54.46148192 2.45064849 57.70631738 2.62664608 60.95116806 2.80239105 C71.12500891 3.35390373 81.29859911 3.90977056 91.47188103 4.47149968 C103.18057842 5.11790787 114.88996326 5.74926397 126.600155 6.36799645 C135.68576748 6.84899796 144.77057753 7.34358806 153.85489643 7.84842658 C159.26810431 8.14893529 164.6814784 8.44366077 170.09576797 8.72406769 C175.1775807 8.98760449 180.25818605 9.26800307 185.33836555 9.56129646 C187.19879831 9.66580451 189.05958141 9.76428215 190.92067909 9.85619164 C193.46676581 9.98286661 196.01067815 10.13150728 198.55523682 10.28552246 C199.28617274 10.31667153 200.01710867 10.34782059 200.77019417 10.37991357 C206.9250478 10.79211726 212.01576662 12.92594251 216.86331177 16.75445557 C223.93124239 25.052498 224.22738256 33.85700931 223.42825317 44.29400635 C223.28630397 45.9866185 223.14352862 47.67916152 223.00003052 49.37164307 C222.8573039 51.19429659 222.71592713 53.01705618 222.57571411 54.83990479 C222.23617894 59.21086761 221.88361146 63.58062558 221.52737427 67.95025635 C220.95191602 75.09884838 220.42735293 82.25056251 219.91107368 89.40364552 C219.34607827 97.22484953 218.76439334 105.04470949 218.17242241 112.86391735 C217.79711482 117.82594457 217.42813241 122.78825214 217.0743103 127.75186157 C216.73420819 132.51153162 216.37303508 137.26917939 215.99699402 142.02614021 C215.86011466 143.80185358 215.73045788 145.57814085 215.6085968 147.35494804 C214.13503384 168.6881976 214.13503384 168.6881976 206.00003052 176.12164307 C198.3151904 181.19363754 191.623252 181.85911567 182.56253052 182.55914307 C181.12880821 182.69678475 179.69530293 182.836701 178.26199341 182.97857666 C169.61188698 183.79071528 161.03094316 184.23872425 152.34013081 184.28205204 C144.49264615 184.32327307 136.65406085 184.49841171 128.81253052 184.80914307 C128.08874332 184.83757923 127.36495613 184.8660154 126.61923599 184.89531326 C106.913351 185.74801383 91.76002436 188.40584816 77.769104 203.65039062 C74.01038656 208.01818607 70.32723838 212.48297195 67.12794495 217.28086853 C63.86344437 221.96000673 63.86344437 221.96000673 60.81503296 222.65127563 C57.91611869 222.69877142 55.48774599 222.4905008 52.87503052 221.18414307 C51.73472379 217.76322287 51.54491289 214.78422554 51.31253052 211.18414307 C51.18684692 209.32789307 51.18684692 209.32789307 51.05862427 207.43414307 C50.78732817 202.35327981 50.83821512 197.27051205 50.87503052 192.18414307 C50.14614624 192.244729 49.41726196 192.30531494 48.66629028 192.36773682 C4.27308377 196.00394496 4.27308377 196.00394496 -5.17575073 188.57086182 C-10.61255858 183.49425656 -13.33044154 178.26113109 -14.0239563 170.79063416 C-14.14732361 169.52485535 -14.27069092 168.25907654 -14.39779663 166.9549408 C-14.5209608 165.56481001 -14.64387735 164.17465726 -14.76657104 162.78448486 C-14.90555313 161.31044091 -15.04557469 159.83649466 -15.18655396 158.36264038 C-15.56528151 154.36970075 -15.92880438 150.37551117 -16.28909016 146.38087058 C-16.66895698 142.19233817 -17.06116304 138.00495881 -17.4515686 133.81739807 C-18.10542766 126.78293712 -18.74949244 119.74763128 -19.38766479 112.71173096 C-20.12423914 104.59218288 -20.87583124 96.4741331 -21.63563561 88.35672826 C-22.36761051 80.5332216 -23.08925056 72.70879485 -23.8061142 64.88389015 C-24.11066961 61.56124788 -24.41873071 58.23895875 -24.7296524 54.91690636 C-25.09590579 50.99832355 -25.4530368 47.07900997 -25.8033371 43.15896988 C-25.93284556 41.72566906 -26.06538833 40.29263844 -26.20129395 38.85993004 C-28.1984361 17.74616478 -28.1984361 17.74616478 -22.12496948 9.18414307 C-15.59155462 2.10743784 -9.64751523 -0.17416921 0 0 Z \" fill=\"#1676FE\" transform=\"translate(29.124969482421875,18.81585693359375)\"/><path d=\"M0 0 C3.58061882 0.6126215 6.66682277 1.57670411 10 3.01171875 C11.05445312 3.4607959 12.10890625 3.90987305 13.1953125 4.37255859 C14.0910498 4.75658844 14.0910498 4.75658844 15.00488281 5.14837646 C18.95315918 6.8337136 22.91559719 8.48554804 26.875 10.14453125 C28.70446892 10.91200966 30.53389517 11.67958977 32.36328125 12.44726562 C33.75667725 13.03181519 33.75667725 13.03181519 35.17822266 13.62817383 C37.04531323 14.41180909 38.91217885 15.19598056 40.77880859 15.98071289 C51.78442524 20.60672681 62.8065501 25.17351567 73.92016602 29.53511047 C74.70576904 29.84538681 75.49137207 30.15566315 76.30078125 30.4753418 C76.99341064 30.74678513 77.68604004 31.01822845 78.3996582 31.29789734 C80 32 80 32 81 33 C81.08726223 34.78071246 81.10699041 36.5648314 81.09765625 38.34765625 C81.09282227 39.96704102 81.09282227 39.96704102 81.08789062 41.61914062 C81.07532227 43.32360352 81.07532227 43.32360352 81.0625 45.0625 C81.05798828 46.20267578 81.05347656 47.34285156 81.04882812 48.51757812 C81.03699747 51.34510351 81.0205141 54.1725264 81 57 C70.45457789 61.97108066 59.76230401 66.52314185 49 71 C47.117115 71.78367999 45.23430709 72.56754523 43.3515625 73.3515625 C42.33989014 73.77284424 41.32821777 74.19412598 40.28588867 74.62817383 C37.35362582 75.8523647 34.4236323 77.08183391 31.49446106 78.31340027 C28.95413499 79.38025947 26.41192105 80.44257095 23.86938477 81.50415039 C22.56456015 82.05012212 21.26054124 82.59802286 19.95727539 83.14770508 C18.04517339 83.95371066 16.13035054 84.75290732 14.21484375 85.55078125 C13.09198975 86.02169189 11.96913574 86.49260254 10.81225586 86.9777832 C8 88 8 88 5 88 C4.67 79.75 4.34 71.5 4 63 C10.48039078 60.2119249 16.80476548 57.66499521 23.5859375 55.73828125 C26.87886243 54.73122168 30.01866906 53.42709683 33.19921875 52.11328125 C37.81056312 50.2803201 42.50515407 48.68012404 47.19140625 47.05078125 C49.86735503 46.27081058 49.86735503 46.27081058 51 45 C50.23816406 44.74605469 49.47632813 44.49210937 48.69140625 44.23046875 C34.5 39.5 34.5 39.5 32.3515625 38.78125 C30.57751929 38.19186687 28.80104654 37.60978943 27.0234375 37.03125 C22.7329788 35.62593847 18.52331674 34.22556756 14.375 32.4375 C10.01721187 30.58140505 5.55181565 29.29136017 1 28 C0.11504503 18.62895894 -0.1170409 9.40228594 0 0 Z \" fill=\"#FAFCFF\" transform=\"translate(54,67)\"/><path d=\"M0 0 C0 5.94 0 11.88 0 18 C-43.19589977 20.29612756 -43.19589977 20.29612756 -62 20 C-62 14.06 -62 8.12 -62 2 C-41.3093288 0.745341 -20.73833227 -0.34985003 0 0 Z \" fill=\"#F8FAFF\" transform=\"translate(206,151)\"/>\n </symbol>\n <symbol id=\"icon_together_ai\" viewBox=\"0 0 24 24\">\n <title>together.ai</title><path d=\"M17.385 11.23a4.615 4.615 0 100-9.23 4.615 4.615 0 000 9.23zm0 10.77a4.615 4.615 0 100-9.23 4.615 4.615 0 000 9.23zm-10.77 0a4.615 4.615 0 100-9.23 4.615 4.615 0 000 9.23z\" opacity=\".2\"></path><circle cx=\"6.615\" cy=\"6.615\" r=\"4.615\"></circle>\n </symbol>\n <symbol id=\"icon_upstage\" viewBox=\"0 0 24 24\">\n <title>Upsate</title><path d=\"M19.763 0l-.373 1.297h2.594L22.354 0h-2.591z\"></path><path d=\"M16.192 2.27l-.376 1.298h5.52l.37-1.298h-5.514z\"></path><path d=\"M12.897 4.54l-.377 1.298h8.167l.37-1.297h-8.16z\"></path><path d=\"M2.85 6.81l-.377 1.298h17.565l.37-1.297H2.85z\"></path><path d=\"M3.884 9.081l-.376 1.297H19.39l.37-1.297H3.883z\"></path><path d=\"M4.088 24l.376-1.297H1.866L1.5 24h2.588z\"></path><path d=\"M7.662 21.73l.376-1.298H2.515L2.15 21.73h5.513z\"></path><path d=\"M10.957 19.46l.377-1.298h-8.17l-.367 1.297h8.16z\"></path><path d=\"M21.005 17.19l.376-1.298H3.812l-.366 1.297h17.559z\"></path><path d=\"M19.967 14.919l.376-1.297H4.461l-.366 1.297h15.872z\"></path><path d=\"M18.787 12.649l.376-1.298H4.26l-.366 1.298h14.893z\"></path>\n </symbol>\n <symbol id=\"icon_v_0\" viewBox=\"0 0 24 24\">\n <title>V0</title><path d=\"M14.252 8.25h5.624c.088 0 .176.006.26.018l-5.87 5.87a1.889 1.889 0 01-.019-.265V8.25h-2.25v5.623a4.124 4.124 0 004.125 4.125h5.624v-2.25h-5.624c-.09 0-.179-.006-.265-.018l5.874-5.875a1.9 1.9 0 01.02.27v5.623H24v-5.624A4.124 4.124 0 0019.876 6h-5.624v2.25zM0 7.5v.006l7.686 9.788c.924 1.176 2.813.523 2.813-.973V7.5H8.25v6.87L2.856 7.5H0z\"></path>\n </symbol>\n <symbol id=\"icon_venice\" viewBox=\"0 0 24 24\">\n <image href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADa0lEQVR4AcVXzU8TQRQfSgVUGmqMJnARL3rF8AdY7qB4JB6oF+QmBu8sdw14Ez1QL3CUiPfi3a+rJgZQKQjIN+XDwvh+s33t7OxOu9tE/SWbXabz5v3e5zzqJEH8R8RERGw+H1WPiUJuQeTud6n3XyOw+yZDyh36kh4SULo6ek/E29pFbrBLnO5uhT4zEoFCblG9Lww4JRKs/PLIpDjT2q7+rpnAyqM7ZOXLUIJMAjJQDuvD4NeThx4dJQJgffzlk1hz0qFJJLrTouF6R2jla+Sp7elx0rXpJxBLJEXbs6w6LAqJsIDy3dkMeW5EtPQN+QkAUB6GxBF5Ksq6rtwNnQgmoBbIE7HmpCtokEh09ytyy1RupjIoyc/NKCV6SFi5izrhg9RwsrMpv/d1yK+dwvPszGZKe34vzcvFnnY5n0rKvewr+dNJy1V6sG9jYkQ/rrSuPxsTjmdPnd4JkaGwjBNSxyUnozwAqKYz6DYdeAz7Tfd6LXfR1JlSb+w9W/z2eIBx8C6r2MIbR58/KottnqhkOdZ3Xk+qb+wNgpUAlCMkpjKTxD6FwaacARKRCOBgVi4DLNZJVFPOyJNRoQnYUIlEJeWVEImAjUStymsiYJJYGkjVrLxmAkyCa3tluFfWikjXMer9262r7lDywp0H0Af2qQNiDb9tTz+NcqSIi4hAm3aHEreh4EZEU+K1WKJFREEgAVgKS2CZe2hSJHrSqhM20vVb7pIBvZ3W0CEhf/B+zifvgxkTZDb6PJIMcQa2psZUrLHOCbfq9KsEPKROiXXs4cQ05bGfO6vZX4Qtsbamxj0b+ZLC24a97ExJ3uyQetVYkxCJBXc1k7virVc8njqf6hXn6IH788XQmMC0w/LmrI9cgfwhhYVD4wuB7jYb4GpcwSbg2jDy64+H1OPzABInTlNttfkOlgTN/khcXLfV5Fv6HoiTvfLU7JkJj4uzQCXsv50R9Ylk4G+HumstOPgwJ+qby/JxnUDDtQ7x4+4NZWVT583y0EDYoEYjiRz+Obk4POY7GJbDg2hGbrxvi0Y6j4GyhOcgjzG+BD0++eIgEnTbcc+33esARjRbFXAVmfK+PqDXLCcUT0hhkozlQZhrnokFyXtmQgZchZJEuaD1nlLSoIthno9Z4q8DubRO82VheaGqfCCBf4k/0oXmr3rNnT4AAAAASUVORK5CYII=\" width=\"24\" height=\"24\"/>\n </symbol>\n <symbol id=\"icon_vercel\" viewBox=\"0 0 24 24\">\n <title>Vercel</title><path d=\"M12 0l12 20.785H0L12 0z\"></path>\n </symbol>\n <symbol id=\"icon_xai\" viewBox=\"0 0 24 24\">\n <title>Grok</title><path d=\"M6.469 8.776L16.512 23h-4.464L2.005 8.776H6.47zm-.004 7.9l2.233 3.164L6.467 23H2l4.465-6.324zM22 2.582V23h-3.659V7.764L22 2.582zM22 1l-9.952 14.095-2.233-3.163L17.533 1H22z\"></path>\n </symbol>\n</svg>";
|
|
4
|
+
declare function getIcon(providerName: string): string | null;
|
|
5
|
+
declare function hasProviderIcon(providerName: string): boolean;
|
|
6
|
+
declare function isSvgIcon(providerName: string): boolean;
|
|
7
|
+
declare function isBase64Icon(providerName: string): boolean;
|
|
8
|
+
|
|
9
|
+
export { getIcon, hasProviderIcon, iconSymbols, isBase64Icon, isSvgIcon, providerIconMap, spriteSheet };
|