UNPKG

llm-info

Version:

Information on LLM models, context window token limit, output token limit, pricing and more

872 lines (866 loc) 29.8 kB
var __defProp = Object.defineProperty; var __defProps = Object.defineProperties; var __getOwnPropDescs = Object.getOwnPropertyDescriptors; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __spreadValues = (a, b) => { for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]); if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) { if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]); } return a; }; var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); var __async = (__this, __arguments, generator) => { return new Promise((resolve, reject) => { var fulfilled = (value) => { try { step(generator.next(value)); } catch (e) { reject(e); } }; var rejected = (value) => { try { step(generator.throw(value)); } catch (e) { reject(e); } }; var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); step((generator = generator.apply(__this, __arguments)).next()); }); }; // src/model.ts var ModelEnum = /* @__PURE__ */ ((ModelEnum2) => { ModelEnum2["gpt-4"] = "gpt-4"; ModelEnum2["gpt-4-turbo"] = "gpt-4-turbo"; ModelEnum2["gpt-4o"] = "gpt-4o"; ModelEnum2["gpt-4o-64k-output-alpha"] = "gpt-4o-64k-output-alpha"; ModelEnum2["gpt-4o-mini"] = "gpt-4o-mini"; ModelEnum2["gpt-4o-2024-08-06"] = "gpt-4o-2024-08-06"; ModelEnum2["gpt-4.1"] = "gpt-4.1"; ModelEnum2["gpt-4.1-mini"] = "gpt-4.1-mini"; ModelEnum2["gpt-4.1-nano"] = "gpt-4.1-nano"; ModelEnum2["gpt-5"] = "gpt-5"; ModelEnum2["gpt-5-mini"] = "gpt-5-mini"; ModelEnum2["gpt-5-nano"] = "gpt-5-nano"; ModelEnum2["o1-preview"] = "o1-preview"; ModelEnum2["o1-mini"] = "o1-mini"; ModelEnum2["o1"] = "o1"; ModelEnum2["o3"] = "o3"; ModelEnum2["o3-mini"] = "o3-mini"; ModelEnum2["o4-mini"] = "o4-mini"; ModelEnum2["claude-3-5-sonnet-20240620"] = "claude-3-5-sonnet-20240620"; ModelEnum2["claude-3-5-sonnet-20241022"] = "claude-3-5-sonnet-20241022"; ModelEnum2["claude-3-5-haiku-20241022"] = "claude-3-5-haiku-20241022"; ModelEnum2["claude-3-7-sonnet-20250219"] = "claude-3-7-sonnet-20250219"; ModelEnum2["claude-opus-4-20250514"] = "claude-opus-4-20250514"; ModelEnum2["claude-opus-4-1-20250805"] = "claude-opus-4-1-20250805"; ModelEnum2["claude-sonnet-4-20250514"] = "claude-sonnet-4-20250514"; ModelEnum2["deepseek-chat"] = "deepseek-chat"; ModelEnum2["deepseek-reasoner"] = "deepseek-reasoner"; ModelEnum2["gemini-2.5-pro-exp-03-25"] = "gemini-2.5-pro-exp-03-25"; ModelEnum2["gemini-2.5-pro-preview-03-25"] = "gemini-2.5-pro-preview-03-25"; ModelEnum2["gemini-2.5-pro-preview-05-06"] = "gemini-2.5-pro-preview-05-06"; ModelEnum2["gemini-2.5-pro-preview-06-05"] = "gemini-2.5-pro-preview-06-05"; ModelEnum2["gemini-2.5-pro"] = "gemini-2.5-pro"; ModelEnum2["gemini-2.5-flash-preview-04-17"] = "gemini-2.5-flash-preview-04-17"; ModelEnum2["gemini-2.5-flash-preview-05-20"] = "gemini-2.5-flash-preview-05-20"; ModelEnum2["gemini-2.5-flash"] = "gemini-2.5-flash"; ModelEnum2["grok-4"] = "grok-4"; ModelEnum2["grok-code-fast-1"] = "grok-code-fast-1"; return ModelEnum2; })(ModelEnum || {}); var NonModelEnum = /* @__PURE__ */ ((NonModelEnum2) => { NonModelEnum2["chatgpt"] = "chatgpt"; return NonModelEnum2; })(NonModelEnum || {}); var AllModels = Object.values(ModelEnum); var AllModelLikes = [...AllModels, ...Object.values(NonModelEnum)]; // src/provider.ts var AI_PROVIDERS = { OPENAI: "openai", ANTHROPIC: "anthropic", AZURE_OPENAI: "azure-openai", DEEPSEEK: "deepseek", OPENROUTER: "openrouter", GOOGLE: "google", GOOGLE_VERTEX_AI: "google-vertex-ai", FIREWORKS: "fireworks", XAI: "xai" }; var AI_PROVIDER_CONFIG = { [AI_PROVIDERS.OPENAI]: { name: "OpenAI", firstParty: true, thirdParty: false, nativeSDK: true, apiKeysPage: "https://platform.openai.com/api-keys" }, [AI_PROVIDERS.ANTHROPIC]: { name: "Anthropic", firstParty: true, thirdParty: false, nativeSDK: true, apiKeysPage: "https://console.anthropic.com/settings/keys" }, [AI_PROVIDERS.AZURE_OPENAI]: { name: "Azure OpenAI", firstParty: false, baseURL: "https://<your-resource-name>.openai.azure.com/", website: "https://azure.microsoft.com/en-us/products/ai-services/openai-service", thirdParty: true, nativeSDK: false }, [AI_PROVIDERS.DEEPSEEK]: { name: "DeepSeek", firstParty: true, baseURL: "https://api.deepseek.com", thirdParty: false, nativeSDK: false, apiKeysPage: "https://platform.deepseek.com/api_keys" }, [AI_PROVIDERS.OPENROUTER]: { name: "OpenRouter", firstParty: false, baseURL: "https://openrouter.ai/api/v1", website: "https://openrouter.ai", thirdParty: true, nativeSDK: false, apiKeysPage: "https://openrouter.ai/settings/keys" }, [AI_PROVIDERS.GOOGLE]: { name: "Google", firstParty: true, baseURL: "https://generativelanguage.googleapis.com/v1beta/openai/", thirdParty: false, nativeSDK: true, apiKeysPage: "https://aistudio.google.com/app/apikey" }, [AI_PROVIDERS.FIREWORKS]: { name: "Fireworks", firstParty: false, baseURL: "https://api.fireworks.ai/inference/v1", website: "https://fireworks.ai", thirdParty: true, nativeSDK: false }, [AI_PROVIDERS.GOOGLE_VERTEX_AI]: { name: "Google Vertex AI", firstParty: true, thirdParty: false, nativeSDK: true }, [AI_PROVIDERS.XAI]: { name: "xAI", firstParty: true, baseURL: "https://api.x.ai/v1", thirdParty: false, nativeSDK: false, apiKeysPage: "https://console.x.ai/" } }; var AI_PROVIDER_NAME_MAP = { [AI_PROVIDERS.OPENAI]: AI_PROVIDER_CONFIG[AI_PROVIDERS.OPENAI].name, [AI_PROVIDERS.ANTHROPIC]: AI_PROVIDER_CONFIG[AI_PROVIDERS.ANTHROPIC].name, [AI_PROVIDERS.AZURE_OPENAI]: AI_PROVIDER_CONFIG[AI_PROVIDERS.AZURE_OPENAI].name, [AI_PROVIDERS.DEEPSEEK]: AI_PROVIDER_CONFIG[AI_PROVIDERS.DEEPSEEK].name, [AI_PROVIDERS.OPENROUTER]: AI_PROVIDER_CONFIG[AI_PROVIDERS.OPENROUTER].name, [AI_PROVIDERS.GOOGLE]: AI_PROVIDER_CONFIG[AI_PROVIDERS.GOOGLE].name, [AI_PROVIDERS.FIREWORKS]: AI_PROVIDER_CONFIG[AI_PROVIDERS.FIREWORKS].name, [AI_PROVIDERS.GOOGLE_VERTEX_AI]: AI_PROVIDER_CONFIG[AI_PROVIDERS.GOOGLE_VERTEX_AI].name, [AI_PROVIDERS.XAI]: AI_PROVIDER_CONFIG[AI_PROVIDERS.XAI].name }; // src/ModelInfoMap.ts function createModelInfo(id, info) { return __spreadProps(__spreadValues({}, info), { id }); } var ModelInfoMap = { ["gpt-4" /* gpt-4 */]: { name: "GPT-4", provider: AI_PROVIDERS.OPENAI, contextWindowTokenLimit: 128e3, outputTokenLimit: 4096, pricePerMillionInputTokens: 30, pricePerMillionOutputTokens: 60, tokenizerId: "Xenova/gpt-4", legacy: true, legacyReason: "Superceded by GPT-4o" }, ["gpt-4-turbo" /* gpt-4-turbo */]: { name: "GPT-4 Turbo", provider: AI_PROVIDERS.OPENAI, contextWindowTokenLimit: 128e3, outputTokenLimit: 4096, pricePerMillionInputTokens: 10, pricePerMillionOutputTokens: 30, tokenizerId: "Xenova/gpt-4", legacy: true, legacyReason: "Superceded by GPT-4o" }, ["gpt-4o" /* gpt-4o */]: { name: "GPT-4o", provider: AI_PROVIDERS.OPENAI, contextWindowTokenLimit: 128e3, outputTokenLimit: 4096, pricePerMillionInputTokens: 5, pricePerMillionOutputTokens: 15, tokenizerId: "Xenova/gpt-4o", supportsImageInput: true, legacy: true, legacyReason: "Superceded by GPT-5" }, ["gpt-4o-mini" /* gpt-4o-mini */]: { name: "GPT-4o mini", provider: AI_PROVIDERS.OPENAI, contextWindowTokenLimit: 128e3, outputTokenLimit: 4096, pricePerMillionInputTokens: 0.15, pricePerMillionOutputTokens: 0.6, tokenizerId: "Xenova/gpt-4o", small: true, supportsImageInput: true, legacy: true, legacyReason: "Superceded by GPT-5 mini" }, ["gpt-4o-64k-output-alpha" /* gpt-4o-64k-output-alpha */]: { name: "GPT-4o Long Output", provider: AI_PROVIDERS.OPENAI, contextWindowTokenLimit: 128e3, outputTokenLimit: 64e3, pricePerMillionInputTokens: 6, pricePerMillionOutputTokens: 18, tokenizerId: "Xenova/gpt-4o", alpha: true, legacy: true, notes: "OpenAI is offering an experimental version of GPT-4o with a maximum of 64K output tokens per request.", notesUrl: "https://openai.com/gpt-4o-long-output/", supportsImageInput: true, legacyReason: "Superceded by GPT-4o" }, ["gpt-4o-2024-08-06" /* gpt-4o-2024-08-06 */]: { name: "GPT-4o 08-06", provider: AI_PROVIDERS.OPENAI, contextWindowTokenLimit: 128e3, outputTokenLimit: 16384, pricePerMillionInputTokens: 2.5, pricePerMillionOutputTokens: 10, tokenizerId: "Xenova/gpt-4o", notes: "This model is a version of GPT-4o that was released on August 6, 2024. It has a maximum of 16K output tokens per request.", legacy: true, supportsImageInput: true, legacyReason: "Superceded by GPT-4o" }, ["gpt-4.1" /* gpt-4.1 */]: { name: "GPT-4.1", provider: AI_PROVIDERS.OPENAI, contextWindowTokenLimit: 1047576, outputTokenLimit: 32768, pricePerMillionInputTokens: 2, pricePerMillionOutputTokens: 8, tokenizerId: "Xenova/gpt-4o", notes: "GPT-4.1 is a flagship model for complex tasks. It is well suited for problem solving across domains. Knowledge cutoff: Jun 01, 2024.", recommendedForCoding: true, recommendedForWriting: true, supportsImageInput: true, legacy: false, // legacyReason: 'Superceded by GPT-5', openRouterModelId: "openai/gpt-4.1" }, ["gpt-4.1-mini" /* gpt-4.1-mini */]: { name: "GPT-4.1 mini", provider: AI_PROVIDERS.OPENAI, contextWindowTokenLimit: 1047576, outputTokenLimit: 32768, pricePerMillionInputTokens: 0.4, pricePerMillionOutputTokens: 1.6, tokenizerId: "Xenova/gpt-4o", notes: "GPT-4.1 mini provides a balance between intelligence, speed, and cost that makes it an attractive model for many use cases.", small: true, legacy: true, legacyReason: "Superceded by GPT-5 mini" }, ["gpt-4.1-nano" /* gpt-4.1-nano */]: { name: "GPT-4.1 nano", provider: AI_PROVIDERS.OPENAI, contextWindowTokenLimit: 1047576, outputTokenLimit: 32768, pricePerMillionInputTokens: 0.1, pricePerMillionOutputTokens: 0.4, tokenizerId: "Xenova/gpt-4o", notes: "GPT-4.1 nano is the fastest, most cost-effective GPT-4.1 model.", small: true, legacy: true, legacyReason: "Superceded by GPT-5 nano" }, ["gpt-5" /* gpt-5 */]: { name: "GPT-5", provider: AI_PROVIDERS.OPENAI, contextWindowTokenLimit: 4e5, outputTokenLimit: 128e3, pricePerMillionInputTokens: 1.25, pricePerMillionOutputTokens: 10, tokenizerId: "Xenova/gpt-4o", supportsImageInput: true, recommendedForCoding: true, recommendedForWriting: true, reasoning: true, legacy: false, openRouterModelId: "openai/gpt-5" }, ["gpt-5-mini" /* gpt-5-mini */]: { name: "GPT-5 mini", provider: AI_PROVIDERS.OPENAI, contextWindowTokenLimit: 4e5, outputTokenLimit: 128e3, pricePerMillionInputTokens: 0.25, pricePerMillionOutputTokens: 2, tokenizerId: "Xenova/gpt-4o", supportsImageInput: true, reasoning: true, small: true, legacy: false, openRouterModelId: "openai/gpt-5-mini" }, ["gpt-5-nano" /* gpt-5-nano */]: { name: "GPT-5 nano", provider: AI_PROVIDERS.OPENAI, contextWindowTokenLimit: 4e5, outputTokenLimit: 128e3, pricePerMillionInputTokens: 0.05, pricePerMillionOutputTokens: 0.4, tokenizerId: "Xenova/gpt-4o", supportsImageInput: true, reasoning: true, small: true, legacy: false, openRouterModelId: "openai/gpt-5-nano" }, ["o1-preview" /* o1-preview */]: { name: "o1-preview", provider: AI_PROVIDERS.OPENAI, contextWindowTokenLimit: 128e3, outputTokenLimit: 32768, pricePerMillionInputTokens: 15, pricePerMillionOutputTokens: 60, tokenizerId: "Xenova/gpt-4o", notes: "An early preview of our o1 model, designed to reason about hard problems using broad general knowledge about the world.", alpha: true, legacy: true, legacyReason: "Superceded by o1" }, ["o1-mini" /* o1-mini */]: { name: "o1-mini", provider: AI_PROVIDERS.OPENAI, contextWindowTokenLimit: 128e3, outputTokenLimit: 65536, pricePerMillionInputTokens: 1.1, pricePerMillionOutputTokens: 4.4, tokenizerId: "Xenova/gpt-4o", notes: "A faster and cheaper version of o1, particularly adept at coding, math, and science tasks where extensive general knowledge isn't required.", small: true, reasoning: true, legacy: true, legacyReason: "Superceded by o3-mini" }, ["o1" /* o1 */]: { name: "o1", provider: AI_PROVIDERS.OPENAI, contextWindowTokenLimit: 2e5, outputTokenLimit: 1e5, pricePerMillionInputTokens: 15, pricePerMillionOutputTokens: 60, tokenizerId: "Xenova/gpt-4o", notes: "Reasoning model designed to solve hard problems across domains.", legacy: true, reasoning: true, supportsImageInput: true, legacyReason: "Superceded by o3" }, ["o3" /* o3 */]: { name: "o3", provider: AI_PROVIDERS.OPENAI, contextWindowTokenLimit: 2e5, outputTokenLimit: 1e5, pricePerMillionInputTokens: 10, pricePerMillionOutputTokens: 40, tokenizerId: "Xenova/gpt-4o", notes: "o3 is a well-rounded and powerful model across domains.", reasoning: true, supportsImageInput: true, legacy: false }, ["o3-mini" /* o3-mini */]: { name: "o3-mini", provider: AI_PROVIDERS.OPENAI, contextWindowTokenLimit: 2e5, outputTokenLimit: 1e5, pricePerMillionInputTokens: 1.1, pricePerMillionOutputTokens: 4.4, tokenizerId: "Xenova/gpt-4o", reasoning: true, small: true, legacy: true, legacyReason: "Superceded by o4-mini" }, ["o4-mini" /* o4-mini */]: { name: "o4-mini", provider: AI_PROVIDERS.OPENAI, contextWindowTokenLimit: 2e5, outputTokenLimit: 1e5, pricePerMillionInputTokens: 1.1, pricePerMillionOutputTokens: 4.4, tokenizerId: "Xenova/gpt-4o", notes: "o4-mini is OpenAI's latest small o-series model. It's optimized for fast, effective reasoning with exceptionally efficient performance in coding and visual tasks.", reasoning: true, small: true, legacy: false, openRouterModelId: "openai/o4-mini" }, ["claude-3-5-sonnet-20240620" /* claude-3-5-sonnet-20240620 */]: { name: "Claude 3.5 Sonnet (Old)", provider: AI_PROVIDERS.ANTHROPIC, contextWindowTokenLimit: 2e5, outputTokenLimit: 8192, pricePerMillionInputTokens: 3, pricePerMillionOutputTokens: 15, tokenizerId: "Xenova/claude-tokenizer", notes: "8192 output tokens is in beta.", notesUrl: "https://docs.anthropic.com/en/docs/about-claude/models", supportsImageInput: true, legacy: true, legacyReason: "Superceded by new Claude 3.5 Sonnet" }, ["claude-3-5-sonnet-20241022" /* claude-3-5-sonnet-20241022 */]: { name: "Claude 3.5 Sonnet", provider: AI_PROVIDERS.ANTHROPIC, contextWindowTokenLimit: 2e5, outputTokenLimit: 8192, pricePerMillionInputTokens: 3, pricePerMillionOutputTokens: 15, tokenizerId: "Xenova/claude-tokenizer", notes: "New version of Claude 3.5 Sonnet released on October 22, 2024.", notesUrl: "https://www.anthropic.com/news/3-5-models-and-computer-use", recommendedForCoding: false, supportsImageInput: true, legacy: true, legacyReason: "Superceded by Claude 3.7 Sonnet and Claude Sonnet 4" }, ["claude-3-5-haiku-20241022" /* claude-3-5-haiku-20241022 */]: { name: "Claude 3.5 Haiku", provider: AI_PROVIDERS.ANTHROPIC, contextWindowTokenLimit: 2e5, outputTokenLimit: 8192, pricePerMillionInputTokens: 1, pricePerMillionOutputTokens: 5, tokenizerId: "Xenova/claude-tokenizer", supportsImageInput: true, legacy: false }, ["claude-3-7-sonnet-20250219" /* claude-3-7-sonnet-20250219 */]: { name: "Claude 3.7 Sonnet", provider: AI_PROVIDERS.ANTHROPIC, contextWindowTokenLimit: 2e5, outputTokenLimit: 64e3, pricePerMillionInputTokens: 3, pricePerMillionOutputTokens: 15, tokenizerId: "Xenova/claude-tokenizer", recommendedForCoding: false, supportsImageInput: true, legacy: true, legacyReason: "Superceded by Claude Sonnet 4" }, ["claude-opus-4-20250514" /* claude-opus-4-20250514 */]: { name: "Claude Opus 4", provider: AI_PROVIDERS.ANTHROPIC, contextWindowTokenLimit: 2e5, outputTokenLimit: 32e3, pricePerMillionInputTokens: 15, pricePerMillionOutputTokens: 75, tokenizerId: "Xenova/claude-tokenizer", notes: "Most intelligent model for complex tasks", notesUrl: "https://www.anthropic.com/claude/opus", supportsImageInput: true, legacy: true, legacyReason: "Superceded by Claude Opus 4.1", openRouterModelId: "anthropic/claude-opus-4" }, ["claude-opus-4-1-20250805" /* claude-opus-4-1-20250805 */]: { name: "Claude Opus 4.1", provider: AI_PROVIDERS.ANTHROPIC, contextWindowTokenLimit: 2e5, outputTokenLimit: 32e3, pricePerMillionInputTokens: 15, pricePerMillionOutputTokens: 75, tokenizerId: "Xenova/claude-tokenizer", notes: "Most intelligent model for complex tasks", notesUrl: "https://www.anthropic.com/claude/opus", supportsImageInput: true, legacy: false, openRouterModelId: "anthropic/claude-opus-4.1" }, ["claude-sonnet-4-20250514" /* claude-sonnet-4-20250514 */]: { name: "Claude Sonnet 4", provider: AI_PROVIDERS.ANTHROPIC, contextWindowTokenLimit: 2e5, outputTokenLimit: 64e3, pricePerMillionInputTokens: 3, pricePerMillionOutputTokens: 15, tokenizerId: "Xenova/claude-tokenizer", notes: "Optimal balance of intelligence, cost, and speed", notesUrl: "https://www.anthropic.com/claude/sonnet", supportsImageInput: true, recommendedForCoding: true, recommendedForWriting: true, legacy: false, openRouterModelId: "anthropic/claude-sonnet-4" }, ["chatgpt" /* chatgpt */]: { name: "ChatGPT", provider: AI_PROVIDERS.OPENAI, contextWindowTokenLimit: 4096, outputTokenLimit: 4096, pricePerMillionInputTokens: null, pricePerMillionOutputTokens: null, tokenizerId: null, legacy: false }, ["deepseek-chat" /* deepseek-chat */]: { name: "DeepSeek-V3.1", provider: AI_PROVIDERS.DEEPSEEK, contextWindowTokenLimit: 128e3, outputTokenLimit: 8e3, pricePerMillionInputTokens: 0.56, pricePerMillionOutputTokens: 1.68, tokenizerId: "Xenova/gpt-4o", recommendedForCoding: true, supportsImageInput: false, legacy: false, releaseDate: "2025-08-21" }, ["deepseek-reasoner" /* deepseek-reasoner */]: { name: "DeepSeek-V3.1 (Thinking)", provider: AI_PROVIDERS.DEEPSEEK, contextWindowTokenLimit: 128e3, outputTokenLimit: 8e3, pricePerMillionInputTokens: 0.56, pricePerMillionOutputTokens: 1.68, tokenizerId: "Xenova/gpt-4o", reasoning: true, supportsImageInput: false, legacy: false, releaseDate: "2025-08-21" }, ["gemini-2.5-pro-exp-03-25" /* gemini-2.5-pro-exp-03-25 */]: { name: "Gemini 2.5 Pro Experimental", provider: AI_PROVIDERS.GOOGLE, contextWindowTokenLimit: 1048576, outputTokenLimit: 65536, pricePerMillionInputTokens: 0, pricePerMillionOutputTokens: 0, tokenizerId: "Xenova/gpt-4o", notes: "This is an experimental model that is currently free to test.", reasoning: true, recommendedForCoding: false, supportsImageInput: true, legacy: true, legacyReason: "Superceded by Gemini 2.5 Pro Preview" }, ["gemini-2.5-pro-preview-03-25" /* gemini-2.5-pro-preview-03-25 */]: { name: "Gemini 2.5 Pro Preview (03-25)", provider: AI_PROVIDERS.GOOGLE, contextWindowTokenLimit: 1048576, outputTokenLimit: 65536, pricePerMillionInputTokens: 2.5, pricePerMillionOutputTokens: 15, tokenizerId: "Xenova/gpt-4o", notes: "The pricing is for prompt with context length > 200k tokens", notesUrl: "https://ai.google.dev/gemini-api/docs/pricing", reasoning: true, recommendedForCoding: false, supportsImageInput: true, legacy: true, legacyReason: "Superceded by Gemini 2.5 Pro Preview (05-06)" }, ["gemini-2.5-pro-preview-05-06" /* gemini-2.5-pro-preview-05-06 */]: { name: "Gemini 2.5 Pro Preview (05-06)", provider: AI_PROVIDERS.GOOGLE, contextWindowTokenLimit: 1048576, outputTokenLimit: 65536, pricePerMillionInputTokens: 2.5, pricePerMillionOutputTokens: 15, tokenizerId: "Xenova/gpt-4o", notes: "The pricing is for prompt with context length > 200k tokens", notesUrl: "https://ai.google.dev/gemini-api/docs/pricing", reasoning: true, recommendedForCoding: true, supportsImageInput: true, legacy: true, legacyReason: "Superceded by Gemini 2.5 Pro Preview (06-05)", openRouterModelId: "google/gemini-2.5-pro-preview" }, ["gemini-2.5-pro-preview-06-05" /* gemini-2.5-pro-preview-06-05 */]: { name: "Gemini 2.5 Pro Preview (06-05)", provider: AI_PROVIDERS.GOOGLE, contextWindowTokenLimit: 1048576, outputTokenLimit: 65536, pricePerMillionInputTokens: 2.5, pricePerMillionOutputTokens: 15, tokenizerId: "Xenova/gpt-4o", notes: "The pricing is for prompt with context length > 200k tokens", notesUrl: "https://ai.google.dev/gemini-api/docs/pricing", reasoning: true, recommendedForCoding: true, recommendedForWriting: false, supportsImageInput: true, legacy: true, legacyReason: "Superceded by Gemini 2.5 Pro", openRouterModelId: "google/gemini-2.5-pro-preview" }, ["gemini-2.5-pro" /* gemini-2.5-pro */]: { name: "Gemini 2.5 Pro", provider: AI_PROVIDERS.GOOGLE, contextWindowTokenLimit: 1048576, outputTokenLimit: 65536, pricePerMillionInputTokens: 2.5, pricePerMillionOutputTokens: 15, tokenizerId: "Xenova/gpt-4o", notes: "The pricing is for prompt with context length > 200k tokens", notesUrl: "https://ai.google.dev/gemini-api/docs/pricing", reasoning: true, recommendedForCoding: true, recommendedForWriting: true, supportsImageInput: true, legacy: false, openRouterModelId: "google/gemini-2.5-pro" }, ["gemini-2.5-flash-preview-04-17" /* gemini-2.5-flash-preview-04-17 */]: { name: "Gemini 2.5 Flash Preview", provider: AI_PROVIDERS.GOOGLE, contextWindowTokenLimit: 1048576, outputTokenLimit: 65536, pricePerMillionInputTokens: 0, pricePerMillionOutputTokens: 0, tokenizerId: "Xenova/gpt-4o", notes: "Google's best model in terms of price-performance, offering well-rounded capabilities", reasoning: true, small: true, recommendedForCoding: false, supportsImageInput: true, legacy: true, legacyReason: "Superceded by Gemini 2.5 Flash Preview (05-20)" }, ["gemini-2.5-flash-preview-05-20" /* gemini-2.5-flash-preview-05-20 */]: { name: "Gemini 2.5 Flash Preview (05-20)", provider: AI_PROVIDERS.GOOGLE, contextWindowTokenLimit: 1048576, outputTokenLimit: 65536, pricePerMillionInputTokens: 0, pricePerMillionOutputTokens: 0, tokenizerId: "Xenova/gpt-4o", notes: "Google's best model in terms of price-performance, offering well-rounded capabilities", reasoning: true, small: true, recommendedForCoding: false, supportsImageInput: true, legacy: true, legacyReason: "Superceded by Gemini 2.5 Flash", openRouterModelId: "google/gemini-2.5-flash-preview-05-20" }, ["gemini-2.5-flash" /* gemini-2.5-flash */]: { name: "Gemini 2.5 Flash", provider: AI_PROVIDERS.GOOGLE, contextWindowTokenLimit: 1048576, outputTokenLimit: 65536, pricePerMillionInputTokens: 0.3, pricePerMillionOutputTokens: 2.5, tokenizerId: "Xenova/gpt-4o", notes: "Google's best model in terms of price-performance, offering well-rounded capabilities", reasoning: true, small: true, recommendedForCoding: false, supportsImageInput: true, legacy: false, openRouterModelId: "google/gemini-2.5-flash" }, ["grok-4" /* grok-4 */]: { name: "Grok 4", provider: AI_PROVIDERS.XAI, contextWindowTokenLimit: 256e3, outputTokenLimit: 32768, // no info pricePerMillionInputTokens: 3, pricePerMillionOutputTokens: 15, tokenizerId: "Xenova/gpt-4o", reasoning: true, supportsImageInput: true, recommendedForCoding: false, recommendedForWriting: false, legacy: false }, ["grok-code-fast-1" /* grok-code-fast-1 */]: { name: "Grok Code Fast 1", provider: AI_PROVIDERS.XAI, contextWindowTokenLimit: 256e3, outputTokenLimit: 32768, // no info pricePerMillionInputTokens: 0.2, pricePerMillionOutputTokens: 1.5, tokenizerId: "Xenova/gpt-4o", reasoning: true, legacy: false } }; function getModelInfoWithId(id) { return createModelInfo(id, ModelInfoMap[id]); } function getAllModelsWithIds() { return Object.entries(ModelInfoMap).map( ([id, info]) => createModelInfo(id, info) ); } // src/getModelsByProvider.ts function convertOpenRouterModelToModelInfo(model) { const providerId = model.id.split("/")[0]; const promptPrice = parseFloat(model.pricing.prompt) * 1e6; const completionPrice = parseFloat(model.pricing.completion) * 1e6; let tokenizerId = "Xenova/gpt-4"; if (model.name.toLowerCase().includes("claude")) { tokenizerId = "Xenova/claude-tokenizer"; } return { name: model.name, provider: providerId, id: model.id, contextWindowTokenLimit: model.context_length, outputTokenLimit: null, pricePerMillionInputTokens: promptPrice, pricePerMillionOutputTokens: completionPrice, tokenizerId, notes: model.description, legacy: false }; } function getOpenRouterModels() { return __async(this, null, function* () { const response = yield fetch("https://openrouter.ai/api/v1/models"); if (!response.ok) { throw new Error( `Failed to fetch OpenRouter models: ${response.statusText}` ); } return response.json(); }); } function getModelsByProvider(provider) { return __async(this, null, function* () { if (provider === AI_PROVIDERS.OPENROUTER) { try { const response = yield fetch("https://openrouter.ai/api/v1/models"); if (!response.ok) { throw new Error( `Failed to fetch OpenRouter models: ${response.statusText}` ); } const data = yield response.json(); return data.data.map(convertOpenRouterModelToModelInfo); } catch (error) { console.error("Error fetching OpenRouter models:", error); return []; } } return getAllModelsWithIds().filter((model) => model.provider === provider); }); } function getModelsByApiId(apiModelId) { return getAllModelsWithIds().filter((model) => model.id === apiModelId); } // src/deprecatedModelMapping.ts var DEPRECATED_MODEL_MAPPINGS = [ { modelId: "deepseek-chat" /* deepseek-chat */, deprecatedName: "DeepSeek-V3 (new)", deprecatedReleaseDate: "2025-03-24", transitionDate: "2025-08-21", notes: "Model ID remained the same but refers to a newer version", deprecatedModelInfo: { id: "deepseek-chat" /* deepseek-chat */, name: "DeepSeek-V3 (new)", provider: AI_PROVIDERS.DEEPSEEK, contextWindowTokenLimit: 64e3, outputTokenLimit: 8192, pricePerMillionInputTokens: 0.27, pricePerMillionOutputTokens: 1.1, tokenizerId: null, legacy: true, legacyReason: "Replaced by DeepSeek-V3.1 on the same model ID", deprecated: true, releaseDate: "2025-03-24" } }, { modelId: "deepseek-reasoner" /* deepseek-reasoner */, deprecatedName: "DeepSeek-R1", deprecatedReleaseDate: "2025-05-28", transitionDate: "2025-08-21", notes: "Model ID remained the same but refers to a newer version", deprecatedModelInfo: { id: "deepseek-reasoner" /* deepseek-reasoner */, name: "DeepSeek-R1", provider: AI_PROVIDERS.DEEPSEEK, contextWindowTokenLimit: 64e3, outputTokenLimit: 8e3, pricePerMillionInputTokens: 0.55, pricePerMillionOutputTokens: 2.19, tokenizerId: "Xenova/gpt-4o", reasoning: true, supportsImageInput: false, legacy: true, legacyReason: "Replaced by DeepSeek-V3.1 (Thinking Mode) on the same model ID", deprecated: true, releaseDate: "2025-05-28" } } ]; function getDeprecatedMappingByModelId(modelId) { return DEPRECATED_MODEL_MAPPINGS.filter( (mapping) => mapping.modelId === modelId ); } function getAllDeprecatedMappings() { return [...DEPRECATED_MODEL_MAPPINGS]; } function getAllDeprecatedModelsInfo() { return DEPRECATED_MODEL_MAPPINGS.map( (mapping) => mapping.deprecatedModelInfo ); } export { AI_PROVIDERS, AI_PROVIDER_CONFIG, AI_PROVIDER_NAME_MAP, AllModelLikes, AllModels, DEPRECATED_MODEL_MAPPINGS, ModelEnum, ModelInfoMap, NonModelEnum, convertOpenRouterModelToModelInfo, getAllDeprecatedMappings, getAllDeprecatedModelsInfo, getAllModelsWithIds, getDeprecatedMappingByModelId, getModelInfoWithId, getModelsByApiId, getModelsByProvider, getOpenRouterModels };