Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
158 changes: 139 additions & 19 deletions all-in-one/get-ai-gateway.sh
Original file line number Diff line number Diff line change
Expand Up @@ -146,32 +146,41 @@ runConfigWizard() {

echo

# Provider order: Top 10 most commonly used providers first, then others alphabetically
local providers=(
"OpenAI|OPENAI"
"Aliyun Dashscope|DASHSCOPE"
"Moonshot|MOONSHOT"
# Top 10 commonly used providers (user-specified order)
"Aliyun Dashscope (Qwen)|DASHSCOPE"
"DeepSeek|DEEPSEEK"
"Moonshot (Kimi)|MOONSHOT"
"Zhipu AI|ZHIPUAI"
"Minimax|MINIMAX|configureMinimaxProvider"
"Azure OpenAI|AZURE|configureAzureProvider"
"AWS Bedrock|BEDROCK|configureBedrockProvider"
"Google Vertex AI|VERTEX|configureVertexProvider"
"OpenAI|OPENAI"
"OpenRouter|OPENROUTER"
# Other providers (alphabetically ordered)
"01.AI (Yi)|YI"
"360 Zhinao|AI360"
# "Github Models|GITHUB"
# "Groq|GROQ"
"Baichuan AI|BAICHUAN"
"01.AI|YI"
"DeepSeek|DEEPSEEK"
"Zhipu AI|ZHIPUAI"
"Ollama|OLLAMA|configureOllamaProvider"
"Claude|CLAUDE|configureClaudeProvider"
"Baidu AI Cloud|BAIDU"
# "Tencent Hunyuan|HUNYUAN"
"Stepfun|STEPFUN"
"Minimax|MINIMAX|configureMinimaxProvider"
# "Cloudflare Workers AI|CLOUDFLARE"
# "iFlyTek Spark|SPARK"
"Google Gemini|GEMINI"
# "DeepL|DEEPL"
"Mistral AI|MISTRAL"
"Claude|CLAUDE|configureClaudeProvider"
"Cloudflare Workers AI|CLOUDFLARE|configureCloudflareProvider"
"Cohere|COHERE"
"DeepL|DEEPL|configureDeepLProvider"
"Dify|DIFY|configureDifyProvider"
"Doubao|DOUBAO"
# "Coze|COZE"
"Fireworks AI|FIREWORKS"
"Github Models|GITHUB"
"Google Gemini|GEMINI"
"Grok|GROK"
"Groq|GROQ"
"Mistral AI|MISTRAL"
"Ollama|OLLAMA|configureOllamaProvider"
"iFlyTek Spark|SPARK|configureSparkProvider"
"Stepfun|STEPFUN"
"Tencent Hunyuan|HUNYUAN|configureHunyuanProvider"
"Together AI|TOGETHERAI"
)

local selectedIndex=''
Expand Down Expand Up @@ -264,6 +273,117 @@ configureMinimaxProvider() {
LLM_ENVS+=("MINIMAX_API_KEY" "MINIMAX_GROUP_ID")
}

configureBedrockProvider() {
echo "AWS Bedrock supports two authentication methods:"
echo " 1. AWS Signature V4 (Access Key + Secret Key)"
echo " 2. Bearer Token (API Token)"
read -r -u 3 -p "→ Choose authentication method (1 or 2, default: 1): " BEDROCK_AUTH_METHOD
if [ "$BEDROCK_AUTH_METHOD" == "2" ]; then
read -r -u 3 -p "→ Enter AWS Bearer Token: " BEDROCK_API_KEY
LLM_ENVS+=("BEDROCK_API_KEY")
read -r -u 3 -p "→ Enter AWS Region (e.g., us-east-1): " BEDROCK_REGION
if [ -n "$BEDROCK_API_KEY" ] && [ -n "$BEDROCK_REGION" ]; then
BEDROCK_CONFIGURED="placeholder"
fi
else
read -r -u 3 -p "→ Enter AWS Access Key: " BEDROCK_ACCESS_KEY
read -r -u 3 -p "→ Enter AWS Secret Key: " BEDROCK_SECRET_KEY
LLM_ENVS+=("BEDROCK_ACCESS_KEY" "BEDROCK_SECRET_KEY")
read -r -u 3 -p "→ Enter AWS Region (e.g., us-east-1): " BEDROCK_REGION
if [ -n "$BEDROCK_ACCESS_KEY" ] && [ -n "$BEDROCK_SECRET_KEY" ] && [ -n "$BEDROCK_REGION" ]; then
BEDROCK_CONFIGURED="placeholder"
fi
fi
Comment thread
johnlanni marked this conversation as resolved.
LLM_ENVS+=("BEDROCK_REGION")
}

configureVertexProvider() {
echo "Google Vertex AI supports two authentication modes:"
echo " 1. Standard Mode (Service Account JSON Key)"
echo " 2. Express Mode (API Key only)"
read -r -u 3 -p "→ Choose authentication mode (1 or 2, default: 1): " VERTEX_AUTH_MODE
if [ "$VERTEX_AUTH_MODE" == "2" ]; then
read -r -u 3 -p "→ Enter Vertex AI API Key: " VERTEX_API_KEY
LLM_ENVS+=("VERTEX_API_KEY")
read -r -u 3 -p "→ Enter Google Cloud Region (e.g., us-central1): " VERTEX_REGION
read -r -u 3 -p "→ Enter Google Cloud Project ID: " VERTEX_PROJECT_ID
if [ -n "$VERTEX_API_KEY" ] && [ -n "$VERTEX_REGION" ] && [ -n "$VERTEX_PROJECT_ID" ]; then
VERTEX_CONFIGURED="placeholder"
fi
else
read -r -u 3 -p "→ Enter path to Service Account JSON Key file: " VERTEX_AUTH_KEY_FILE
if [ -n "$VERTEX_AUTH_KEY_FILE" ] && [ -f "$VERTEX_AUTH_KEY_FILE" ]; then
# Read JSON file and compact it to a single line
VERTEX_AUTH_KEY=$(cat "$VERTEX_AUTH_KEY_FILE" | tr -d '\n' | tr -s ' ')
else
echo "Warning: File not found or not specified. Please configure manually later."
VERTEX_AUTH_KEY=""
fi
read -r -u 3 -p "→ Enter Vertex AI Auth Service Name: " VERTEX_AUTH_SERVICE_NAME
LLM_ENVS+=("VERTEX_AUTH_KEY" "VERTEX_AUTH_SERVICE_NAME")
read -r -u 3 -p "→ Enter Google Cloud Region (e.g., us-central1): " VERTEX_REGION
read -r -u 3 -p "→ Enter Google Cloud Project ID: " VERTEX_PROJECT_ID
if [ -n "$VERTEX_AUTH_KEY" ] && [ -n "$VERTEX_AUTH_SERVICE_NAME" ] && [ -n "$VERTEX_REGION" ] && [ -n "$VERTEX_PROJECT_ID" ]; then
VERTEX_CONFIGURED="placeholder"
fi
fi
LLM_ENVS+=("VERTEX_REGION" "VERTEX_PROJECT_ID")
}

configureCloudflareProvider() {
read -r -u 3 -p "→ Enter API Token for Cloudflare Workers AI: " CLOUDFLARE_API_KEY
read -r -u 3 -p "→ Enter Cloudflare Account ID: " CLOUDFLARE_ACCOUNT_ID
if [ -n "$CLOUDFLARE_API_KEY" ] && [ -n "$CLOUDFLARE_ACCOUNT_ID" ]; then
CLOUDFLARE_CONFIGURED="placeholder"
fi
LLM_ENVS+=("CLOUDFLARE_API_KEY" "CLOUDFLARE_ACCOUNT_ID")
}

configureDeepLProvider() {
read -r -u 3 -p "→ Enter API Key for DeepL: " DEEPL_API_KEY
read -r -u 3 -p "→ Enter target language for DeepL (e.g., EN, ZH, JA): " DEEPL_TARGET_LANG
if [ -n "$DEEPL_API_KEY" ] && [ -n "$DEEPL_TARGET_LANG" ]; then
DEEPL_CONFIGURED="placeholder"
fi
LLM_ENVS+=("DEEPL_API_KEY" "DEEPL_TARGET_LANG")
}

configureDifyProvider() {
read -r -u 3 -p "→ Enter API Key for Dify: " DIFY_API_KEY
read -r -u 3 -p "→ Enter Dify API URL (leave empty for cloud service): " DIFY_API_URL
echo "Dify application types: Chat, Completion, Agent, Workflow"
read -r -u 3 -p "→ Enter Dify bot type (default: Chat): " DIFY_BOT_TYPE
if [ -z "$DIFY_BOT_TYPE" ]; then
DIFY_BOT_TYPE="Chat"
fi
LLM_ENVS+=("DIFY_API_KEY" "DIFY_API_URL" "DIFY_BOT_TYPE")
if [ "$DIFY_BOT_TYPE" == "Workflow" ]; then
read -r -u 3 -p "→ Enter Dify input variable name: " DIFY_INPUT_VARIABLE
read -r -u 3 -p "→ Enter Dify output variable name: " DIFY_OUTPUT_VARIABLE
LLM_ENVS+=("DIFY_INPUT_VARIABLE" "DIFY_OUTPUT_VARIABLE")
fi
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Case-sensitive Workflow check skips required variable collection

Low Severity

The configureDifyProvider function uses a case-sensitive comparison [ "$DIFY_BOT_TYPE" == "Workflow" ] to determine whether to prompt for input/output variable names. If a user enters "workflow" (lowercase) when intending to use Workflow mode, the condition fails and the required DIFY_INPUT_VARIABLE and DIFY_OUTPUT_VARIABLE prompts are skipped. The configuration will be incomplete, potentially causing runtime failures when the Workflow feature is used without these required variables.

Fix in Cursor Fix in Web

}

configureSparkProvider() {
echo "Note: iFlyTek Spark API Key format is APIKey:APISecret"
read -r -u 3 -p "→ Enter API Key for iFlyTek Spark: " SPARK_API_KEY
read -r -u 3 -p "→ Enter API Secret for iFlyTek Spark: " SPARK_API_SECRET
if [ -n "$SPARK_API_KEY" ] && [ -n "$SPARK_API_SECRET" ]; then
SPARK_API_KEY="${SPARK_API_KEY}:${SPARK_API_SECRET}"
SPARK_CONFIGURED="placeholder"
fi
LLM_ENVS+=("SPARK_API_KEY")
}

configureHunyuanProvider() {
read -r -u 3 -p "→ Enter Auth ID for Tencent Hunyuan: " HUNYUAN_AUTH_ID
read -r -u 3 -p "→ Enter Auth Key for Tencent Hunyuan: " HUNYUAN_AUTH_KEY
if [ -n "$HUNYUAN_AUTH_ID" ] && [ -n "$HUNYUAN_AUTH_KEY" ]; then
HUNYUAN_CONFIGURED="placeholder"
fi
LLM_ENVS+=("HUNYUAN_AUTH_ID" "HUNYUAN_AUTH_KEY")
}
Comment thread
johnlanni marked this conversation as resolved.

configureStorage() {
if [ -d "$DATA_FOLDER" ]; then
return 0
Expand Down