UNPKG

@mastra/core

Version:
1,574 lines (1,572 loc) • 367 kB
import { NetlifyGateway } from './chunk-KBCM2L2S.js'; import { ModelsDevGateway, createOpenRouter } from './chunk-YJB7RPO7.js'; import { MastraModelGateway, createAnthropic, MASTRA_USER_AGENT, GATEWAY_AUTH_HEADER } from './chunk-DRULWNQ6.js'; import { MastraError } from './chunk-M7RBQNFP.js'; import fs from 'fs'; import { createRequire } from 'module'; import os from 'os'; import path from 'path'; // src/llm/model/gateways/gateway-helpers.ts function getGatewayId(gateway) { return gateway.getId?.() ?? gateway.id; } function shouldEnableGateway(gateway) { return gateway.shouldEnable?.() ?? true; } function findGatewayForModel(gatewayId, gateways) { const prefixedGateway = gateways.find((g) => { const id = getGatewayId(g); return id !== "models.dev" && (id === gatewayId || gatewayId.startsWith(`${id}/`)); }); if (prefixedGateway) { return prefixedGateway; } const claimingGateway = gateways.find((g) => getGatewayId(g) !== "models.dev" && g.handlesModel?.(gatewayId) === true); if (claimingGateway) { return claimingGateway; } const modelsDevGateway = gateways.find((g) => getGatewayId(g) === "models.dev"); if (modelsDevGateway) { return modelsDevGateway; } throw new MastraError({ id: "MODEL_ROUTER_NO_GATEWAY_FOUND", category: "USER", domain: "MODEL_ROUTER", text: `No Mastra model router gateway found for model id ${gatewayId}` }); } // src/llm/model/provider-registry.json var provider_registry_default = { providers: { requesty: { url: "https://router.requesty.ai/v1", apiKeyEnvVar: "REQUESTY_API_KEY", apiKeyHeader: "Authorization", name: "Requesty", models: [ "anthropic/claude-3-7-sonnet", "anthropic/claude-haiku-4-5", "anthropic/claude-opus-4", "anthropic/claude-opus-4-1", "anthropic/claude-opus-4-5", "anthropic/claude-opus-4-6", "anthropic/claude-sonnet-4", "anthropic/claude-sonnet-4-5", "anthropic/claude-sonnet-4-6", "google/gemini-2.5-flash", "google/gemini-2.5-pro", "google/gemini-3-flash-preview", "google/gemini-3-pro-preview", "openai/gpt-4.1", "openai/gpt-4.1-mini", "openai/gpt-4o-mini", "openai/gpt-5", "openai/gpt-5-chat", "openai/gpt-5-codex", "openai/gpt-5-image", "openai/gpt-5-mini", "openai/gpt-5-nano", "openai/gpt-5-pro", "openai/gpt-5.1", "openai/gpt-5.1-chat", "openai/gpt-5.1-codex", "openai/gpt-5.1-codex-max", "openai/gpt-5.1-codex-mini", "openai/gpt-5.2", "openai/gpt-5.2-chat", "openai/gpt-5.2-codex", "openai/gpt-5.2-pro", "openai/gpt-5.3-codex", "openai/gpt-5.4", "openai/gpt-5.4-pro", "openai/o4-mini", "xai/grok-4", "xai/grok-4-fast" ], docUrl: "https://requesty.ai/solution/llm-routing/models", gateway: "models.dev" }, "qiniu-ai": { url: "https://api.qnaigc.com/v1", apiKeyEnvVar: "QINIU_API_KEY", apiKeyHeader: "Authorization", name: "Qiniu", models: [ "MiniMax-M1", "claude-3.5-haiku", "claude-3.5-sonnet", "claude-3.7-sonnet", "claude-4.0-opus", "claude-4.0-sonnet", "claude-4.1-opus", "claude-4.5-haiku", "claude-4.5-opus", "claude-4.5-sonnet", "deepseek-r1", "deepseek-r1-0528", "deepseek-v3", "deepseek-v3-0324", "deepseek-v3.1", "deepseek/deepseek-math-v2", "deepseek/deepseek-v3.1-terminus", "deepseek/deepseek-v3.1-terminus-thinking", "deepseek/deepseek-v3.2-251201", "deepseek/deepseek-v3.2-exp", "deepseek/deepseek-v3.2-exp-thinking", "doubao-1.5-pro-32k", "doubao-1.5-thinking-pro", "doubao-1.5-vision-pro", "doubao-seed-1.6", "doubao-seed-1.6-flash", "doubao-seed-1.6-thinking", "doubao-seed-2.0-code", "doubao-seed-2.0-lite", "doubao-seed-2.0-mini", "doubao-seed-2.0-pro", "gemini-2.0-flash", "gemini-2.0-flash-lite", "gemini-2.5-flash", "gemini-2.5-flash-image", "gemini-2.5-flash-lite", "gemini-2.5-pro", "gemini-3.0-flash-preview", "gemini-3.0-pro-image-preview", "gemini-3.0-pro-preview", "glm-4.5", "glm-4.5-air", "gpt-oss-120b", "gpt-oss-20b", "kimi-k2", "kling-v2-6", "meituan/longcat-flash-chat", "meituan/longcat-flash-lite", "mimo-v2-flash", "minimax/minimax-m2", "minimax/minimax-m2.1", "minimax/minimax-m2.5", "minimax/minimax-m2.5-highspeed", "moonshotai/kimi-k2-0905", "moonshotai/kimi-k2-thinking", "moonshotai/kimi-k2.5", "openai/gpt-5", "openai/gpt-5.2", "qwen-max-2025-01-25", "qwen-turbo", "qwen-vl-max-2025-01-25", "qwen2.5-vl-72b-instruct", "qwen2.5-vl-7b-instruct", "qwen3-235b-a22b", "qwen3-235b-a22b-instruct-2507", "qwen3-235b-a22b-thinking-2507", "qwen3-30b-a3b", "qwen3-30b-a3b-instruct-2507", "qwen3-30b-a3b-thinking-2507", "qwen3-32b", "qwen3-coder-480b-a35b-instruct", "qwen3-max", "qwen3-max-preview", "qwen3-next-80b-a3b-instruct", "qwen3-next-80b-a3b-thinking", "qwen3-vl-30b-a3b-thinking", "qwen3.5-397b-a17b", "stepfun-ai/gelab-zero-4b-preview", "stepfun/step-3.5-flash", "x-ai/grok-4-fast", "x-ai/grok-4-fast-non-reasoning", "x-ai/grok-4-fast-reasoning", "x-ai/grok-4.1-fast", "x-ai/grok-4.1-fast-non-reasoning", "x-ai/grok-4.1-fast-reasoning", "x-ai/grok-code-fast-1", "xiaomi/mimo-v2-flash", "z-ai/autoglm-phone-9b", "z-ai/glm-4.6", "z-ai/glm-4.7", "z-ai/glm-5" ], docUrl: "https://developer.qiniu.com/aitokenapi", gateway: "models.dev" }, "alibaba-cn": { url: "https://dashscope.aliyuncs.com/compatible-mode/v1", apiKeyEnvVar: "DASHSCOPE_API_KEY", apiKeyHeader: "Authorization", name: "Alibaba (China)", models: [ "MiniMax-M2.5", "MiniMax/MiniMax-M2.7", "deepseek-r1", "deepseek-r1-0528", "deepseek-r1-distill-llama-70b", "deepseek-r1-distill-llama-8b", "deepseek-r1-distill-qwen-1-5b", "deepseek-r1-distill-qwen-14b", "deepseek-r1-distill-qwen-32b", "deepseek-r1-distill-qwen-7b", "deepseek-v3", "deepseek-v3-1", "deepseek-v3-2-exp", "deepseek-v4-flash", "deepseek-v4-pro", "glm-5", "glm-5.1", "glm-5.2", "kimi-k2-thinking", "kimi-k2.5", "kimi-k2.6", "kimi/kimi-k2.5", "moonshot-kimi-k2-instruct", "qvq-max", "qwen-deep-research", "qwen-doc-turbo", "qwen-flash", "qwen-long", "qwen-math-plus", "qwen-math-turbo", "qwen-max", "qwen-mt-plus", "qwen-mt-turbo", "qwen-omni-turbo", "qwen-omni-turbo-realtime", "qwen-plus", "qwen-plus-character", "qwen-turbo", "qwen-vl-max", "qwen-vl-ocr", "qwen-vl-plus", "qwen2-5-14b-instruct", "qwen2-5-32b-instruct", "qwen2-5-72b-instruct", "qwen2-5-7b-instruct", "qwen2-5-coder-32b-instruct", "qwen2-5-coder-7b-instruct", "qwen2-5-math-72b-instruct", "qwen2-5-math-7b-instruct", "qwen2-5-omni-7b", "qwen2-5-vl-72b-instruct", "qwen2-5-vl-7b-instruct", "qwen3-14b", "qwen3-235b-a22b", "qwen3-32b", "qwen3-8b", "qwen3-asr-flash", "qwen3-coder-30b-a3b-instruct", "qwen3-coder-480b-a35b-instruct", "qwen3-coder-flash", "qwen3-coder-plus", "qwen3-max", "qwen3-next-80b-a3b-instruct", "qwen3-next-80b-a3b-thinking", "qwen3-omni-flash", "qwen3-omni-flash-realtime", "qwen3-vl-235b-a22b", "qwen3-vl-30b-a3b", "qwen3-vl-plus", "qwen3.5-397b-a17b", "qwen3.5-flash", "qwen3.5-plus", "qwen3.6-flash", "qwen3.6-max-preview", "qwen3.6-plus", "qwen3.7-max", "qwen3.7-plus", "qwq-32b", "qwq-plus", "siliconflow/deepseek-r1-0528", "siliconflow/deepseek-v3-0324", "siliconflow/deepseek-v3.1-terminus", "siliconflow/deepseek-v3.2", "tongyi-intent-detect-v3" ], docUrl: "https://www.alibabacloud.com/help/en/model-studio/models", gateway: "models.dev" }, "regolo-ai": { url: "https://api.regolo.ai/v1", apiKeyEnvVar: "REGOLO_API_KEY", apiKeyHeader: "Authorization", name: "Regolo AI", models: [ "gpt-oss-120b", "gpt-oss-20b", "llama-3.1-8b-instruct", "llama-3.3-70b-instruct", "minimax-m2.5", "mistral-small-4-119b", "mistral-small3.2", "qwen-image", "qwen3-coder-next", "qwen3-embedding-8b", "qwen3-reranker-4b", "qwen3.5-122b", "qwen3.5-9b" ], docUrl: "https://docs.regolo.ai/", gateway: "models.dev" }, stackit: { url: "https://api.openai-compat.model-serving.eu01.onstackit.cloud/v1", apiKeyEnvVar: "STACKIT_API_KEY", apiKeyHeader: "Authorization", name: "STACKIT", models: [ "Qwen/Qwen3-VL-235B-A22B-Instruct-FP8", "Qwen/Qwen3-VL-Embedding-8B", "Qwen/Qwen3.6-27B", "cortecs/Llama-3.3-70B-Instruct-FP8-Dynamic", "google/gemma-3-27b-it", "intfloat/e5-mistral-7b-instruct", "openai/gpt-oss-120b", "openai/gpt-oss-20b" ], docUrl: "https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/basics/available-shared-models", gateway: "models.dev" }, vercel: { apiKeyEnvVar: "AI_GATEWAY_API_KEY", name: "Vercel AI Gateway", models: [ "alibaba/qwen-3-14b", "alibaba/qwen-3-235b", "alibaba/qwen-3-30b", "alibaba/qwen-3-32b", "alibaba/qwen-3.6-max-preview", "alibaba/qwen3-235b-a22b-thinking", "alibaba/qwen3-coder", "alibaba/qwen3-coder-30b-a3b", "alibaba/qwen3-coder-next", "alibaba/qwen3-coder-plus", "alibaba/qwen3-embedding-0.6b", "alibaba/qwen3-embedding-4b", "alibaba/qwen3-embedding-8b", "alibaba/qwen3-max", "alibaba/qwen3-max-preview", "alibaba/qwen3-max-thinking", "alibaba/qwen3-next-80b-a3b-instruct", "alibaba/qwen3-next-80b-a3b-thinking", "alibaba/qwen3-vl-235b-a22b-instruct", "alibaba/qwen3-vl-instruct", "alibaba/qwen3-vl-thinking", "alibaba/qwen3.5-flash", "alibaba/qwen3.5-plus", "alibaba/qwen3.6-27b", "alibaba/qwen3.6-plus", "alibaba/qwen3.7-max", "alibaba/qwen3.7-plus", "alibaba/wan-v2.5-t2v-preview", "alibaba/wan-v2.6-i2v", "alibaba/wan-v2.6-i2v-flash", "alibaba/wan-v2.6-r2v", "alibaba/wan-v2.6-r2v-flash", "alibaba/wan-v2.6-t2v", "alibaba/wan-v2.7-r2v", "alibaba/wan-v2.7-t2v", "amazon/nova-2-lite", "amazon/nova-lite", "amazon/nova-micro", "amazon/nova-pro", "amazon/titan-embed-text-v2", "anthropic/claude-3-haiku", "anthropic/claude-3.5-haiku", "anthropic/claude-fable-5", "anthropic/claude-haiku-4.5", "anthropic/claude-opus-4", "anthropic/claude-opus-4.5", "anthropic/claude-opus-4.6", "anthropic/claude-opus-4.7", "anthropic/claude-opus-4.8", "anthropic/claude-sonnet-4", "anthropic/claude-sonnet-4.5", "anthropic/claude-sonnet-4.6", "anthropic/claude-sonnet-5", "arcee-ai/trinity-large-preview", "arcee-ai/trinity-large-thinking", "arcee-ai/trinity-mini", "bfl/flux-2-flex", "bfl/flux-2-klein-4b", "bfl/flux-2-klein-9b", "bfl/flux-2-max", "bfl/flux-2-pro", "bfl/flux-kontext-max", "bfl/flux-kontext-pro", "bfl/flux-pro-1.0-fill", "bfl/flux-pro-1.1", "bfl/flux-pro-1.1-ultra", "bytedance/seed-1.6", "bytedance/seed-1.8", "bytedance/seedance-2.0", "bytedance/seedance-2.0-fast", "bytedance/seedance-v1.0-pro", "bytedance/seedance-v1.0-pro-fast", "bytedance/seedance-v1.5-pro", "bytedance/seedream-4.0", "bytedance/seedream-4.5", "bytedance/seedream-5.0-lite", "cohere/command-a", "cohere/embed-v4.0", "cohere/rerank-v3.5", "cohere/rerank-v4-fast", "cohere/rerank-v4-pro", "deepseek/deepseek-r1", "deepseek/deepseek-v3", "deepseek/deepseek-v3.1", "deepseek/deepseek-v3.1-terminus", "deepseek/deepseek-v3.2", "deepseek/deepseek-v3.2-thinking", "deepseek/deepseek-v4-flash", "deepseek/deepseek-v4-pro", "google/gemini-2.5-flash", "google/gemini-2.5-flash-image", "google/gemini-2.5-flash-lite", "google/gemini-2.5-pro", "google/gemini-3-flash", "google/gemini-3-pro-image", "google/gemini-3-pro-preview", "google/gemini-3.1-flash-image", "google/gemini-3.1-flash-image-preview", "google/gemini-3.1-flash-lite", "google/gemini-3.1-flash-lite-image", "google/gemini-3.1-flash-lite-preview", "google/gemini-3.1-pro-preview", "google/gemini-3.5-flash", "google/gemini-embedding-001", "google/gemini-embedding-2", "google/gemma-4-26b-a4b-it", "google/gemma-4-31b-it", "google/imagen-4.0-fast-generate-001", "google/imagen-4.0-generate-001", "google/imagen-4.0-ultra-generate-001", "google/text-embedding-005", "google/text-multilingual-embedding-002", "google/veo-3.0-fast-generate-001", "google/veo-3.0-generate-001", "google/veo-3.1-fast-generate-001", "google/veo-3.1-generate-001", "inception/mercury-2", "inception/mercury-coder-small", "interfaze/interfaze-beta", "klingai/kling-v2.5-turbo-i2v", "klingai/kling-v2.5-turbo-t2v", "klingai/kling-v2.6-i2v", "klingai/kling-v2.6-motion-control", "klingai/kling-v2.6-t2v", "klingai/kling-v3.0-i2v", "klingai/kling-v3.0-motion-control", "klingai/kling-v3.0-t2v", "kwaipilot/kat-coder-pro-v1", "kwaipilot/kat-coder-pro-v2", "meituan/longcat-flash-chat", "meituan/longcat-flash-thinking-2601", "meta/llama-3.1-70b", "meta/llama-3.1-8b", "meta/llama-3.2-11b", "meta/llama-3.2-1b", "meta/llama-3.2-3b", "meta/llama-3.2-90b", "meta/llama-3.3-70b", "meta/llama-4-maverick", "meta/llama-4-scout", "minimax/minimax-m2", "minimax/minimax-m2.1", "minimax/minimax-m2.1-lightning", "minimax/minimax-m2.5", "minimax/minimax-m2.5-highspeed", "minimax/minimax-m2.7", "minimax/minimax-m2.7-highspeed", "minimax/minimax-m3", "mistral/codestral", "mistral/codestral-embed", "mistral/devstral-2", "mistral/devstral-small", "mistral/devstral-small-2", "mistral/magistral-medium", "mistral/magistral-small", "mistral/ministral-14b", "mistral/ministral-3b", "mistral/ministral-8b", "mistral/mistral-embed", "mistral/mistral-large-3", "mistral/mistral-medium", "mistral/mistral-medium-3.5", "mistral/mistral-nemo", "mistral/mistral-small", "mistral/pixtral-12b", "mistral/pixtral-large", "moonshotai/kimi-k2", "moonshotai/kimi-k2-thinking", "moonshotai/kimi-k2.5", "moonshotai/kimi-k2.6", "moonshotai/kimi-k2.7-code", "moonshotai/kimi-k2.7-code-highspeed", "morph/morph-v3-fast", "morph/morph-v3-large", "nvidia/nemotron-3-nano-30b-a3b", "nvidia/nemotron-3-super-120b-a12b", "nvidia/nemotron-3-ultra-550b-a55b", "nvidia/nemotron-nano-12b-v2-vl", "nvidia/nemotron-nano-9b-v2", "openai/gpt-3.5-turbo", "openai/gpt-3.5-turbo-instruct", "openai/gpt-4-turbo", "openai/gpt-4.1", "openai/gpt-4.1-mini", "openai/gpt-4.1-nano", "openai/gpt-4o", "openai/gpt-4o-mini", "openai/gpt-4o-mini-search-preview", "openai/gpt-4o-mini-transcribe", "openai/gpt-4o-transcribe", "openai/gpt-5", "openai/gpt-5-chat", "openai/gpt-5-codex", "openai/gpt-5-mini", "openai/gpt-5-nano", "openai/gpt-5-pro", "openai/gpt-5.1-codex", "openai/gpt-5.1-codex-max", "openai/gpt-5.1-codex-mini", "openai/gpt-5.1-instant", "openai/gpt-5.1-thinking", "openai/gpt-5.2", "openai/gpt-5.2-chat", "openai/gpt-5.2-codex", "openai/gpt-5.2-pro", "openai/gpt-5.3-chat", "openai/gpt-5.3-codex", "openai/gpt-5.4", "openai/gpt-5.4-mini", "openai/gpt-5.4-nano", "openai/gpt-5.4-pro", "openai/gpt-5.5", "openai/gpt-5.5-pro", "openai/gpt-image-1", "openai/gpt-image-1-mini", "openai/gpt-image-1.5", "openai/gpt-image-2", "openai/gpt-oss-120b", "openai/gpt-oss-20b", "openai/gpt-oss-safeguard-20b", "openai/gpt-realtime-1.5", "openai/gpt-realtime-2", "openai/gpt-realtime-mini", "openai/o1", "openai/o3", "openai/o3-deep-research", "openai/o3-mini", "openai/o3-pro", "openai/o4-mini", "openai/text-embedding-3-large", "openai/text-embedding-3-small", "openai/text-embedding-ada-002", "openai/tts-1", "openai/tts-1-hd", "openai/whisper-1", "perplexity/sonar", "perplexity/sonar-pro", "perplexity/sonar-reasoning-pro", "prodia/flux-fast-schnell", "quiverai/arrow-1.1", "recraft/recraft-v2", "recraft/recraft-v3", "recraft/recraft-v4", "recraft/recraft-v4-pro", "recraft/recraft-v4.1", "recraft/recraft-v4.1-pro", "recraft/recraft-v4.1-utility", "recraft/recraft-v4.1-utility-pro", "sakana/fugu-ultra", "stepfun/step-3.5-flash", "stepfun/step-3.7-flash", "voyage/rerank-2.5", "voyage/rerank-2.5-lite", "voyage/voyage-3-large", "voyage/voyage-3.5", "voyage/voyage-3.5-lite", "voyage/voyage-4", "voyage/voyage-4-large", "voyage/voyage-4-lite", "voyage/voyage-code-2", "voyage/voyage-code-3", "voyage/voyage-finance-2", "voyage/voyage-law-2", "xai/grok-4.1-fast-non-reasoning", "xai/grok-4.1-fast-reasoning", "xai/grok-4.20-multi-agent", "xai/grok-4.20-multi-agent-beta", "xai/grok-4.20-non-reasoning", "xai/grok-4.20-non-reasoning-beta", "xai/grok-4.20-reasoning", "xai/grok-4.20-reasoning-beta", "xai/grok-4.3", "xai/grok-build-0.1", "xai/grok-imagine-image", "xai/grok-imagine-video", "xai/grok-imagine-video-1.5", "xai/grok-imagine-video-1.5-preview", "xai/grok-stt", "xai/grok-tts", "xai/grok-voice-think-fast-1.0", "xiaomi/mimo-v2-flash", "xiaomi/mimo-v2-pro", "xiaomi/mimo-v2.5", "xiaomi/mimo-v2.5-pro", "zai/glm-4.5", "zai/glm-4.5-air", "zai/glm-4.5v", "zai/glm-4.6", "zai/glm-4.6v", "zai/glm-4.6v-flash", "zai/glm-4.7", "zai/glm-4.7-flash", "zai/glm-4.7-flashx", "zai/glm-5", "zai/glm-5-turbo", "zai/glm-5.1", "zai/glm-5.2", "zai/glm-5.2-fast", "zai/glm-5v-turbo" ], docUrl: "https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway", gateway: "models.dev" }, submodel: { url: "https://llm.submodel.ai/v1", apiKeyEnvVar: "SUBMODEL_INSTAGEN_ACCESS_KEY", apiKeyHeader: "Authorization", name: "submodel", models: [ "Qwen/Qwen3-235B-A22B-Instruct-2507", "Qwen/Qwen3-235B-A22B-Thinking-2507", "Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8", "deepseek-ai/DeepSeek-R1-0528", "deepseek-ai/DeepSeek-V3-0324", "deepseek-ai/DeepSeek-V3.1", "openai/gpt-oss-120b", "zai-org/GLM-4.5-Air", "zai-org/GLM-4.5-FP8" ], docUrl: "https://submodel.gitbook.io", gateway: "models.dev" }, huggingface: { url: "https://router.huggingface.co/v1", apiKeyEnvVar: "HF_TOKEN", apiKeyHeader: "Authorization", name: "Hugging Face", models: [ "MiniMaxAI/MiniMax-M2", "MiniMaxAI/MiniMax-M2.1", "MiniMaxAI/MiniMax-M2.5", "MiniMaxAI/MiniMax-M2.7", "MiniMaxAI/MiniMax-M3", "Qwen/Qwen3-235B-A22B", "Qwen/Qwen3-235B-A22B-Thinking-2507", "Qwen/Qwen3-32B", "Qwen/Qwen3-Coder-30B-A3B-Instruct", "Qwen/Qwen3-Coder-480B-A35B-Instruct", "Qwen/Qwen3-Coder-Next", "Qwen/Qwen3-Embedding-4B", "Qwen/Qwen3-Embedding-8B", "Qwen/Qwen3-Next-80B-A3B-Instruct", "Qwen/Qwen3-Next-80B-A3B-Thinking", "Qwen/Qwen3.5-122B-A10B", "Qwen/Qwen3.5-27B", "Qwen/Qwen3.5-35B-A3B", "Qwen/Qwen3.5-397B-A17B", "Qwen/Qwen3.5-9B", "Qwen/Qwen3.6-27B", "Qwen/Qwen3.6-35B-A3B", "XiaomiMiMo/MiMo-V2-Flash", "XiaomiMiMo/MiMo-V2.5-Pro", "deepseek-ai/DeepSeek-R1", "deepseek-ai/DeepSeek-R1-0528", "deepseek-ai/DeepSeek-V3.2", "deepseek-ai/DeepSeek-V4-Flash", "deepseek-ai/DeepSeek-V4-Pro", "google/gemma-4-26B-A4B-it", "google/gemma-4-31B-it", "meta-llama/Llama-3.3-70B-Instruct", "moonshotai/Kimi-K2-Instruct", "moonshotai/Kimi-K2-Instruct-0905", "moonshotai/Kimi-K2-Thinking", "moonshotai/Kimi-K2.5", "moonshotai/Kimi-K2.6", "moonshotai/Kimi-K2.7-Code", "openai/gpt-oss-120b", "openai/gpt-oss-20b", "stepfun-ai/Step-3.5-Flash", "stepfun-ai/Step-3.7-Flash", "zai-org/GLM-4.5", "zai-org/GLM-4.5-Air", "zai-org/GLM-4.5V", "zai-org/GLM-4.6", "zai-org/GLM-4.7", "zai-org/GLM-4.7-Flash", "zai-org/GLM-5", "zai-org/GLM-5.1", "zai-org/GLM-5.2" ], docUrl: "https://huggingface.co/docs/inference-providers", gateway: "models.dev" }, "minimax-coding-plan": { url: "https://api.minimax.io/anthropic/v1", apiKeyEnvVar: "MINIMAX_API_KEY", apiKeyHeader: "Authorization", name: "MiniMax Token Plan (minimax.io)", models: [ "MiniMax-M2", "MiniMax-M2.1", "MiniMax-M2.5", "MiniMax-M2.5-highspeed", "MiniMax-M2.7", "MiniMax-M2.7-highspeed", "MiniMax-M3" ], docUrl: "https://platform.minimax.io/docs/token-plan/intro", gateway: "models.dev", npm: "@ai-sdk/anthropic" }, "novita-ai": { url: "https://api.novita.ai/openai", apiKeyEnvVar: "NOVITA_API_KEY", apiKeyHeader: "Authorization", name: "NovitaAI", models: [ "baichuan/baichuan-m2-32b", "baidu/ernie-4.5-21B-a3b", "baidu/ernie-4.5-21B-a3b-thinking", "baidu/ernie-4.5-300b-a47b-paddle", "baidu/ernie-4.5-vl-28b-a3b", "baidu/ernie-4.5-vl-28b-a3b-thinking", "baidu/ernie-4.5-vl-424b-a47b", "deepseek/deepseek-ocr", "deepseek/deepseek-ocr-2", "deepseek/deepseek-prover-v2-671b", "deepseek/deepseek-r1-0528", "deepseek/deepseek-r1-0528-qwen3-8b", "deepseek/deepseek-r1-distill-llama-70b", "deepseek/deepseek-r1-distill-qwen-14b", "deepseek/deepseek-r1-distill-qwen-32b", "deepseek/deepseek-r1-turbo", "deepseek/deepseek-v3-0324", "deepseek/deepseek-v3-turbo", "deepseek/deepseek-v3.1", "deepseek/deepseek-v3.1-terminus", "deepseek/deepseek-v3.2", "deepseek/deepseek-v3.2-exp", "deepseek/deepseek-v4-flash", "deepseek/deepseek-v4-pro", "google/gemma-3-12b-it", "google/gemma-3-27b-it", "google/gemma-4-26b-a4b-it", "google/gemma-4-31b-it", "gryphe/mythomax-l2-13b", "inclusionai/ling-2.6-1t", "inclusionai/ling-2.6-flash", "inclusionai/ring-2.6-1t", "kwaipilot/kat-coder-pro", "meta-llama/llama-3-70b-instruct", "meta-llama/llama-3-8b-instruct", "meta-llama/llama-3.1-8b-instruct", "meta-llama/llama-3.2-3b-instruct", "meta-llama/llama-3.3-70b-instruct", "meta-llama/llama-4-maverick-17b-128e-instruct-fp8", "meta-llama/llama-4-scout-17b-16e-instruct", "microsoft/wizardlm-2-8x22b", "minimax/minimax-m2", "minimax/minimax-m2.1", "minimax/minimax-m2.5", "minimax/minimax-m2.5-highspeed", "minimax/minimax-m2.7", "minimax/minimax-m2.7-highspeed", "minimaxai/minimax-m1-80k", "mistralai/mistral-nemo", "moonshotai/kimi-k2-0905", "moonshotai/kimi-k2-instruct", "moonshotai/kimi-k2-thinking", "moonshotai/kimi-k2.5", "moonshotai/kimi-k2.6", "nousresearch/hermes-2-pro-llama-3-8b", "openai/gpt-oss-120b", "openai/gpt-oss-20b", "paddlepaddle/paddleocr-vl", "qwen/qwen-2.5-72b-instruct", "qwen/qwen-mt-plus", "qwen/qwen2.5-7b-instruct", "qwen/qwen2.5-vl-72b-instruct", "qwen/qwen3-235b-a22b-fp8", "qwen/qwen3-235b-a22b-instruct-2507", "qwen/qwen3-235b-a22b-thinking-2507", "qwen/qwen3-30b-a3b-fp8", "qwen/qwen3-32b-fp8", "qwen/qwen3-4b-fp8", "qwen/qwen3-8b-fp8", "qwen/qwen3-coder-30b-a3b-instruct", "qwen/qwen3-coder-480b-a35b-instruct", "qwen/qwen3-coder-next", "qwen/qwen3-max", "qwen/qwen3-next-80b-a3b-instruct", "qwen/qwen3-next-80b-a3b-thinking", "qwen/qwen3-omni-30b-a3b-instruct", "qwen/qwen3-omni-30b-a3b-thinking", "qwen/qwen3-vl-235b-a22b-instruct", "qwen/qwen3-vl-235b-a22b-thinking", "qwen/qwen3-vl-30b-a3b-instruct", "qwen/qwen3-vl-30b-a3b-thinking", "qwen/qwen3-vl-8b-instruct", "qwen/qwen3.5-122b-a10b", "qwen/qwen3.5-27b", "qwen/qwen3.5-35b-a3b", "qwen/qwen3.5-397b-a17b", "qwen/qwen3.7-max", "sao10K/L3-8B-stheno-v3.2", "sao10K/l3-70b-euryale-v2.1", "sao10K/l3-8b-lunaris", "sao10K/l31-70b-euryale-v2.2", "xiaomimimo/mimo-v2-flash", "xiaomimimo/mimo-v2-pro", "xiaomimimo/mimo-v2.5-pro", "zai-org/autoglm-phone-9b-multilingual", "zai-org/glm-4.5", "zai-org/glm-4.5-air", "zai-org/glm-4.5v", "zai-org/glm-4.6", "zai-org/glm-4.6v", "zai-org/glm-4.7", "zai-org/glm-4.7-flash", "zai-org/glm-5", "zai-org/glm-5.1", "zai-org/glm-5.2" ], docUrl: "https://novita.ai/docs/guides/introduction", gateway: "models.dev" }, xai: { apiKeyEnvVar: "XAI_API_KEY", name: "xAI", models: [ "grok-4.20-0309-non-reasoning", "grok-4.20-0309-reasoning", "grok-4.20-multi-agent-0309", "grok-4.3", "grok-build-0.1", "grok-imagine-image", "grok-imagine-image-quality", "grok-imagine-video" ], docUrl: "https://docs.x.ai/docs/models", gateway: "models.dev", npm: "@ai-sdk/xai" }, "privatemode-ai": { url: "http://localhost:8080/v1", apiKeyEnvVar: "PRIVATEMODE_API_KEY", apiKeyHeader: "Authorization", name: "Privatemode AI", models: ["gemma-3-27b", "gpt-oss-120b", "qwen3-coder-30b-a3b", "qwen3-embedding-4b", "whisper-large-v3"], docUrl: "https://docs.privatemode.ai/api/overview", gateway: "models.dev" }, drun: { url: "https://chat.d.run/v1", apiKeyEnvVar: "DRUN_API_KEY", apiKeyHeader: "Authorization", name: "D.Run (China)", models: ["public/deepseek-r1", "public/deepseek-v3", "public/minimax-m25"], docUrl: "https://www.d.run", gateway: "models.dev" }, "alibaba-token-plan-cn": { url: "https://token-plan.cn-beijing.maas.aliyuncs.com/compatible-mode/v1", apiKeyEnvVar: "ALIBABA_TOKEN_PLAN_API_KEY", apiKeyHeader: "Authorization", name: "Alibaba Token Plan (China)", models: [ "MiniMax-M2.5", "deepseek-v3.2", "deepseek-v4-flash", "deepseek-v4-pro", "glm-5", "glm-5.1", "glm-5.2", "kimi-k2.5", "kimi-k2.6", "kimi-k2.7-code", "qwen-image-2.0", "qwen-image-2.0-pro", "qwen3.6-flash", "qwen3.6-plus", "qwen3.7-max", "qwen3.7-plus", "wan2.7-image", "wan2.7-image-pro" ], docUrl: "https://www.alibabacloud.com/help/zh/model-studio/token-plan-overview", gateway: "models.dev" }, moonshotai: { url: "https://api.moonshot.ai/anthropic/v1", apiKeyEnvVar: "MOONSHOT_API_KEY", apiKeyHeader: "Authorization", name: "Moonshot AI", models: [ "kimi-k2-0711-preview", "kimi-k2-0905-preview", "kimi-k2-thinking", "kimi-k2-thinking-turbo", "kimi-k2-turbo-preview", "kimi-k2.5", "kimi-k2.6", "kimi-k2.7-code", "kimi-k2.7-code-highspeed" ], docUrl: "https://platform.moonshot.ai/docs/api/chat", gateway: "models.dev", npm: "@ai-sdk/anthropic" }, "fireworks-ai": { url: "https://api.fireworks.ai/inference/v1/", apiKeyEnvVar: "FIREWORKS_API_KEY", apiKeyHeader: "Authorization", name: "Fireworks AI", models: [ "accounts/fireworks/models/deepseek-v4-flash", "accounts/fireworks/models/deepseek-v4-pro", "accounts/fireworks/models/glm-5p1", "accounts/fireworks/models/glm-5p2", "accounts/fireworks/models/gpt-oss-120b", "accounts/fireworks/models/gpt-oss-20b", "accounts/fireworks/models/kimi-k2p6", "accounts/fireworks/models/kimi-k2p7-code", "accounts/fireworks/models/minimax-m2p7", "accounts/fireworks/models/minimax-m3", "accounts/fireworks/models/qwen3p7-plus", "accounts/fireworks/routers/glm-5p1-fast", "accounts/fireworks/routers/glm-5p2-fast", "accounts/fireworks/routers/kimi-k2p6-fast", "accounts/fireworks/routers/kimi-k2p6-turbo", "accounts/fireworks/routers/kimi-k2p7-code-fast" ], docUrl: "https://fireworks.ai/docs/", gateway: "models.dev" }, vultr: { url: "https://api.vultrinference.com/v1", apiKeyEnvVar: "VULTR_API_KEY", apiKeyHeader: "Authorization", name: "Vultr", models: [ "MiniMaxAI/MiniMax-M2.7", "Qwen/Qwen3.5-397B-A17B", "Qwen/Qwen3.6-27B", "XiaomiMiMo/MiMo-V2.5-Pro", "deepseek-ai/DeepSeek-V4-Flash", "moonshotai/Kimi-K2.6", "nvidia/DeepSeek-V3.2-NVFP4", "nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16", "nvidia/Nemotron-Cascade-2-30B-A3B", "zai-org/GLM-5.2-FP8" ], docUrl: "https://api.vultrinference.com/", gateway: "models.dev" }, "302ai": { url: "https://api.302.ai/v1", apiKeyEnvVar: "302AI_API_KEY", apiKeyHeader: "Authorization", name: "302.AI", models: [ "MiniMax-M1", "MiniMax-M2", "MiniMax-M2.1", "MiniMax-M2.7", "MiniMax-M2.7-highspeed", "chatgpt-4o-latest", "claude-3-5-haiku-20241022", "claude-3-5-haiku-latest", "claude-haiku-4-5", "claude-haiku-4-5-20251001", "claude-opus-4-1-20250805", "claude-opus-4-1-20250805-thinking", "claude-opus-4-20250514", "claude-opus-4-5", "claude-opus-4-5-20251101", "claude-opus-4-5-20251101-thinking", "claude-opus-4-6", "claude-opus-4-6-thinking", "claude-opus-4-7", "claude-sonnet-4-20250514", "claude-sonnet-4-5", "claude-sonnet-4-5-20250929", "claude-sonnet-4-5-20250929-thinking", "claude-sonnet-4-6", "claude-sonnet-4-6-thinking", "deepseek-chat", "deepseek-reasoner", "deepseek-v3.2", "deepseek-v3.2-thinking", "doubao-seed-1-6-thinking-250715", "doubao-seed-1-6-vision-250815", "doubao-seed-1-8-251215", "doubao-seed-code-preview-251028", "gemini-2.0-flash-lite", "gemini-2.5-flash", "gemini-2.5-flash-image", "gemini-2.5-flash-lite-preview-09-2025", "gemini-2.5-flash-nothink", "gemini-2.5-flash-preview-09-2025", "gemini-2.5-pro", "gemini-3-flash-preview", "gemini-3-pro-image-preview", "gemini-3-pro-preview", "gemini-3.1-flash-image-preview", "glm-4.5", "glm-4.5-air", "glm-4.5-airx", "glm-4.5-x", "glm-4.5v", "glm-4.6", "glm-4.6v", "glm-4.7", "glm-4.7-flashx", "glm-5", "glm-5-turbo", "glm-5.1", "glm-5v-turbo", "glm-for-coding", "gpt-4.1", "gpt-4.1-mini", "gpt-4.1-nano", "gpt-4o", "gpt-5", "gpt-5-mini", "gpt-5-pro", "gpt-5-thinking", "gpt-5.1", "gpt-5.1-chat-latest", "gpt-5.2", "gpt-5.2-chat-latest", "gpt-5.4", "gpt-5.4-mini", "gpt-5.4-mini-2026-03-17", "gpt-5.4-nano", "gpt-5.4-nano-2026-03-17", "gpt-5.4-pro", "grok-4-1-fast-non-reasoning", "grok-4-1-fast-reasoning", "grok-4-fast-non-reasoning", "grok-4-fast-reasoning", "grok-4.1", "grok-4.20-beta-0309-non-reasoning", "grok-4.20-beta-0309-reasoning", "grok-4.20-multi-agent-beta-0309", "kimi-k2-0905-preview", "kimi-k2-thinking", "kimi-k2-thinking-turbo", "ministral-14b-2512", "mistral-large-2512", "qwen-flash", "qwen-max-latest", "qwen-plus", "qwen3-235b-a22b", "qwen3-235b-a22b-instruct-2507", "qwen3-30b-a3b", "qwen3-coder-480b-a35b-instruct", "qwen3-max-2025-09-23" ], docUrl: "https://doc.302.ai", gateway: "models.dev" }, trustedrouter: { url: "https://api.trustedrouter.com/v1", apiKeyEnvVar: "TRUSTEDROUTER_API_KEY", apiKeyHeader: "Authorization", name: "TrustedRouter", models: ["auto", "cheap", "e2e", "fast", "synth", "synth-code", "zdr"], docUrl: "https://trustedrouter.com/docs", gateway: "models.dev" }, zhipuai: { url: "https://open.bigmodel.cn/api/paas/v4", apiKeyEnvVar: "ZHIPU_API_KEY", apiKeyHeader: "Authorization", name: "Zhipu AI", models: [ "glm-4.5", "glm-4.5-air", "glm-4.5-flash", "glm-4.5v", "glm-4.6", "glm-4.6v", "glm-4.7", "glm-4.7-flash", "glm-4.7-flashx", "glm-5", "glm-5.1", "glm-5.2", "glm-5v-turbo" ], docUrl: "https://docs.z.ai/guides/overview/pricing", gateway: "models.dev" }, cortecs: { url: "https://api.cortecs.ai/v1", apiKeyEnvVar: "CORTECS_API_KEY", apiKeyHeader: "Authorization", name: "Cortecs", models: [ "claude-4-5-sonnet", "claude-4-6-sonnet", "claude-haiku-4-5", "claude-opus4-5", "claude-opus4-6", "claude-opus4-7", "claude-opus4-8", "claude-sonnet-4", "codestral-2508", "deepseek-r1-0528", "deepseek-v3-0324", "deepseek-v3.2", "deepseek-v4-flash", "deepseek-v4-pro", "devstral-2512", "gemini-2.5-pro", "glm-4.5", "glm-4.5-air", "glm-4.7", "glm-4.7-flash", "glm-5", "glm-5-turbo", "glm-5.1", "glm-5.2", "glm-5v-turbo", "gpt-4.1", "gpt-5.4", "gpt-oss-120b", "hermes-4-70b", "intellect-3", "kimi-k2-instruct", "kimi-k2-thinking", "kimi-k2.5", "kimi-k2.6", "kimi-k2.7-code", "llama-3.1-405b-instruct", "llama-3.3-70b-instruct", "llama-4-maverick", "minimax-m2", "minimax-m2.1", "minimax-m2.5", "minimax-m2.7", "minimax-m3", "mistral-large-2512", "mixtral-8x7B-instruct-v0.1", "nemotron-3-super-120b-a12b", "nova-pro-v1", "qwen-2.5-72b-instruct", "qwen3-235b-a22b-instruct-2507", "qwen3-32b", "qwen3-coder-30b-a3b-instruct", "qwen3-coder-480b-a35b-instruct", "qwen3-coder-next", "qwen3-next-80b-a3b-thinking", "qwen3.5-122b-a10b", "qwen3.5-397b-a17b" ], docUrl: "https://api.cortecs.ai/v1/models", gateway: "models.dev" }, nebius: { url: "https://api.tokenfactory.nebius.com/v1", apiKeyEnvVar: "NEBIUS_API_KEY", apiKeyHeader: "Authorization", name: "Nebius Token Factory", models: [ "MiniMaxAI/MiniMax-M2.5", "NousResearch/Hermes-4-405B", "NousResearch/Hermes-4-70B", "Qwen/Qwen2.5-VL-72B-Instruct", "Qwen/Qwen3-235B-A22B-Instruct-2507", "Qwen/Qwen3-30B-A3B-Instruct-2507", "Qwen/Qwen3-32B", "Qwen/Qwen3-Embedding-8B", "Qwen/Qwen3-Next-80B-A3B-Thinking", "Qwen/Qwen3.5-397B-A17B", "deepseek-ai/DeepSeek-V4-Pro", "google/gemma-3-27b-it", "meta-llama/Llama-3.3-70B-Instruct", "nvidia/Llama-3_1-Nemotron-Ultra-253B-v1", "nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B", "nvidia/Nemotron-3-Nano-Omni", "nvidia/nemotron-3-super-120b-a12b", "openai/gpt-oss-120b", "zai-org/GLM-5.2" ], docUrl: "https://docs.tokenfactory.nebius.com/", gateway: "models.dev" }, auriko: { url: "https://api.auriko.ai/v1", apiKeyEnvVar: "AURIKO_API_KEY", apiKeyHeader: "Authorization", name: "Auriko", models: [ "claude-opus-4-6", "claude-opus-4-7", "claude-sonnet-4-6", "deepseek-v4-flash", "deepseek-v4-pro", "gemini-2.5-flash", "gemini-2.5-pro", "gemini-3.1-pro-preview", "glm-5.1", "grok-4.3", "kimi-k2.5", "kimi-k2.6", "minimax-m2-7", "minimax-m2-7-highspeed", "qwen-3.6-plus" ], docUrl: "https://docs.auriko.ai", gateway: "models.dev" }, "stepfun-ai": { url: "https://api.stepfun.ai/step_plan/v1", apiKeyEnvVar: "STEPFUN_API_KEY", apiKeyHeader: "Authorization", name: "StepFun AI", models: [ "step-1-32k", "step-2-16k", "step-3.5-flash", "step-3.5-flash-2603", "step-3.7-flash", "step-tts-2", "stepaudio-2.5-asr", "stepaudio-2.5-tts" ], docUrl: "https://platform.stepfun.ai/docs/en/step-plan/integrations/open-code", gateway: "models.dev" }, vivgrid: { url: "https://api.vivgrid.com/v1", apiKeyEnvVar: "VIVGRID_API_KEY", apiKeyHeader: "Authorization", name: "Vivgrid", models: [ "deepseek-v3.2", "deepseek-v4-pro", "gemini-3.1-flash-lite-preview", "gemini-3.1-pro-preview", "glm-5.2", "gpt-5-mini", "gpt-5.1-codex", "gpt-5.1-codex-max", "gpt-5.2-codex", "gpt-5.3-codex", "gpt-5.4", "gpt-5.4-mini", "gpt-5.4-nano", "gpt-5.5" ], docUrl: "https://docs.vivgrid.com/models", gateway: "models.dev", npm: "@ai-sdk/openai", modelOverrides: { "deepseek-v4-pro": { npm: "@ai-sdk/openai-compatible" }, "gpt-5.4-nano": { npm: "@ai-sdk/openai-compatible" }, "gpt-5.4": { npm: "@ai-sdk/openai-compatible" }, "gpt-5.4-mini": { npm: "@ai-sdk/openai-compatible" }, "gemini-3.1-pro-preview": { npm: "@ai-sdk/openai-compatible" }, "gpt-5-mini": { npm: "@ai-sdk/openai-compatible" }, "deepseek-v3.2": { npm: "@ai-sdk/openai-compatible" }, "gemini-3.1-flash-lite-preview": { npm: "@ai-sdk/openai-compatible" }, "gpt-5.5": { npm: "@ai-sdk/openai-compatible" } } }, tinfoil: { url: "https://inference.tinfoil.sh/v1", apiKeyEnvVar: "TINFOIL_API_KEY", apiKeyHeader: "Authorization", name: "Tinfoil", models: [ "gemma4-31b", "glm-5-2", "gpt-oss-120b", "gpt-oss-safeguard-120b", "kimi-k2-6", "llama3-3-70b", "nomic-embed-text" ], docUrl: "https://docs.tinfoil.sh", gateway: "models.dev" }, mistral: { url: "https://api.mistral.ai/v1", apiKeyEnvVar: "MISTRAL_API_KEY", name: "Mistral", models: [ "codestral-latest", "magistral-medium-latest", "magistral-small", "ministral-3b-latest", "ministral-8b-latest", "mistral-embed", "mistral-large-2411", "mistral-large-2512", "mistral-large-latest", "mistral-medium-2505", "mistral-medium-2508", "mistral-medium-2604", "mistral-medium-latest", "mistral-nemo", "mistral-small-2506", "mistral-small-2603", "mistral-small-latest", "open-mistral-7b", "open-mixtral-8x22b", "open-mixtral-8x7b", "pixtral-12b", "pixtral-large-latest" ], docUrl: "https://docs.mistral.ai/getting-started/models/", gateway: "models.dev", npm: "@ai-sdk/mistral" }, "cloudflare-workers-ai": { url: "https://api.cloudflare.com/client/v4/accounts/${CLOUDFLARE_ACCOUNT_ID}/ai/v1", apiKeyEnvVar: "CLOUDFLARE_API_KEY", apiKeyHeader: "Authorization", name: "Cloudflare Workers AI", models: [ "@cf/aisingapore/gemma-sea-lion-v4-27b-it", "@cf/deepseek-ai/deepseek-r1-distill-qwen-32b", "@cf/google/gemma-4-26b-a4b-it", "@cf/ibm-granite/granite-4.0-h-micro", "@cf/meta/llama-3.1-8b-instruct-fp8", "@cf/meta/llama-3.2-11b-vision-instruct", "@cf/meta/llama-3.2-1b-instruct", "@cf/meta/llama-3.2-3b-instruct", "@cf/meta/llama-3.3-70b-instruct-fp8-fast", "@cf/meta/llama-4-scout-17b-16e-instruct", "@cf/meta/llama-guard-3-8b", "@cf/mistralai/mistral-small-3.1-24b-instruct", "@cf/moonshotai/kimi-k2.6", "@cf/moonshotai/kimi-k2.7-code", "@cf/nvidia/nemotron-3-120b-a12b", "@cf/openai/gpt-oss-120b", "@cf/openai/gpt-oss-20b", "@cf/qwen/qwen2.5-coder-32b-instruct", "@cf/qwen/qwen3-30b-a3b-fp8", "@cf/qwen/qwq-32b", "@cf/zai-org/glm-4.7-flash", "@cf/zai-org/glm-5.2" ], docUrl: "https://developers.cloudflare.com/workers-ai/models/", gateway: "models.dev" }, bailing: { url: "https://api.tbox.cn/api/llm/v1/chat/completions", apiKeyEnvVar: "BAILING_API_TOKEN", apiKeyHeader: "Authorization", name: "Bailing", models: ["Ling-1T", "Ring-1T"], docUrl: "https://alipaytbox.yuque.com/sxs0ba/ling/intro", gateway: "models.dev" }, anyapi: { url: "https://api.anyapi.ai/v1", apiKeyEnvVar: "ANYAPI_API_KEY", apiKeyHeader: "Authorization", name: "AnyAPI", models: [ "anthropic/claude-haiku-4-5", "anthropic/claude-opus-4-6", "anthropic/claude-opus-4-7", "anthropic/claude-sonnet-4-5", "anthropic/claude-sonnet-4-6", "cohere/command-r-plus-08-2024", "deepseek/deepseek-chat", "deepseek/deepseek-r1", "deepseek/deepseek-v4-flash", "deepseek/deepseek-v4-pro", "google/gemini-2.5-flash", "google/gemini-2.5-flash-lite", "google/gemini-2.5-pro", "google/gemini-3-flash-preview", "google/gemini-3-pro-preview", "mistralai/mistral-large-2512", "openai/gpt-4.1", "openai/gpt-4.1-mini", "openai/gpt-5", "openai/gpt-5-mini", "openai/gpt-5.1", "openai/gpt-5.2", "openai/gpt-5.4", "openai/o3", "openai/o3-mini", "openai/o4-mini", "perplexity/sonar-pro", "perplexity/sonar-reasoning-pro", "xai/grok-4.3" ], docUrl: "https://docs.anyapi.ai", gateway: "models.dev" }, google: { apiKeyEnvVar: ["GOOGLE_API_KEY", "GOOGLE_GENERATIVE_AI_API_KEY"], name: "Google", models: [ "gemini-2.5-flash", "gemini-2.5-flash-image", "gemini-2.5-flash-lite", "gemini-2.5-flash-preview-tts", "gemini-2.5-pro", "gemini-2.5-pro-preview-tts", "gemini-3-flash-preview", "gemini-3-pro-image-preview", "gemini-3.1-flash-image-preview", "gemini-3.1-flash-lite", "gemini-3.1-pro-preview", "gemini-3.1-pro-preview-customtools", "gemini-3.5-flash", "gemini-embedding-001", "gemini-flash-latest", "gemini-flash-lite-latest", "gemma-4-26b-a4b-it", "gemma-4-31b-it" ], docUrl: "https://ai.google.dev/gemini-api/docs/models", gateway: "models.dev", npm: "@ai-sdk/google" }, "opencode-go": { url: "https://opencode.ai/zen/go/v1", apiKeyEnvVar: "OPENCODE_API_KEY", apiKeyHeader: "Authorization", name: "OpenCode Go", models: [ "deepseek-v4-flash", "deepseek-v4-pro", "glm-5.1", "glm-5.2", "kimi-k2.6", "kimi-k2.7-code", "mimo-v2.5", "mimo-v2.5-pro", "minimax-m2.7", "minimax-m3", "qwen3.6-plus", "qwen3.7-max", "qwen3.7-plus" ], docUrl: "https://opencode.ai/docs/zen", gateway: "models.dev", modelOverrides: { "qwen3.7-plus": { npm: "@ai-sdk/anthropic" }, "qwen3.7-max": { npm: "@ai-sdk/anthropic" }, "minimax-m3": { npm: "@ai-sdk/anthropic" }, "minimax-m2.7": { npm: "@ai-sdk/anthropic" }, "qwen3.6-plus": { npm: "@ai-sdk/anthropic" } } }, digitalocean: { url: "https://inference.do-ai.run/v1", apiKeyEnvVar: "DIGITALOCEAN_ACCESS_TOKEN", apiKeyHeader: "Authorization", name: "DigitalOcean", models: [ "alibaba-qwen3-32b", "all-mini-lm-l6-v2", "anthropic-claude-4.1-opus", "anthropic-claude-4.5-haiku", "anthropic-claude-4.5-sonnet", "anthropic-claude-4.6-sonnet", "anthropic-claude-fable-5", "anthropic-claude-haiku-4.5", "anthropic-claude-opus-4", "anthropic-claude-opus-4.5", "anthropic-claude-opus-4.6", "anthropic-claude-opus-4.7", "anthropic-claude-opus-4.8", "anthropic-claude-sonnet-4", "arcee-trinity-large-thinking", "bge-m3", "bge-reranker-v2-m3", "deepseek-3.2", "deepseek-4-flash", "deepseek-r1-distill-llama-70b", "deepseek-v3", "deepseek-v4-pro", "e5-large-v2", "fal-ai/elevenlabs/tts/multilingual-v2", "fal-ai/fast-sdxl", "fal-ai/flux/schnell", "fal-ai/stable-audio-25/text-to-audio", "gemma-4-31B-it", "glm-5", "glm-5.1", "glm-5.2", "gte-large-en-v1.5", "kimi-k2.5", "kimi-k2.6", "llama-4-maverick", "llama3-8b-instruct", "llama3.3-70b-instruct", "minimax-m2.5", "ministral-3-8b-instruct-2512", "mistral-3-14B", "mistral-7b-instruct-v0.3", "multi-qa-mpnet-base-dot-v1", "nemotron-3-nano-30b", "nemotron-3-nano-omni", "nemotron-3-ultra-550b", "nemotron-nano-12b-v2-vl", "nvidia-nemotron-3-super-120b", "openai-gpt-4.1", "openai-gpt-4o", "openai-gpt-4o-mini", "openai-gpt-5", "openai-gpt-5-mini", "openai-gpt-5-nano", "openai-gpt-5.1-codex-max", "openai-gpt-5.2", "openai-gpt-5.2-pro", "openai-gpt-5.3-codex", "openai-gpt-5.4", "openai-gpt-5.4-mini", "openai-gpt-5.4-nano", "openai-gpt-5.4-pro", "openai-gpt-5.5", "openai-gpt-image-1", "openai-gpt-image-1.5", "openai-g