kepler-chat/src/lib/backend/models/open-router.ts
2025-06-14 07:35:32 -05:00

49 lines
1 KiB
TypeScript

import { ResultAsync } from 'neverthrow';
export interface OpenRouterModel {
id: string;
name: string;
created: number;
description: string;
architecture: OpenRouterArchitecture;
top_provider: OpenRouterTopProvider;
pricing: OpenRouterPricing;
context_length: number;
hugging_face_id: string;
per_request_limits: Record<string, string>;
supported_parameters: string[];
}
interface OpenRouterArchitecture {
input_modalities: string[];
output_modalities: string[];
tokenizer: string;
}
interface OpenRouterTopProvider {
is_moderated: boolean;
}
interface OpenRouterPricing {
prompt: string;
completion: string;
image: string;
request: string;
input_cache_read: string;
input_cache_write: string;
web_search: string;
internal_reasoning: string;
}
export function getOpenRouterModels() {
return ResultAsync.fromPromise(
(async () => {
const res = await fetch('https://openrouter.ai/api/v1/models');
const { data } = await res.json()
return data as OpenRouterModel[];
})(),
() => '[open-router] Failed to fetch models'
);
}