mirror of
https://github.com/DayuanJiang/next-ai-draw-io.git
synced 2026-09-01 17:10:24 +08:00
* feat: Add support for Chinese AI providers (GLM, Qwen, Kimi, MiniMax, Qiniu) - Add minimax, glm, qwen, qiniu, kimi to ProviderName type - Add provider configurations to PROVIDER_INFO with default base URLs - Add suggested models for MiniMax in SUGGESTED_MODELS - Add minimax/glm/qwen/qiniu/kimi cases to getAIModel using OpenAI-compatible SDK - Update ALLOWED_CLIENT_PROVIDERS and error messages - Add environment variable examples to env.example Fixes: MiniMax API compatibility issue (invalid chat setting 2013) * fix: Add missing providers to PROVIDER_ENV_VARS type * fix: Handle null case in PROVIDER_ENV_VARS for new providers * fix: Add minimax/glm/qwen/kimi/qiniu support to validate-model API - Add getDefaultBaseUrl helper function - Add validation cases for new providers in validate-model route * fix: Add new providers to buildProviderOptions switch case * fix: Merge multiple system messages into one for minimax/glm/qwen/kimi/qiniu MiniMax API doesn't support multiple system messages. This fix combines them into a single message for Chinese providers. * fix: Handle null provider in system message check * debug: Add logging for allMessages count * fix: Use effective provider (including env var fallback) for isSingleSystemProvider check * fix: apply biome formatting (line-wrapping) * docs: add Chinese AI providers documentation (MiniMax, GLM, Qwen, Kimi, Qiniu) - Add i18n translations for new providers in all language dictionaries - Add provider configuration documentation in en/cn/ja docs * fix: 改进 PR #722 的代码审查反馈 1. 删除重复的 getDefaultBaseUrl 函数,改用 model-config.ts 的 PROVIDER_INFO 2. validate-model 路由改用 AI SDK 的 createOpenAI + generateText 3. 修复 resolveBaseURL 回退逻辑,传入 PROVIDER_INFO 的 defaultBaseUrl 4. 删除无用的 .bak 备份文件 Co-authored-by: Shinyi <shinyi@openclaw.ai> * fix: 修正中国 AI provider 端点配置 - qiniu: api.qiniucdn.com → api.qnaigc.com - qwen: dashscope.aliyun.com → dashscope.aliyuncs.com - 更新 env.example 文档链接 Co-authored-by: Shinyi <shinyi@openclaw.ai> * feat: MiniMax 使用 Anthropic 兼容 API - MiniMax 改用 createAnthropic (而非 createOpenAI) - 支持 api.minimax.io/anthropic 和 api.minimaxi.com/anthropic - 合并多个 system 消息为单个 (MiniMax/GLM/Qwen/Kimi/Qiniu) - 更新默认模型为 MiniMax-M2.5 系列 - 支持 MINIMAX_BASE_URL 环境变量配置 Co-authored-by: Shinyi <shinyi@openclaw.ai> * docs: 更新 MiniMax 文档 - 添加 Anthropic 兼容 API 说明 - 更新默认模型为 MiniMax-M2.5 - 添加国际版/中国大陆版配置示例 - 更新 env.example 注释 Co-authored-by: Shinyi <shinyi@openclaw.ai> * fix: 完善 MiniMax 双端点支持及问题修复 - 支持 MiniMax Anthropic 兼容端点和 OpenAI 兼容端点自动切换 - 修正默认端点为 api.minimaxi.com (中国大陆可用) - 修复端点路径缺少 /v1 的问题 - 添加前端 MiniMax logo 映射 - 移除调试日志 - 修正 env.example 默认配置 * chore: clean backup artifacts and align biome formatting * fix: resolve effectiveProvider bug, deduplicate MiniMax URL logic, fix docs - Fix critical bug: effectiveProvider was empty during auto-detection, causing multi-system-message to be sent to MiniMax (which rejects it). Now uses resolved provider from getAIModel instead of re-deriving it. - Extract normalizeMiniMaxBaseURL() shared helper to eliminate duplication between ai-providers.ts and validate-model/route.ts - Add guard for undefined MiniMax baseURL to prevent hitting api.anthropic.com - Fix docs: mark China mainland URL as default (matches code behavior) - Restructure minimax/glm/qwen/kimi/qiniu validation to use shared pattern Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: document MiniMax dual API formats in docs and UI - Add hint below Base URL input when MiniMax is selected, explaining Anthropic-compatible (/anthropic) vs OpenAI-compatible (/v1) endpoints - Update all 3 ai-providers docs (en/cn/ja) to list all 4 endpoint options (China/International × Anthropic/OpenAI) - Add i18n translations for the hint in all 4 locales Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor: deduplicate PROVIDER_LOGO_MAP, remove unnecessary optional chaining - Extract PROVIDER_LOGO_MAP to lib/types/model-config.ts (was duplicated in model-config-dialog.tsx and model-selector.tsx) - Remove unnecessary ?. on PROVIDER_INFO.minimax (it's a full Record) --------- Co-authored-by: msga-oc <msga-oc@gitea.misakiga.top> Co-authored-by: Shinyi <shinyi@openclaw.ai> Co-authored-by: dayuan.jiang <jdy.toh@gmail.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
170 lines
8.2 KiB
Plaintext
170 lines
8.2 KiB
Plaintext
# AI Provider Configuration
|
|
# AI_PROVIDER: Which provider to use
|
|
# Options: bedrock, openai, anthropic, google, vertexai, azure, ollama, openrouter, deepseek, siliconflow, gateway
|
|
# Default: bedrock
|
|
AI_PROVIDER=bedrock
|
|
|
|
# AI_MODEL: The model ID for your chosen provider (REQUIRED)
|
|
AI_MODEL=global.anthropic.claude-sonnet-4-5-20250929-v1:0
|
|
|
|
# AWS Bedrock Configuration
|
|
# AWS_REGION=us-east-1
|
|
# AWS_ACCESS_KEY_ID=your-access-key-id
|
|
# AWS_SECRET_ACCESS_KEY=your-secret-access-key
|
|
# Note: Claude and Nova models support reasoning/extended thinking
|
|
# BEDROCK_REASONING_BUDGET_TOKENS=12000 # Optional: Claude reasoning budget in tokens (1024-64000)
|
|
# BEDROCK_REASONING_EFFORT=medium # Optional: Nova reasoning effort (low/medium/high)
|
|
|
|
# OpenAI Configuration
|
|
# OPENAI_API_KEY=sk-...
|
|
# OPENAI_BASE_URL=https://api.openai.com/v1 # Optional: Custom OpenAI-compatible endpoint
|
|
# OPENAI_ORGANIZATION=org-... # Optional
|
|
# OPENAI_PROJECT=proj_... # Optional
|
|
# Note: o1/o3/gpt-5 models automatically enable reasoning summary (default: detailed)
|
|
# OPENAI_REASONING_EFFORT=low # Optional: Reasoning effort (minimal/low/medium/high) - for o1/o3/gpt-5
|
|
# OPENAI_REASONING_SUMMARY=detailed # Optional: Override reasoning summary (none/brief/detailed)
|
|
|
|
# Anthropic (Direct) Configuration
|
|
# ANTHROPIC_API_KEY=sk-ant-...
|
|
# ANTHROPIC_BASE_URL=https://your-custom-anthropic/v1
|
|
# ANTHROPIC_THINKING_TYPE=enabled # Optional: Anthropic extended thinking (enabled)
|
|
# ANTHROPIC_THINKING_BUDGET_TOKENS=12000 # Optional: Budget for extended thinking in tokens
|
|
|
|
# Google Generative AI Configuration
|
|
# GOOGLE_GENERATIVE_AI_API_KEY=...
|
|
# GOOGLE_BASE_URL=https://generativelanguage.googleapis.com/v1beta # Optional: Custom endpoint
|
|
# GOOGLE_CANDIDATE_COUNT=1 # Optional: Number of candidates to generate
|
|
# GOOGLE_TOP_K=40 # Optional: Top K sampling parameter
|
|
# GOOGLE_TOP_P=0.95 # Optional: Nucleus sampling parameter
|
|
# Note: Gemini 2.5/3 models automatically enable reasoning display (includeThoughts: true)
|
|
# GOOGLE_THINKING_BUDGET=8192 # Optional: Gemini 2.5 thinking budget in tokens (for more/less thinking)
|
|
# GOOGLE_THINKING_LEVEL=high # Optional: Gemini 3 thinking level (low/high)
|
|
|
|
# Google Vertex AI Configuration (Enterprise GCP)
|
|
# For enterprise users needing data residency, VPC Service Controls, or GCP integration
|
|
# GOOGLE_VERTEX_API_KEY= # Required: Express Mode API key
|
|
# GOOGLE_VERTEX_BASE_URL=https://... # Optional: Custom endpoint URL
|
|
# Note: Gemini 2.5/3 models automatically enable reasoning display (includeThoughts: true)
|
|
# GOOGLE_VERTEX_THINKING_BUDGET=8192 # Optional: Gemini 2.5 thinking budget in tokens (1024-100000)
|
|
# GOOGLE_VERTEX_THINKING_LEVEL=high # Optional: Gemini 3 thinking level (minimal/low/medium/high)
|
|
|
|
# Azure OpenAI Configuration
|
|
# Configure endpoint using ONE of these methods:
|
|
# 1. AZURE_RESOURCE_NAME - SDK constructs: https://{name}.openai.azure.com/openai/v1{path}
|
|
# 2. AZURE_BASE_URL - SDK appends /v1{path} to your URL
|
|
# If both are set, AZURE_BASE_URL takes precedence.
|
|
# AZURE_RESOURCE_NAME=your-resource-name
|
|
# AZURE_API_KEY=...
|
|
# AZURE_BASE_URL=https://your-resource.openai.azure.com/openai # Alternative: Custom endpoint
|
|
# AZURE_REASONING_EFFORT=low # Optional: Azure reasoning effort (low, medium, high)
|
|
# AZURE_REASONING_SUMMARY=detailed
|
|
|
|
# Ollama Configuration (Local or Cloud)
|
|
# OLLAMA_BASE_URL=https://ollama.com/api # Optional, defaults to Ollama Cloud
|
|
# OLLAMA_API_KEY=your-ollama-cloud-api-key # Optional: For Ollama Cloud or authenticated remote instances
|
|
# OLLAMA_ENABLE_THINKING=true # Optional: Enable thinking for models that support it (e.g., qwen3)
|
|
|
|
# OpenRouter Configuration
|
|
# OPENROUTER_API_KEY=sk-or-v1-...
|
|
# OPENROUTER_BASE_URL=https://openrouter.ai/api/v1 # Optional: Custom endpoint
|
|
|
|
# DeepSeek Configuration
|
|
# DEEPSEEK_API_KEY=sk-...
|
|
# DEEPSEEK_BASE_URL=https://api.deepseek.com/v1 # Optional: Custom endpoint
|
|
|
|
# SiliconFlow Configuration (OpenAI-compatible)
|
|
# Base domain can be .com or .cn, defaults to https://api.siliconflow.com/v1
|
|
# SILICONFLOW_API_KEY=sk-...
|
|
# SILICONFLOW_BASE_URL=https://api.siliconflow.com/v1 # Optional: switch to https://api.siliconflow.cn/v1 if needed
|
|
|
|
# SGLang Configuration (OpenAI-compatible)
|
|
# SGLANG_API_KEY=your-sglang-api-key
|
|
# SGLANG_BASE_URL=http://127.0.0.1:8000/v1 # Your SGLang endpoint
|
|
|
|
# ModelScope Configuration
|
|
# MODELSCOPE_API_KEY=ms-...
|
|
# MODELSCOPE_BASE_URL=https://api-inference.modelscope.cn/v1 # Optional: Custom endpoint
|
|
|
|
# ByteDance Doubao Configuration (via Volcengine)
|
|
# DOUBAO_API_KEY=your-doubao-api-key
|
|
# DOUBAO_BASE_URL=https://ark.cn-beijing.volces.com/api/v3 # ByteDance Volcengine endpoint
|
|
|
|
# Vercel AI Gateway Configuration
|
|
# Get your API key from: https://vercel.com/ai-gateway
|
|
# Model format: "provider/model" e.g., "openai/gpt-4o", "anthropic/claude-sonnet-4-5"
|
|
# AI_GATEWAY_API_KEY=...
|
|
# AI_GATEWAY_BASE_URL=https://your-custom-gateway.com/v1/ai # Optional: Custom Gateway URL (for local dev or self-hosted Gateway)
|
|
# # If not set, uses Vercel default: https://ai-gateway.vercel.sh/v1/ai
|
|
|
|
# Langfuse Observability (Optional)
|
|
# Enable LLM tracing and analytics - https://langfuse.com
|
|
# LANGFUSE_PUBLIC_KEY=pk-lf-...
|
|
# LANGFUSE_SECRET_KEY=sk-lf-...
|
|
# LANGFUSE_BASEURL=https://cloud.langfuse.com # EU region, use https://us.cloud.langfuse.com for US
|
|
|
|
# Optional server-side multi-model configuration
|
|
# If set, points to a JSON file with server-provided models (see README for schema).
|
|
# Default: ./ai-models.json in project root
|
|
# AI_MODELS_CONFIG_PATH=/path/to/ai-models.json
|
|
|
|
# Temperature (Optional)
|
|
# Controls randomness in AI responses. Lower = more deterministic.
|
|
# Leave unset for models that don't support temperature (e.g., GPT-5.1 reasoning models)
|
|
# TEMPERATURE=0
|
|
|
|
# Access Control (Optional)
|
|
# ACCESS_CODE_LIST=your-secret-code,another-code
|
|
|
|
# Draw.io Configuration (Optional)
|
|
# NEXT_PUBLIC_DRAWIO_BASE_URL=https://embed.diagrams.net # Default: https://embed.diagrams.net
|
|
# Use this to point to a self-hosted draw.io instance
|
|
|
|
# Subdirectory Deployment (Optional)
|
|
# For deploying to a subdirectory (e.g., https://example.com/nextaidrawio)
|
|
# Set this to your subdirectory path with leading slash (e.g., /nextaidrawio)
|
|
# Leave empty for root deployment (default)
|
|
# NEXT_PUBLIC_BASE_PATH=/nextaidrawio
|
|
|
|
# PDF Input Feature (Optional)
|
|
# Enable PDF file upload to extract text and generate diagrams
|
|
# Enabled by default. Set to "false" to disable.
|
|
# ENABLE_PDF_INPUT=true
|
|
# NEXT_PUBLIC_MAX_EXTRACTED_CHARS=150000 # Max characters for PDF/text extraction (default: 150000)
|
|
|
|
# Security Settings (Optional)
|
|
# Allow private/internal URLs for reverse proxy setups (default: true)
|
|
# Set to "false" to block private IPs, localhost, and internal hostnames
|
|
# ALLOW_PRIVATE_URLS=false
|
|
|
|
# Self-hosted deployment (Optional)
|
|
# Self-hosted users may implement custom quota-management solutions,
|
|
# which triggers the client UI to display messages suggesting self-hosting or sponsorship.
|
|
# This switch allows self-hosted users to provide custom messages in response to a 429 code,
|
|
# in messageTokenSelfHosted, messageApiSelfHosted, and tipSelfHosted translation strings.
|
|
# NEXT_PUBLIC_SELFHOSTED=true
|
|
|
|
# Minimax Configuration (Optional)
|
|
# Get your API key from: https://platform.minimaxi.com/docs/guides/models-intro
|
|
# MINIMAX_API_KEY=your_minimax_api_key
|
|
# MINIMAX_BASE_URL=https://api.minimaxi.com/anthropic # Optional, default (China mainland)
|
|
|
|
# GLM Configuration (Optional)
|
|
# Get your API key from: https://open.bigmodel.cn/dev/api
|
|
# GLM_API_KEY=your_glm_api_key
|
|
# GLM_BASE_URL=https://open.bigmodel.cn/api/paas/v4 # Optional, default
|
|
|
|
# Qwen Configuration (Optional)
|
|
# Get your API key from: https://www.aliyun.com/product/bailian
|
|
# QWEN_API_KEY=your_qwen_api_key
|
|
# QWEN_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1 # Optional, default
|
|
|
|
# Kimi Configuration (Optional)
|
|
# Get your API key from: https://platform.moonshot.cn/
|
|
# KIMI_API_KEY=your_kimi_api_key
|
|
# KIMI_BASE_URL=https://api.moonshot.cn/v1 # Optional, default
|
|
|
|
# Qiniu Configuration (Optional)
|
|
# Get your API key from: https://www.qiniu.com/ai/models
|
|
# QINIU_API_KEY=your_qiniu_api_key
|
|
# QINIU_BASE_URL=https://api.qnaigc.com/v1 # Optional, default
|