Skip to content

Commit 4f08dff

Browse files
committed
feat: add universal model pattern normalization function
This commit adds a unified model pattern normalization system that supports multiple flexible input formats and intelligently converts them to optimal match types. **New normalizeModelPattern() function:** Supports the following input formats: 1. **Wildcard suffix**: `qwen-*` → PRE `qwen-` - Converts to prefix match for efficiency 2. **Exact model name**: `qwen3-max` → PRE `qwen3-max` - Uses prefix match for exact names 3. **Multiple wildcards**: `kimi-*,moonshot-*` → REGULAR `kimi-.*|moonshot-.*` - Comma-separated patterns with wildcards - Converts to regex with OR operator 4. **Multiple exact names**: `kimi-2.5,moonshot-k1` → REGULAR `kimi-2.5|moonshot-k1` - Comma-separated exact model names - Creates regex OR pattern 5. **Mixed patterns**: `qwen-*,gpt-4` → REGULAR `qwen-.*|gpt-4` - Supports mixing wildcards and exact names 6. **Match all**: `*` → REGULAR `.*` - Universal wildcard for all models **Smart type detection:** - Single pattern with `-*` suffix → PRE (prefix match, more efficient) - Multiple patterns (comma-separated) → REGULAR (regex with OR) - Complex wildcards → REGULAR (full regex power) - Empty pattern → REGULAR `.*` (match all) **Updated all provider configurations:** All providers now use normalizeModelPattern() to process their model patterns, enabling: - Consistent user experience across all providers - Flexible configuration via environment variables - Automatic optimization (PRE vs REGULAR) - Support for complex multi-model routing **Default pattern updates:** Changed defaults to use the more intuitive wildcard syntax: - `qwen-*` instead of `qwen` - `gpt-*,o1-*,o3-*` instead of `gpt-.*|o1-.*|o3-.*` - `moonshot-*,kimi-*` instead of `moonshot-.*|kimi-.*` Users can now configure models in the most natural way: ```bash # Simple prefix match DASHSCOPE_MODELS="qwen-*" # Multiple models OPENAI_MODELS="gpt-4-turbo,gpt-4o" # Mix exact and wildcard CLAUDE_MODELS="claude-3-5-sonnet-*,claude-opus-4" # Comma-separated wildcards MOONSHOT_MODELS="moonshot-*,kimi-*" ``` The normalization function handles all conversion automatically!
1 parent 2fca516 commit 4f08dff

1 file changed

Lines changed: 154 additions & 64 deletions

File tree

all-in-one/scripts/config-template/ai-gateway.sh

Lines changed: 154 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -11,27 +11,93 @@ MODEL_ROUTER_VERSION=${MODEL_ROUTER_VERSION:-1.0.0}
1111

1212
declare -a GENERATED_INGRESSES
1313

14+
# Normalize model pattern to match type and regex value
15+
# Supports:
16+
# - Wildcard prefix: "qwen-*" -> PRE "qwen-"
17+
# - Exact name: "qwen3-max" -> PRE "qwen3-max"
18+
# - Multiple wildcards: "kimi-*,moonshot-*" -> REGULAR "kimi-.*|moonshot-.*"
19+
# - Multiple exact: "kimi-2.5,moonshot-k1" -> REGULAR "kimi-2.5|moonshot-k1"
20+
# - Mixed: "qwen-*,gpt-4" -> REGULAR "qwen-.*|gpt-4"
21+
# Returns: "MATCH_TYPE|MATCH_VALUE"
22+
normalizeModelPattern() {
23+
local pattern="$1"
24+
local match_type=""
25+
local match_value=""
26+
27+
# Remove spaces
28+
pattern="${pattern// /}"
29+
30+
# Empty pattern defaults to match all
31+
if [ -z "$pattern" ]; then
32+
echo "REGULAR|.*"
33+
return
34+
fi
35+
36+
# Check if contains comma (multiple patterns)
37+
if [[ "$pattern" == *","* ]]; then
38+
IFS=',' read -ra parts <<< "$pattern"
39+
local regex_parts=()
40+
41+
for part in "${parts[@]}"; do
42+
if [[ "$part" == *"*" ]]; then
43+
# Has wildcard, convert * to .*
44+
part="${part//\*/.*}"
45+
fi
46+
regex_parts+=("$part")
47+
done
48+
49+
# Join with |
50+
match_value=$(IFS='|'; echo "${regex_parts[*]}")
51+
match_type="REGULAR"
52+
else
53+
# Single pattern
54+
if [[ "$pattern" == *"*" ]]; then
55+
# Has wildcard
56+
if [[ "$pattern" == *"-*" ]] && [[ "$pattern" != *".*" ]]; then
57+
# Simple suffix wildcard like "qwen-*", use PRE for efficiency
58+
match_type="PRE"
59+
match_value="${pattern//\*/}"
60+
else
61+
# Complex wildcard, use REGULAR
62+
match_type="REGULAR"
63+
match_value="${pattern//\*/.*}"
64+
fi
65+
else
66+
# No wildcard, exact match - use PRE for simple prefix/exact match
67+
match_type="PRE"
68+
match_value="$pattern"
69+
fi
70+
fi
71+
72+
echo "$match_type|$match_value"
73+
}
74+
1475
function initializeLlmProviderConfigs() {
1576
local EXTRA_CONFIGS=()
1677

1778
# Top commonly used providers (matching get-ai-gateway.sh order)
18-
local DASHSCOPE_MODELS="${DASHSCOPE_MODELS:-qwen}"
19-
initializeLlmProviderConfig aliyun qwen DASHSCOPE dashscope.aliyuncs.com "443" "https" "" "PRE" "$DASHSCOPE_MODELS"
79+
local DASHSCOPE_MODELS="${DASHSCOPE_MODELS:-qwen-*}"
80+
IFS='|' read -r DASHSCOPE_TYPE DASHSCOPE_PATTERN <<< "$(normalizeModelPattern "$DASHSCOPE_MODELS")"
81+
initializeLlmProviderConfig aliyun qwen DASHSCOPE dashscope.aliyuncs.com "443" "https" "" "$DASHSCOPE_TYPE" "$DASHSCOPE_PATTERN"
2082

21-
local DEEPSEEK_MODELS="${DEEPSEEK_MODELS:-deepseek}"
22-
initializeLlmProviderConfig deepseek deepseek DEEPSEEK api.deepseek.com "443" "https" "" "PRE" "$DEEPSEEK_MODELS"
83+
local DEEPSEEK_MODELS="${DEEPSEEK_MODELS:-deepseek-*}"
84+
IFS='|' read -r DEEPSEEK_TYPE DEEPSEEK_PATTERN <<< "$(normalizeModelPattern "$DEEPSEEK_MODELS")"
85+
initializeLlmProviderConfig deepseek deepseek DEEPSEEK api.deepseek.com "443" "https" "" "$DEEPSEEK_TYPE" "$DEEPSEEK_PATTERN"
2386

24-
local MOONSHOT_MODELS="${MOONSHOT_MODELS:-moonshot-.*|kimi-.*}"
25-
initializeLlmProviderConfig moonshot moonshot MOONSHOT api.moonshot.cn "443" "https" "" "REGULAR" "$MOONSHOT_MODELS"
87+
local MOONSHOT_MODELS="${MOONSHOT_MODELS:-moonshot-*,kimi-*}"
88+
IFS='|' read -r MOONSHOT_TYPE MOONSHOT_PATTERN <<< "$(normalizeModelPattern "$MOONSHOT_MODELS")"
89+
initializeLlmProviderConfig moonshot moonshot MOONSHOT api.moonshot.cn "443" "https" "" "$MOONSHOT_TYPE" "$MOONSHOT_PATTERN"
2690

27-
local ZHIPUAI_MODELS="${ZHIPUAI_MODELS:-GLM-}"
28-
initializeLlmProviderConfig zhipuai zhipuai ZHIPUAI open.bigmodel.cn "443" "https" "" "PRE" "$ZHIPUAI_MODELS"
91+
local ZHIPUAI_MODELS="${ZHIPUAI_MODELS:-GLM-*}"
92+
IFS='|' read -r ZHIPUAI_TYPE ZHIPUAI_PATTERN <<< "$(normalizeModelPattern "$ZHIPUAI_MODELS")"
93+
initializeLlmProviderConfig zhipuai zhipuai ZHIPUAI open.bigmodel.cn "443" "https" "" "$ZHIPUAI_TYPE" "$ZHIPUAI_PATTERN"
2994

3095
EXTRA_CONFIGS=(
3196
"minimaxGroupId=\"$MINIMAX_GROUP_ID\""
3297
)
33-
local MINIMAX_MODELS="${MINIMAX_MODELS:-abab}"
34-
initializeLlmProviderConfig minimax minimax MINIMAX api.minimax.chat "443" "https" "" "PRE" "$MINIMAX_MODELS" "${EXTRA_CONFIGS[@]}"
98+
local MINIMAX_MODELS="${MINIMAX_MODELS:-abab-*}"
99+
IFS='|' read -r MINIMAX_TYPE MINIMAX_PATTERN <<< "$(normalizeModelPattern "$MINIMAX_MODELS")"
100+
initializeLlmProviderConfig minimax minimax MINIMAX api.minimax.chat "443" "https" "" "$MINIMAX_TYPE" "$MINIMAX_PATTERN" "${EXTRA_CONFIGS[@]}"
35101

36102
# Azure OpenAI
37103
if [ -z "$OPENAI_API_KEY" ]; then
@@ -43,8 +109,9 @@ function initializeLlmProviderConfigs() {
43109
EXTRA_CONFIGS=(
44110
"azureServiceUrl=$AZURE_SERVICE_URL"
45111
)
46-
local AZURE_MODELS="${AZURE_MODELS:-gpt-.*|o1-.*|o3-.*}"
47-
initializeLlmProviderConfig azure azure AZURE "$AZURE_SERVICE_DOMAIN" "443" "https" "" "REGULAR" "$AZURE_MODELS" "${EXTRA_CONFIGS[@]}"
112+
local AZURE_MODELS="${AZURE_MODELS:-gpt-*,o1-*,o3-*}"
113+
IFS='|' read -r AZURE_TYPE AZURE_PATTERN <<< "$(normalizeModelPattern "$AZURE_MODELS")"
114+
initializeLlmProviderConfig azure azure AZURE "$AZURE_SERVICE_DOMAIN" "443" "https" "" "$AZURE_TYPE" "$AZURE_PATTERN" "${EXTRA_CONFIGS[@]}"
48115
fi
49116

50117
# AWS Bedrock - requires region configuration
@@ -57,9 +124,9 @@ function initializeLlmProviderConfigs() {
57124
EXTRA_CONFIGS+=("accessKeyId=\"$BEDROCK_ACCESS_KEY\"")
58125
EXTRA_CONFIGS+=("secretAccessKey=\"$BEDROCK_SECRET_KEY\"")
59126
fi
60-
# Support custom model patterns via environment variable
61-
local BEDROCK_MODELS="${BEDROCK_MODELS:-.*}"
62-
initializeLlmProviderConfig bedrock bedrock BEDROCK bedrock-runtime.${BEDROCK_REGION:-us-east-1}.amazonaws.com "443" "https" "" "REGULAR" "$BEDROCK_MODELS" "${EXTRA_CONFIGS[@]}"
127+
local BEDROCK_MODELS="${BEDROCK_MODELS:-*}"
128+
IFS='|' read -r BEDROCK_TYPE BEDROCK_PATTERN <<< "$(normalizeModelPattern "$BEDROCK_MODELS")"
129+
initializeLlmProviderConfig bedrock bedrock BEDROCK bedrock-runtime.${BEDROCK_REGION:-us-east-1}.amazonaws.com "443" "https" "" "$BEDROCK_TYPE" "$BEDROCK_PATTERN" "${EXTRA_CONFIGS[@]}"
63130
fi
64131

65132
# Google Vertex AI - requires project and region configuration
@@ -77,66 +144,76 @@ function initializeLlmProviderConfigs() {
77144
if [ -n "$VERTEX_AUTH_SERVICE_NAME" ]; then
78145
EXTRA_CONFIGS+=("serviceAccountName=\"$VERTEX_AUTH_SERVICE_NAME\"")
79146
fi
80-
# Support custom model patterns via environment variable
81-
local VERTEX_MODELS="${VERTEX_MODELS:-gemini-.*}"
82-
initializeLlmProviderConfig vertex vertex VERTEX ${VERTEX_REGION:-us-central1}-aiplatform.googleapis.com "443" "https" "" "REGULAR" "$VERTEX_MODELS" "${EXTRA_CONFIGS[@]}"
147+
local VERTEX_MODELS="${VERTEX_MODELS:-gemini-*}"
148+
IFS='|' read -r VERTEX_TYPE VERTEX_PATTERN <<< "$(normalizeModelPattern "$VERTEX_MODELS")"
149+
initializeLlmProviderConfig vertex vertex VERTEX ${VERTEX_REGION:-us-central1}-aiplatform.googleapis.com "443" "https" "" "$VERTEX_TYPE" "$VERTEX_PATTERN" "${EXTRA_CONFIGS[@]}"
83150
fi
84151

85152
# OpenAI (if Azure is not configured)
86153
if [ -z "$AZURE_API_KEY" ]; then
87-
local OPENAI_MODELS="${OPENAI_MODELS:-gpt-.*|o1-.*|o3-.*}"
88-
initializeLlmProviderConfig openai openai OPENAI api.openai.com "443" "https" "" "REGULAR" "$OPENAI_MODELS"
154+
local OPENAI_MODELS="${OPENAI_MODELS:-gpt-*,o1-*,o3-*}"
155+
IFS='|' read -r OPENAI_TYPE OPENAI_PATTERN <<< "$(normalizeModelPattern "$OPENAI_MODELS")"
156+
initializeLlmProviderConfig openai openai OPENAI api.openai.com "443" "https" "" "$OPENAI_TYPE" "$OPENAI_PATTERN"
89157
fi
90158

91159
# OpenRouter - multi-provider router, supports custom models
92160
if [ -n "$OPENROUTER_API_KEY" ]; then
93-
local OPENROUTER_MODELS="${OPENROUTER_MODELS:-.*}"
94-
initializeLlmProviderConfig openrouter openrouter OPENROUTER openrouter.ai "443" "https" "" "REGULAR" "$OPENROUTER_MODELS"
161+
local OPENROUTER_MODELS="${OPENROUTER_MODELS:-*}"
162+
IFS='|' read -r OPENROUTER_TYPE OPENROUTER_PATTERN <<< "$(normalizeModelPattern "$OPENROUTER_MODELS")"
163+
initializeLlmProviderConfig openrouter openrouter OPENROUTER openrouter.ai "443" "https" "" "$OPENROUTER_TYPE" "$OPENROUTER_PATTERN"
95164
fi
96165

97166
# Other providers (alphabetically ordered)
98-
local YI_MODELS="${YI_MODELS:-yi-}"
99-
initializeLlmProviderConfig yi yi YI api.lingyiwanwu.com "443" "https" "" "PRE" "$YI_MODELS"
167+
local YI_MODELS="${YI_MODELS:-yi-*}"
168+
IFS='|' read -r YI_TYPE YI_PATTERN <<< "$(normalizeModelPattern "$YI_MODELS")"
169+
initializeLlmProviderConfig yi yi YI api.lingyiwanwu.com "443" "https" "" "$YI_TYPE" "$YI_PATTERN"
100170

101-
local AI360_MODELS="${AI360_MODELS:-360GPT}"
102-
initializeLlmProviderConfig ai360 ai360 AI360 api.360.cn "443" "https" "" "PRE" "$AI360_MODELS"
171+
local AI360_MODELS="${AI360_MODELS:-360GPT-*}"
172+
IFS='|' read -r AI360_TYPE AI360_PATTERN <<< "$(normalizeModelPattern "$AI360_MODELS")"
173+
initializeLlmProviderConfig ai360 ai360 AI360 api.360.cn "443" "https" "" "$AI360_TYPE" "$AI360_PATTERN"
103174

104-
local BAICHUAN_MODELS="${BAICHUAN_MODELS:-Baichuan}"
105-
initializeLlmProviderConfig baichuan baichuan BAICHUAN api.baichuan-ai.com "443" "https" "" "PRE" "$BAICHUAN_MODELS"
175+
local BAICHUAN_MODELS="${BAICHUAN_MODELS:-Baichuan*}"
176+
IFS='|' read -r BAICHUAN_TYPE BAICHUAN_PATTERN <<< "$(normalizeModelPattern "$BAICHUAN_MODELS")"
177+
initializeLlmProviderConfig baichuan baichuan BAICHUAN api.baichuan-ai.com "443" "https" "" "$BAICHUAN_TYPE" "$BAICHUAN_PATTERN"
106178

107-
local BAIDU_MODELS="${BAIDU_MODELS:-ERNIE-}"
108-
initializeLlmProviderConfig baidu baidu BAIDU qianfan.baidubce.com "443" "https" "" "PRE" "$BAIDU_MODELS"
179+
local BAIDU_MODELS="${BAIDU_MODELS:-ERNIE-*}"
180+
IFS='|' read -r BAIDU_TYPE BAIDU_PATTERN <<< "$(normalizeModelPattern "$BAIDU_MODELS")"
181+
initializeLlmProviderConfig baidu baidu BAIDU qianfan.baidubce.com "443" "https" "" "$BAIDU_TYPE" "$BAIDU_PATTERN"
109182

110183
if [ -z "$CLAUDE_VERSION" ]; then
111184
CLAUDE_VERSION="2023-06-01"
112185
fi
113186
EXTRA_CONFIGS=(
114187
"claudeVersion=\"$CLAUDE_VERSION\""
115188
)
116-
local CLAUDE_MODELS="${CLAUDE_MODELS:-claude-}"
117-
initializeLlmProviderConfig claude claude CLAUDE api.anthropic.com "443" "https" "" "PRE" "$CLAUDE_MODELS" "${EXTRA_CONFIGS[@]}"
189+
local CLAUDE_MODELS="${CLAUDE_MODELS:-claude-*}"
190+
IFS='|' read -r CLAUDE_TYPE CLAUDE_PATTERN <<< "$(normalizeModelPattern "$CLAUDE_MODELS")"
191+
initializeLlmProviderConfig claude claude CLAUDE api.anthropic.com "443" "https" "" "$CLAUDE_TYPE" "$CLAUDE_PATTERN" "${EXTRA_CONFIGS[@]}"
118192

119193
# Cloudflare Workers AI
120194
if [ -n "$CLOUDFLARE_CONFIGURED" ]; then
121195
EXTRA_CONFIGS=()
122196
if [ -n "$CLOUDFLARE_ACCOUNT_ID" ]; then
123197
EXTRA_CONFIGS+=("accountId=\"$CLOUDFLARE_ACCOUNT_ID\"")
124198
fi
125-
local CLOUDFLARE_MODELS="${CLOUDFLARE_MODELS:-.*}"
126-
initializeLlmProviderConfig cloudflare cloudflare CLOUDFLARE api.cloudflare.com "443" "https" "" "REGULAR" "$CLOUDFLARE_MODELS" "${EXTRA_CONFIGS[@]}"
199+
local CLOUDFLARE_MODELS="${CLOUDFLARE_MODELS:-*}"
200+
IFS='|' read -r CLOUDFLARE_TYPE CLOUDFLARE_PATTERN <<< "$(normalizeModelPattern "$CLOUDFLARE_MODELS")"
201+
initializeLlmProviderConfig cloudflare cloudflare CLOUDFLARE api.cloudflare.com "443" "https" "" "$CLOUDFLARE_TYPE" "$CLOUDFLARE_PATTERN" "${EXTRA_CONFIGS[@]}"
127202
fi
128203

129-
local COHERE_MODELS="${COHERE_MODELS:-command|command-.*}"
130-
initializeLlmProviderConfig cohere cohere COHERE api.cohere.com "443" "https" "" "REGULAR" "$COHERE_MODELS"
204+
local COHERE_MODELS="${COHERE_MODELS:-command*}"
205+
IFS='|' read -r COHERE_TYPE COHERE_PATTERN <<< "$(normalizeModelPattern "$COHERE_MODELS")"
206+
initializeLlmProviderConfig cohere cohere COHERE api.cohere.com "443" "https" "" "$COHERE_TYPE" "$COHERE_PATTERN"
131207

132208
# DeepL - translation service
133209
if [ -n "$DEEPL_CONFIGURED" ]; then
134210
EXTRA_CONFIGS=()
135211
if [ -n "$DEEPL_TARGET_LANG" ]; then
136212
EXTRA_CONFIGS+=("targetLang=\"$DEEPL_TARGET_LANG\"")
137213
fi
138-
local DEEPL_MODELS="${DEEPL_MODELS:-.*}"
139-
initializeLlmProviderConfig deepl deepl DEEPL api.deepl.com "443" "https" "" "REGULAR" "$DEEPL_MODELS" "${EXTRA_CONFIGS[@]}"
214+
local DEEPL_MODELS="${DEEPL_MODELS:-*}"
215+
IFS='|' read -r DEEPL_TYPE DEEPL_PATTERN <<< "$(normalizeModelPattern "$DEEPL_MODELS")"
216+
initializeLlmProviderConfig deepl deepl DEEPL api.deepl.com "443" "https" "" "$DEEPL_TYPE" "$DEEPL_PATTERN" "${EXTRA_CONFIGS[@]}"
140217
fi
141218

142219
# Dify - AI workflow platform
@@ -157,42 +234,50 @@ function initializeLlmProviderConfigs() {
157234
if [ -n "$DIFY_OUTPUT_VARIABLE" ]; then
158235
EXTRA_CONFIGS+=("outputVariable=\"$DIFY_OUTPUT_VARIABLE\"")
159236
fi
160-
local DIFY_MODELS="${DIFY_MODELS:-.*}"
161-
initializeLlmProviderConfig dify dify DIFY "$DIFY_DOMAIN" "443" "https" "" "REGULAR" "$DIFY_MODELS" "${EXTRA_CONFIGS[@]}"
237+
local DIFY_MODELS="${DIFY_MODELS:-*}"
238+
IFS='|' read -r DIFY_TYPE DIFY_PATTERN <<< "$(normalizeModelPattern "$DIFY_MODELS")"
239+
initializeLlmProviderConfig dify dify DIFY "$DIFY_DOMAIN" "443" "https" "" "$DIFY_TYPE" "$DIFY_PATTERN" "${EXTRA_CONFIGS[@]}"
162240
fi
163241

164-
local DOUBAO_MODELS="${DOUBAO_MODELS:-doubao-}"
165-
initializeLlmProviderConfig doubao doubao DOUBAO ark.cn-beijing.volces.com "443" "https" "" "PRE" "$DOUBAO_MODELS"
242+
local DOUBAO_MODELS="${DOUBAO_MODELS:-doubao-*}"
243+
IFS='|' read -r DOUBAO_TYPE DOUBAO_PATTERN <<< "$(normalizeModelPattern "$DOUBAO_MODELS")"
244+
initializeLlmProviderConfig doubao doubao DOUBAO ark.cn-beijing.volces.com "443" "https" "" "$DOUBAO_TYPE" "$DOUBAO_PATTERN"
166245

167246
# Fireworks AI - fast inference
168247
if [ -n "$FIREWORKS_API_KEY" ]; then
169-
local FIREWORKS_MODELS="${FIREWORKS_MODELS:-.*}"
170-
initializeLlmProviderConfig fireworks fireworks FIREWORKS api.fireworks.ai "443" "https" "" "REGULAR" "$FIREWORKS_MODELS"
248+
local FIREWORKS_MODELS="${FIREWORKS_MODELS:-*}"
249+
IFS='|' read -r FIREWORKS_TYPE FIREWORKS_PATTERN <<< "$(normalizeModelPattern "$FIREWORKS_MODELS")"
250+
initializeLlmProviderConfig fireworks fireworks FIREWORKS api.fireworks.ai "443" "https" "" "$FIREWORKS_TYPE" "$FIREWORKS_PATTERN"
171251
fi
172252

173253
# GitHub Models
174254
if [ -n "$GITHUB_API_KEY" ]; then
175-
local GITHUB_MODELS="${GITHUB_MODELS:-.*}"
176-
initializeLlmProviderConfig github github GITHUB models.inference.ai.azure.com "443" "https" "" "REGULAR" "$GITHUB_MODELS"
255+
local GITHUB_MODELS="${GITHUB_MODELS:-*}"
256+
IFS='|' read -r GITHUB_TYPE GITHUB_PATTERN <<< "$(normalizeModelPattern "$GITHUB_MODELS")"
257+
initializeLlmProviderConfig github github GITHUB models.inference.ai.azure.com "443" "https" "" "$GITHUB_TYPE" "$GITHUB_PATTERN"
177258
fi
178259

179-
local GEMINI_MODELS="${GEMINI_MODELS:-gemini-}"
180-
initializeLlmProviderConfig gemini gemini GEMINI generativelanguage.googleapis.com "443" "https" "" "PRE" "$GEMINI_MODELS"
260+
local GEMINI_MODELS="${GEMINI_MODELS:-gemini-*}"
261+
IFS='|' read -r GEMINI_TYPE GEMINI_PATTERN <<< "$(normalizeModelPattern "$GEMINI_MODELS")"
262+
initializeLlmProviderConfig gemini gemini GEMINI generativelanguage.googleapis.com "443" "https" "" "$GEMINI_TYPE" "$GEMINI_PATTERN"
181263

182264
# Grok - xAI's model
183265
if [ -n "$GROK_API_KEY" ]; then
184-
local GROK_MODELS="${GROK_MODELS:-grok-.*}"
185-
initializeLlmProviderConfig grok grok GROK api.x.ai "443" "https" "" "REGULAR" "$GROK_MODELS"
266+
local GROK_MODELS="${GROK_MODELS:-grok-*}"
267+
IFS='|' read -r GROK_TYPE GROK_PATTERN <<< "$(normalizeModelPattern "$GROK_MODELS")"
268+
initializeLlmProviderConfig grok grok GROK api.x.ai "443" "https" "" "$GROK_TYPE" "$GROK_PATTERN"
186269
fi
187270

188271
# Groq - fast inference
189272
if [ -n "$GROQ_API_KEY" ]; then
190-
local GROQ_MODELS="${GROQ_MODELS:-.*}"
191-
initializeLlmProviderConfig groq groq GROQ api.groq.com "443" "https" "" "REGULAR" "$GROQ_MODELS"
273+
local GROQ_MODELS="${GROQ_MODELS:-*}"
274+
IFS='|' read -r GROQ_TYPE GROQ_PATTERN <<< "$(normalizeModelPattern "$GROQ_MODELS")"
275+
initializeLlmProviderConfig groq groq GROQ api.groq.com "443" "https" "" "$GROQ_TYPE" "$GROQ_PATTERN"
192276
fi
193277

194-
local MISTRAL_MODELS="${MISTRAL_MODELS:-open-mistral-.*|mistral-.*}"
195-
initializeLlmProviderConfig mistral mistral MISTRAL api.mistral.ai "443" "https" "" "REGULAR" "$MISTRAL_MODELS"
278+
local MISTRAL_MODELS="${MISTRAL_MODELS:-mistral-*,open-mistral-*}"
279+
IFS='|' read -r MISTRAL_TYPE MISTRAL_PATTERN <<< "$(normalizeModelPattern "$MISTRAL_MODELS")"
280+
initializeLlmProviderConfig mistral mistral MISTRAL api.mistral.ai "443" "https" "" "$MISTRAL_TYPE" "$MISTRAL_PATTERN"
196281

197282
if [ -z "$OLLAMA_SERVER_HOST" ]; then
198283
OLLAMA_SERVER_HOST="YOUR_OLLAMA_SERVER_HOST"
@@ -202,17 +287,20 @@ function initializeLlmProviderConfigs() {
202287
"ollamaServerHost=\"$OLLAMA_SERVER_HOST\""
203288
"ollamaServerPort=$OLLAMA_SERVER_PORT"
204289
)
205-
local OLLAMA_MODELS="${OLLAMA_MODELS:-codellama.*|llama.*}"
206-
initializeLlmProviderConfig ollama ollama OLLAMA "$OLLAMA_SERVER_HOST" "$OLLAMA_SERVER_PORT" "http" "" "REGULAR" "$OLLAMA_MODELS" "${EXTRA_CONFIGS[@]}"
290+
local OLLAMA_MODELS="${OLLAMA_MODELS:-llama*,codellama*}"
291+
IFS='|' read -r OLLAMA_TYPE OLLAMA_PATTERN <<< "$(normalizeModelPattern "$OLLAMA_MODELS")"
292+
initializeLlmProviderConfig ollama ollama OLLAMA "$OLLAMA_SERVER_HOST" "$OLLAMA_SERVER_PORT" "http" "" "$OLLAMA_TYPE" "$OLLAMA_PATTERN" "${EXTRA_CONFIGS[@]}"
207293

208294
# iFlyTek Spark
209295
if [ -n "$SPARK_CONFIGURED" ]; then
210-
local SPARK_MODELS="${SPARK_MODELS:-.*}"
211-
initializeLlmProviderConfig spark spark SPARK spark-api-open.xf-yun.com "443" "https" "" "REGULAR" "$SPARK_MODELS"
296+
local SPARK_MODELS="${SPARK_MODELS:-*}"
297+
IFS='|' read -r SPARK_TYPE SPARK_PATTERN <<< "$(normalizeModelPattern "$SPARK_MODELS")"
298+
initializeLlmProviderConfig spark spark SPARK spark-api-open.xf-yun.com "443" "https" "" "$SPARK_TYPE" "$SPARK_PATTERN"
212299
fi
213300

214-
local STEPFUN_MODELS="${STEPFUN_MODELS:-step-}"
215-
initializeLlmProviderConfig stepfun stepfun STEPFUN api.stepfun.com "443" "https" "" "PRE" "$STEPFUN_MODELS"
301+
local STEPFUN_MODELS="${STEPFUN_MODELS:-step-*}"
302+
IFS='|' read -r STEPFUN_TYPE STEPFUN_PATTERN <<< "$(normalizeModelPattern "$STEPFUN_MODELS")"
303+
initializeLlmProviderConfig stepfun stepfun STEPFUN api.stepfun.com "443" "https" "" "$STEPFUN_TYPE" "$STEPFUN_PATTERN"
216304

217305
# Tencent Hunyuan
218306
if [ -n "$HUNYUAN_CONFIGURED" ]; then
@@ -223,14 +311,16 @@ function initializeLlmProviderConfigs() {
223311
if [ -n "$HUNYUAN_AUTH_KEY" ]; then
224312
EXTRA_CONFIGS+=("authKey=\"$HUNYUAN_AUTH_KEY\"")
225313
fi
226-
local HUNYUAN_MODELS="${HUNYUAN_MODELS:-hunyuan-.*}"
227-
initializeLlmProviderConfig hunyuan hunyuan HUNYUAN hunyuan.tencentcloudapi.com "443" "https" "" "REGULAR" "$HUNYUAN_MODELS" "${EXTRA_CONFIGS[@]}"
314+
local HUNYUAN_MODELS="${HUNYUAN_MODELS:-hunyuan-*}"
315+
IFS='|' read -r HUNYUAN_TYPE HUNYUAN_PATTERN <<< "$(normalizeModelPattern "$HUNYUAN_MODELS")"
316+
initializeLlmProviderConfig hunyuan hunyuan HUNYUAN hunyuan.tencentcloudapi.com "443" "https" "" "$HUNYUAN_TYPE" "$HUNYUAN_PATTERN" "${EXTRA_CONFIGS[@]}"
228317
fi
229318

230319
# Together AI - open model hosting
231320
if [ -n "$TOGETHERAI_API_KEY" ]; then
232-
local TOGETHERAI_MODELS="${TOGETHERAI_MODELS:-.*}"
233-
initializeLlmProviderConfig togetherai togetherai TOGETHERAI api.together.xyz "443" "https" "" "REGULAR" "$TOGETHERAI_MODELS"
321+
local TOGETHERAI_MODELS="${TOGETHERAI_MODELS:-*}"
322+
IFS='|' read -r TOGETHERAI_TYPE TOGETHERAI_PATTERN <<< "$(normalizeModelPattern "$TOGETHERAI_MODELS")"
323+
initializeLlmProviderConfig togetherai togetherai TOGETHERAI api.together.xyz "443" "https" "" "$TOGETHERAI_TYPE" "$TOGETHERAI_PATTERN"
234324
fi
235325
}
236326

0 commit comments

Comments
 (0)