next-ai-draw-io AI 提供商配置实战:从环境变量到服务端多模型的完整指南
next-ai-draw-io AI 提供商配置实战从环境变量到服务端多模型的完整指南【免费下载链接】next-ai-draw-ioA next.js web application that integrates AI capabilities with draw.io diagrams. This app allows you to create, modify, and enhance diagrams through natural language commands and AI-assisted visualization.项目地址: https://gitcode.com/GitHub_Trending/ne/next-ai-draw-ionext-ai-draw-io 通过一套统一的环境变量与配置体系接入 OpenAI、Anthropic、Google Gemini、DeepSeek、Ollama 等 20 余种 AI 提供商让用户可以按自己的密钥来源、成本预算和隐私要求自由切换模型。本文基于官方文档 docs/cn/ai-providers.md 与仓库源码lib/ai-providers.ts、lib/server-model-config.ts、env.example系统讲解每个提供商的密钥与端点配置、自动检测机制的判定逻辑、服务端多模型配置的三种方式以及推理模型的温度与 thinking 参数读完即可独立完成任意提供商的接入与多模型部署。快速开始官方文档给出的四步上手流程将.env.example复制为.env.local设置所选提供商的 API 密钥将AI_MODEL设置为所需的模型运行npm run dev。仓库根目录的 env.example 是全部环境变量的权威清单每个提供商的密钥变量、可选 Base URL 以及推理相关参数都有注释。其中与 AI 提供商直接相关的核心变量为# AI_PROVIDER: 要使用的提供商 # 可选值bedrock, openai, anthropic, google, vertexai, azure, ollama, openrouter, # aihubmix, deepseek, siliconflow, gateway, novita 等 AI_PROVIDERbedrock # AI_MODEL: 所选提供商的模型 ID必填 # 单提供商快速多模型逗号分隔第一个为默认模型 AI_MODELglobal.anthropic.claude-sonnet-4-5-20250929-v1:0注意 env.example 中明确说明如果只需要暴露同一 provider 下的多个模型直接在AI_MODEL中用逗号分隔即可如果要配置多个 provider 或自定义apiKeyEnv/baseUrlEnv则应改用AI_MODELS_CONFIG/ai-models.json见下文“服务端多模型配置”。支持的提供商与配置清单国际主流提供商Google GeminiGOOGLE_GENERATIVE_AI_API_KEYyour_api_key AI_MODELgemini-2.0-flash可选的自定义端点GOOGLE_BASE_URLhttps://your-custom-endpointOpenAIOPENAI_API_KEYyour_api_key AI_MODELgpt-4o可选的自定义端点用于 OpenAI 兼容服务OPENAI_BASE_URLhttps://your-custom-endpoint/v1Anthropic支持两种互斥的认证方式——ANTHROPIC_API_KEY会作为x-api-key头发送而ANTHROPIC_AUTH_TOKEN会作为Authorization: Bearer token头发送适合通过下发 OAuth 风格 token 的网关接入两者只能设置其一ANTHROPIC_API_KEYyour_api_key AI_MODELclaude-sonnet-4-5-20250514或者使用 Bearer 认证令牌ANTHROPIC_AUTH_TOKENyour_auth_token AI_MODELclaude-sonnet-4-5-20250514可选的自定义端点ANTHROPIC_BASE_URLhttps://your-custom-endpointAzure OpenAI需要额外指定端点两种写法二选一AZURE_API_KEYyour_api_key AZURE_RESOURCE_NAMEyour-resource-name # 必填您的 Azure 资源名称 AI_MODELyour-deployment-name或者使用自定义端点代替资源名称AZURE_API_KEYyour_api_key AZURE_BASE_URLhttps://your-resource.openai.azure.com # AZURE_RESOURCE_NAME 的替代方案 AI_MODELyour-deployment-name可选的推理配置AZURE_REASONING_EFFORTlow # 可选low, medium, high AZURE_REASONING_SUMMARYdetailed # 可选none, brief, detailedAWS BedrockAWS_REGIONus-west-2 AWS_ACCESS_KEY_IDyour_access_key_id AWS_SECRET_ACCESS_KEYyour_secret_access_key AI_MODELanthropic.claude-sonnet-4-5-20250514-v1:0在 AWS 环境Lambda、带有 IAM 角色的 EC2中凭证会自动从 IAM 角色获取无需显式配置密钥。OpenRouter单一密钥访问众多模型OPENROUTER_API_KEYyour_api_key AI_MODELanthropic/claude-sonnet-4可选的自定义端点OPENROUTER_BASE_URLhttps://your-custom-endpointAIHubMix通过单个 API Key 聚合 Claude、GPT、Gemini、DeepSeek 等模型AIHUBMIX_API_KEYyour_api_key AI_MODELclaude-sonnet-4-5-20250929可选的自定义端点AIHUBMIX_BASE_URLhttps://aihubmix.com/v1Vercel AI Gateway通过单个 API 密钥提供对多个 AI 提供商的统一访问模型格式使用provider/model语法openai/gpt-4o— OpenAI GPT-4oanthropic/claude-sonnet-4-5— Anthropic Claude Sonnet 4.5google/gemini-2.0-flash— Google Gemini 2.0 Flash基本用法Vercel 托管网关AI_GATEWAY_API_KEYyour_gateway_api_key AI_MODELopenai/gpt-4o自定义网关 URL用于本地开发或自托管网关AI_GATEWAY_API_KEYyour_custom_api_key AI_GATEWAY_BASE_URLhttps://your-custom-gateway.com/v1/ai AI_MODELopenai/gpt-4o配置说明来自官方文档如果未设置AI_GATEWAY_BASE_URL则使用默认的 Vercel Gateway URLhttps://ai-gateway.vercel.sh/v1/ai自定义基础 URL 适用于本地开发、自托管 AI Gateway 部署和企业代理配置当使用自定义基础 URL 时必须同时提供AI_GATEWAY_API_KEY。国内提供商豆包字节跳动火山引擎在火山引擎 ARK 平台注册可获得所有模型 50 万免费 Token。DOUBAO_API_KEYyour_api_key AI_MODELdoubao-seed-1-8-251215 # 或其他豆包模型DeepSeekDEEPSEEK_API_KEYyour_api_key AI_MODELdeepseek-chat可选的自定义端点DEEPSEEK_BASE_URLhttps://your-custom-endpointSiliconFlowOpenAI 兼容SILICONFLOW_API_KEYyour_api_key AI_MODELdeepseek-ai/DeepSeek-V3 # 示例使用任何 SiliconFlow 模型 ID可选的自定义端点默认为推荐域名SILICONFLOW_BASE_URLhttps://api.siliconflow.com/v1 # 或 https://api.siliconflow.cn/v1ModelScope魔搭社区MODELSCOPE_API_KEYyour_api_key AI_MODELQwen/Qwen3-235B-A22B-Instruct-2507可选的自定义端点MODELSCOPE_BASE_URLhttps://your-custom-endpointGLM智谱 AIGLM_API_KEYyour_api_key AI_MODELglm-4Qwen阿里云通义千问QWEN_API_KEYyour_api_key AI_MODELqwen-turboKimi月之暗面 Moonshot AIKIMI_API_KEYyour_api_key AI_MODELkimi-latest以上国内提供商均可通过对应的GLM_BASE_URL、QWEN_BASE_URL、KIMI_BASE_URL覆盖端点。它们在源码中的默认端点定义在 lib/types/model-config.ts 的PROVIDER_INFO表中例如 GLM 默认为https://open.bigmodel.cn/api/paas/v4、Qwen 默认为https://dashscope.aliyuncs.com/compatible-mode/v1、Kimi 默认为https://api.moonshot.cn/v1。MiniMax支持两种 API 格式——Anthropic 兼容/anthropic端点推荐支持 interleaved thinking和 OpenAI 兼容/v1端点MINIMAX_API_KEYyour_api_key AI_MODELMiniMax-M3可选配置# 中国大陆版Anthropic 兼容默认 MINIMAX_BASE_URLhttps://api.minimaxi.com/anthropic # 中国大陆版OpenAI 兼容 MINIMAX_BASE_URLhttps://api.minimaxi.com/v1 # 国际版Anthropic 兼容 MINIMAX_BASE_URLhttps://api.minimax.io/anthropic # 国际版OpenAI 兼容 MINIMAX_BASE_URLhttps://api.minimax.io/v1Qiniu七牛云与MiMo小米QINIU_API_KEYyour_api_key AI_MODELyour_model_id # 可选 QINIU_BASE_URLhttps://your-custom-endpointMIMO_API_KEYyour_api_key AI_MODELmimo-v2.5-proMiMo 的 Token Plan 订阅用户请设置专属 Base URLMIMO_BASE_URLhttps://token-plan-cn.xiaomimimo.com/v1自建推理与本地部署Ollama本地/云——唯一不需要任何密钥的提供商AI_PROVIDERollama AI_MODELllama3.2可选的自定义 URL[env.example](https://link.gitcode.com/i/dc72a5df07e927f08084e39a50a25834#L72-L75)中默认指向 Ollama Cloud本地部署时指向本机OLLAMA_BASE_URLhttp://localhost:11434 OLLAMA_API_KEYyour-ollama-cloud-api-key # 可选Ollama Cloud 或需要认证的远程实例 OLLAMA_ENABLE_THINKINGtrue # 可选为支持的模型如 qwen3启用思考模式SGLangSGLANG_API_KEYyour_api_key AI_MODELyour_model_id可选的自定义端点env.example 中给出的本地示例为http://127.0.0.1:8000/v1SGLANG_BASE_URLhttps://your-custom-endpoint/v1环境变量的完整映射源码中 lib/ai-providers.ts 的PROVIDER_ENV_VARS表给出了“提供商 → 必需环境变量”的权威映射与上文的配置清单一一对应提供商AI_PROVIDER值所需环境变量可选 Base URL 变量openaiOPENAI_API_KEYOPENAI_BASE_URLanthropicANTHROPIC_API_KEY或ANTHROPIC_AUTH_TOKENANTHROPIC_BASE_URLgoogleGOOGLE_GENERATIVE_AI_API_KEYGOOGLE_BASE_URLvertexaiGOOGLE_VERTEX_API_KEYGOOGLE_VERTEX_BASE_URLazureAZURE_API_KEY另需AZURE_BASE_URL或AZURE_RESOURCE_NAMEAZURE_BASE_URLbedrock无AWS SDK 走 IAM 角色或AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY—ollama无OLLAMA_BASE_URLopenrouterOPENROUTER_API_KEYOPENROUTER_BASE_URLaihubmixAIHUBMIX_API_KEYAIHUBMIX_BASE_URLdeepseekDEEPSEEK_API_KEYDEEPSEEK_BASE_URLsiliconflowSILICONFLOW_API_KEYSILICONFLOW_BASE_URLsglangSGLANG_API_KEYSGLANG_BASE_URLgatewayAI_GATEWAY_API_KEYAI_GATEWAY_BASE_URLdoubaoDOUBAO_API_KEYDOUBAO_BASE_URLmodelscopeMODELSCOPE_API_KEYMODELSCOPE_BASE_URLglmGLM_API_KEYGLM_BASE_URLqwenQWEN_API_KEYQWEN_BASE_URLkimiKIMI_API_KEYKIMI_BASE_URLqiniuQINIU_API_KEYQINIU_BASE_URLminimaxMINIMAX_API_KEYMINIMAX_BASE_URLmimoMIMO_API_KEYMIMO_BASE_URL注意vertexai、novita、atlascloud、edgeone等值同样出现在 lib/types/model-config.ts 的ProviderName联合类型中完整列表以源码为准。提供商自动检测与凭证校验官方文档对自动检测的规则是只配置了一个提供商的 API 密钥时系统自动检测并使用该提供商无需设置AI_PROVIDER配置了多个API 密钥时必须显式设置AI_PROVIDERAI_PROVIDERgoogle # 或openai, anthropic, aihubmix, deepseek, siliconflow, doubao, azure, bedrock, openrouter, ollama, gateway, sglang, modelscope, minimax, glm, qwen, kimi, qiniu, mimo这一行为在 lib/ai-providers.ts 的detectProvider()中实现几个值得注意的细节Ollama 被跳过因为它不需要凭证不参与“唯一密钥”检测本地 Ollama 必须显式AI_PROVIDERollamaAzure 需要额外条件仅有AZURE_API_KEY不算“已配置”还必须同时设置AZURE_BASE_URL或AZURE_RESOURCE_NAME才会被计入Anthropic 双认证ANTHROPIC_API_KEY与ANTHROPIC_AUTH_TOKEN任一存在即视为已配置。当检测出多个提供商时getAIModel 会抛出带明确指引的错误信息列出已配置的提供商提示设置AI_PROVIDER一个都没配置时错误信息会列出所有可用密钥变量的示例便于快速定位问题。凭证校验逻辑在 validateProviderCredentials 中缺少密钥时抛出形如OPENAI_API_KEY environment variable is required for openai provider. Please set it in your .env.local file.的错误apiKeyEnv支持数组形式多密钥负载均衡场景数组中至少一个变量有值即可通过校验。源码纵深getAIModel 的解析链与安全设计所有对话请求最终都经过 app/api/chat/route.ts 调用getAIModel()来构建模型实例其解析优先级为客户端覆盖用户在设置面板填的 BYOK 密钥AI_PROVIDER显式配置 自动检测 报错。围绕这条主链源码中有几个直接影响使用体验的设计。自定义 Base URL 必须配 API KeySSRF 防护getAIModel 开头 有一道安全闸门如果请求携带自定义baseUrl但没有apiKeyVertex AI 的 API Key、EdgeOne 例外会直接抛出API key is required when using a custom base URL错误。其注释明确引用了 GHSA-9qf7-mprq-9qgm防止攻击者把服务端的 API 密钥重定向到恶意端点。也就是说“只改端点不给密钥”的组合会被拒绝这是自托管反向代理场景需要理解的前提。Base URL 的三级解析resolveBaseURL 的解析顺序为用户提供了自己的 API Key 时只取“用户指定的 baseUrl 或官方默认端点”不回退到服务端环境变量里的 baseUrl——避免用户密钥被发往服务器侧配置的代理无用户密钥时依次回退用户 baseUrl → 服务端*_BASE_URL环境变量 → 提供商官方默认端点来自PROVIDER_INFO。密钥解析 resolveApiKey 同理优先级为客户端密钥 →ai-models.json中的apiKeyEnv自定义变量若是数组则在有值的变量中随机选一个日志会打印Selected ... from N available keys→ 标准默认变量如OPENAI_API_KEY。几个有代表性的提供商特殊实现MiniMax 双协议归一化normalizeMiniMaxBaseURL 会根据 URL 是否包含/anthropic判断协议形态自动补全/v1后缀随后 MiniMax 分支 选择createAnthropic或createOpenAI来创建客户端。这解释了文档中“两种端点、四种域名组合”在底层如何落到具体的 SDK。SGLang 流修复SGLang 的 SSE 流包含非标准字段sglang 分支 注入了一个自定义fetch用TransformStream逐条解析data:消息剔除空的role与reasoning_content字段后重新序列化转发解析失败则原样透传以保流不断。豆包按模型名路由 SDKdoubao 分支 发现模型 ID 含deepseek或kimi时改用createDeepSeek以获得推理内容支持其余模型走 OpenAI 兼容的.chat()多模态支持默认端点为火山引擎https://ark.cn-beijing.volces.com/api/v3。Kimi / MiMo 借用 DeepSeek SDKkimi 分支 与 mimo 分支 均使用createDeepSeek原因是这些思考模型的 API 在多轮工具调用时必须把上一轮的reasoning_content回传否则返回 400而 DeepSeek SDK 正是按此约定实现的。这一结论也有单测印证tests/unit/ai-providers.test.ts 断言了 Kimi 走createDeepSeek且默认端点为https://api.moonshot.cn/v1。AIHubMix 标准端点识别aihubmix 分支 通过 isAihubmixStandardBaseURL 判断是否命中官方端点——命中则用官方aihubmix/ai-sdk-provider附带固定的appCode: MSBS9675未命中则降级为通用 OpenAI 兼容客户端。Bedrock Claude 的 Prompt CachingsupportsPromptCaching 只对模型 ID 含claude/anthropic含us./eu.区域前缀的 Bedrock 模型启用缓存。高级环境变量推理thinking与采样参数除了密钥与端点buildProviderOptions配合 env.example 的注释为各提供商暴露了一组可选的推理/采样环境变量环境变量适用提供商说明OPENAI_REASONING_EFFORTopenai推理努力minimal/low/medium/high用于 o1/o3/o4/gpt-5OPENAI_REASONING_SUMMARYopenai推理摘要none/brief/detailedo1/o3/o4/gpt-5 默认自动启用ANTHROPIC_THINKING_BUDGET_TOKENSanthropic扩展思考预算1024–64000 tokensANTHROPIC_THINKING_TYPEanthropic思考类型enabledGOOGLE_THINKING_BUDGETgoogleGemini 2.5 思考预算1024–100000 tokensGOOGLE_THINKING_LEVELgoogleGemini 3 思考级别low/highGOOGLE_CANDIDATE_COUNT/GOOGLE_TOP_K/GOOGLE_TOP_Pgoogle采样参数分别为 1–8、1–100、0–1GOOGLE_VERTEX_THINKING_BUDGET/GOOGLE_VERTEX_THINKING_LEVELvertexai同 GoogleVertex 下 Gemini 3 级别支持 minimal/low/medium/highAZURE_REASONING_EFFORT/AZURE_REASONING_SUMMARYazurelow/medium/highnone/brief/detailedBEDROCK_REASONING_BUDGET_TOKENS/BEDROCK_REASONING_EFFORTbedrockClaude 用 budget1024–64000Nova 用 effortlow/medium/highOLLAMA_ENABLE_THINKINGollama设为true时启用思考模式几个自动行为值得留意o1/o3/o4/gpt-5 系列模型会自动启用reasoningSummary: auto见 openai 分支Gemini 2.5/3 系列默认开启includeThoughts: true以回传思考内容。此外还有一个容易被忽略的变量getValidationModel 表明图表校验可以使用独立的VALIDATION_MODEL环境变量未设置时回退到AI_MODEL的第一个模型。温度设置 (Temperature)官方文档建议通过环境变量选择性配置温度TEMPERATURE0 # 输出更具确定性推荐用于图表该值在 app/api/chat/route.ts 中被解析后注入请求参数process.env.TEMPERATURE ! undefined时才附加temperature字段。重要提示对于不支持温度设置的模型例如 GPT-5.1 和其他推理模型、某些专用模型请勿设置TEMPERATURE未设置时模型使用其默认行为。服务端多模型配置管理员可以配置多个服务端模型让所有用户无需提供个人 API Key 即可使用。文档给出了三种配置方式源码 lib/server-model-config.ts 按同样的优先级顺序加载。方式一环境变量推荐用于云部署设置AI_MODELS_CONFIG为 JSON 字符串AI_MODELS_CONFIG{providers:[{name:OpenAI,provider:openai,models:[gpt-4o],default:true}]}方式二配置文件在项目根目录创建ai-models.json文件或通过AI_MODELS_CONFIG_PATH指定路径getConfigPath 的实现自定义路径优先否则读./ai-models.json。方式三AI_MODEL用逗号分隔单 provider 快速配置如果只需要暴露同一 provider 下的多个模型可以直接在AI_MODEL里用逗号分隔第一个模型会作为默认值AI_PROVIDERdoubao AI_MODELdoubao-seed-1-8-251215,doubao-seed-1-6-flash,doubao-seed-1-6-pro这是等价ai-models.json的简写形式。如果需要配置多个 provider或自定义apiKeyEnv/baseUrlEnv请使用方式一或方式二。注意 configFromCommaSeparatedAiModel 要求AI_PROVIDER同时已设置且为已知提供商否则仅打印警告并跳过该回退。配置示例与字段说明{ providers: [ { name: OpenAI Production, provider: openai, models: [gpt-4o, gpt-4o-mini], default: true }, { name: Custom DeepSeek, provider: deepseek, models: [deepseek-chat], apiKeyEnv: MY_DEEPSEEK_KEY, baseUrlEnv: MY_DEEPSEEK_URL } ] }字段必填说明name是显示名称支持同一提供商多个配置provider是提供商类型openai,anthropic,google,bedrock等models是模型 ID 列表default否设为true表示默认选中该提供商的第一个模型apiKeyEnv否自定义 API Key 环境变量名默认使用提供商标准变量如OPENAI_API_KEYbaseUrlEnv否自定义 Base URL 环境变量名配置语义补充结合 ServerProviderSchema 的 Zod 校验与源码实现该配置会被 Zod schema 严格校验provider值必须是PROVIDER_INFO中已知的提供商models中每项不能为空字符串apiKeyEnv除了字符串外还接受字符串数组用于多密钥负载均衡——resolveApiKey 会在所有有值的变量中随机选取一个name字段会被 slugify 后拼进模型 ID格式server:slug:modelId见 loadFlattenedServerModels这正是“同一 provider 可以配置 OpenAI Production / OpenAI Staging 两组不同密钥”能共存的原因服务端模型配置与 管理面板 中配置的 provider 会自动合并loadRawServerModelsConfig且面板里设置的default会覆盖环境变量里的默认项如果上述配置都不存在应用会回退到AI_PROVIDER/AI_MODEL环境变量配置。该链路的加载与合并行为由 tests/unit/server-model-config.test.ts 与 tests/unit/ai-providers.test.ts 覆盖后者还专门验证了 BYOK用户自带密钥与服务端密钥在 AIHubMix、Kimi、Atlas Cloud 等提供商上的优先级关系。模型能力要求与选型建议模型能力要求此任务对模型能力要求极高因为它涉及生成具有严格格式约束draw.io XML的长文本。官方文档的推荐是Claude Sonnet 4.5 / Opus 4.5。关于 Ollama 的说明虽然支持将 Ollama 作为提供商但除非在本地运行像 DeepSeek R1 或 Qwen3-235B 这样的高性能模型否则对于此用例通常不太实用。推荐最佳体验使用支持视觉的模型GPT-4o, Claude, Gemini以获得图像转图表功能经济实惠DeepSeek 提供具有竞争力的价格隐私保护使用 Ollama 进行完全本地、离线的操作需要强大的硬件支持灵活性OpenRouter 通过单一 API 提供对众多模型的访问。小结next-ai-draw-io 的 AI 提供商体系可以概括为三层环境变量层密钥 AI_MODEL覆盖绝大多数单提供商场景并支持单 key 自动检测、服务端多模型层AI_MODELS_CONFIG/ai-models.json/ 逗号分隔AI_MODEL三种方式支持apiKeyEnv多密钥负载均衡与name多组配置、客户端 BYOK 层用户在设置面板自带密钥优先级最高并受 SSRF 防护约束。所有提供商最终都汇入 getAIModel 这一入口配合 buildProviderOptions 的推理参数与 app/api/chat/route.ts 的温度注入构成了一套从选型到落地的完整闭环。配置完成后运行npm run dev即可在界面中验证所选模型能否正确生成 draw.io XML。【免费下载链接】next-ai-draw-ioA next.js web application that integrates AI capabilities with draw.io diagrams. This app allows you to create, modify, and enhance diagrams through natural language commands and AI-assisted visualization.项目地址: https://gitcode.com/GitHub_Trending/ne/next-ai-draw-io创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →