@@ -105,31 +105,21 @@ function initializeLlmProviderConfigs() {
105105 local EXTRA_CONFIGS=()
106106
107107 # Top commonly used providers (defaults set in get-ai-gateway.sh)
108- local DASHSCOPE_MODELS=" ${DASHSCOPE_MODELS} "
109- IFS=' |' read -r DASHSCOPE_TYPE DASHSCOPE_PATTERN <<< " $(normalizeModelPattern " $DASHSCOPE_MODELS " )"
110- initializeLlmProviderConfig aliyun qwen DASHSCOPE dashscope.aliyuncs.com " 443" " https" " " " $DASHSCOPE_TYPE " " $DASHSCOPE_PATTERN "
108+ initializeLlmProviderConfig aliyun qwen DASHSCOPE dashscope.aliyuncs.com " 443" " https" " " " $DASHSCOPE_MODELS "
111109
112- local DEEPSEEK_MODELS=" ${DEEPSEEK_MODELS} "
113- IFS=' |' read -r DEEPSEEK_TYPE DEEPSEEK_PATTERN <<< " $(normalizeModelPattern " $DEEPSEEK_MODELS " )"
114- initializeLlmProviderConfig deepseek deepseek DEEPSEEK api.deepseek.com " 443" " https" " " " $DEEPSEEK_TYPE " " $DEEPSEEK_PATTERN "
110+ initializeLlmProviderConfig deepseek deepseek DEEPSEEK api.deepseek.com " 443" " https" " " " $DEEPSEEK_MODELS "
115111
116- local MOONSHOT_MODELS=" ${MOONSHOT_MODELS} "
117- IFS=' |' read -r MOONSHOT_TYPE MOONSHOT_PATTERN <<< " $(normalizeModelPattern " $MOONSHOT_MODELS " )"
118- initializeLlmProviderConfig moonshot moonshot MOONSHOT api.moonshot.cn " 443" " https" " " " $MOONSHOT_TYPE " " $MOONSHOT_PATTERN "
112+ initializeLlmProviderConfig moonshot moonshot MOONSHOT api.moonshot.cn " 443" " https" " " " $MOONSHOT_MODELS "
119113
120- local ZHIPUAI_MODELS=" ${ZHIPUAI_MODELS} "
121- IFS=' |' read -r ZHIPUAI_TYPE ZHIPUAI_PATTERN <<< " $(normalizeModelPattern " $ZHIPUAI_MODELS " )"
122114 parseExtraConfigs " ZHIPUAI_EXTRA_CONFIGS"
123115 local ZHIPUAI_HOST=$( getExtraConfigValue " zhipuDomain" " open.bigmodel.cn" )
124- initializeLlmProviderConfig zhipuai zhipuai ZHIPUAI " $ZHIPUAI_HOST " " 443" " https" " " " $ZHIPUAI_TYPE " " $ZHIPUAI_PATTERN " " ${EXTRA_CONFIGS[@]} "
116+ initializeLlmProviderConfig zhipuai zhipuai ZHIPUAI " $ZHIPUAI_HOST " " 443" " https" " " " $ZHIPUAI_MODELS " " ${EXTRA_CONFIGS[@]} "
125117
126118 parseExtraConfigs " MINIMAX_EXTRA_CONFIGS"
127119 if [ ${# EXTRA_CONFIGS[@]} -eq 0 ] && [ -n " $MINIMAX_GROUP_ID " ]; then
128120 EXTRA_CONFIGS=(" minimaxGroupId=\" $MINIMAX_GROUP_ID \" " )
129121 fi
130- local MINIMAX_MODELS=" ${MINIMAX_MODELS} "
131- IFS=' |' read -r MINIMAX_TYPE MINIMAX_PATTERN <<< " $(normalizeModelPattern " $MINIMAX_MODELS " )"
132- initializeLlmProviderConfig minimax minimax MINIMAX api.minimax.chat " 443" " https" " " " $MINIMAX_TYPE " " $MINIMAX_PATTERN " " ${EXTRA_CONFIGS[@]} "
122+ initializeLlmProviderConfig minimax minimax MINIMAX api.minimax.chat " 443" " https" " " " $MINIMAX_MODELS " " ${EXTRA_CONFIGS[@]} "
133123
134124 # Azure OpenAI
135125 if [ -z " $OPENAI_API_KEY " ]; then
@@ -144,9 +134,7 @@ function initializeLlmProviderConfigs() {
144134 fi
145135 extractHostFromUrl " $AZURE_SERVICE_URL_VAL "
146136 local AZURE_SERVICE_DOMAIN=" $HOST "
147- local AZURE_MODELS=" ${AZURE_MODELS} "
148- IFS=' |' read -r AZURE_TYPE AZURE_PATTERN <<< " $(normalizeModelPattern " $AZURE_MODELS " )"
149- initializeLlmProviderConfig azure azure AZURE " $AZURE_SERVICE_DOMAIN " " 443" " https" " " " $AZURE_TYPE " " $AZURE_PATTERN " " ${EXTRA_CONFIGS[@]} "
137+ initializeLlmProviderConfig azure azure AZURE " $AZURE_SERVICE_DOMAIN " " 443" " https" " " " $AZURE_MODELS " " ${EXTRA_CONFIGS[@]} "
150138 fi
151139
152140 # AWS Bedrock - requires region configuration
@@ -163,9 +151,7 @@ function initializeLlmProviderConfigs() {
163151 fi
164152 fi
165153 local BEDROCK_REGION_VAL=$( getExtraConfigValue " awsRegion" " ${BEDROCK_REGION:- us-east-1} " )
166- local BEDROCK_MODELS=" ${BEDROCK_MODELS} "
167- IFS=' |' read -r BEDROCK_TYPE BEDROCK_PATTERN <<< " $(normalizeModelPattern " $BEDROCK_MODELS " )"
168- initializeLlmProviderConfig bedrock bedrock BEDROCK bedrock-runtime.${BEDROCK_REGION_VAL} .amazonaws.com " 443" " https" " " " $BEDROCK_TYPE " " $BEDROCK_PATTERN " " ${EXTRA_CONFIGS[@]} "
154+ initializeLlmProviderConfig bedrock bedrock BEDROCK bedrock-runtime.${BEDROCK_REGION_VAL} .amazonaws.com " 443" " https" " " " $BEDROCK_MODELS " " ${EXTRA_CONFIGS[@]} "
169155 fi
170156
171157 # Google Vertex AI - requires project and region configuration
@@ -187,41 +173,27 @@ function initializeLlmProviderConfigs() {
187173 fi
188174 fi
189175 local VERTEX_REGION_VAL=$( getExtraConfigValue " vertexRegion" " ${VERTEX_REGION:- us-central1} " )
190- local VERTEX_MODELS=" ${VERTEX_MODELS} "
191- IFS=' |' read -r VERTEX_TYPE VERTEX_PATTERN <<< " $(normalizeModelPattern " $VERTEX_MODELS " )"
192- initializeLlmProviderConfig vertex vertex VERTEX ${VERTEX_REGION_VAL} -aiplatform.googleapis.com " 443" " https" " " " $VERTEX_TYPE " " $VERTEX_PATTERN " " ${EXTRA_CONFIGS[@]} "
176+ initializeLlmProviderConfig vertex vertex VERTEX ${VERTEX_REGION_VAL} -aiplatform.googleapis.com " 443" " https" " " " $VERTEX_MODELS " " ${EXTRA_CONFIGS[@]} "
193177 fi
194178
195179 # OpenAI (if Azure is not configured)
196180 if [ -z " $AZURE_API_KEY " ]; then
197- local OPENAI_MODELS=" ${OPENAI_MODELS} "
198- IFS=' |' read -r OPENAI_TYPE OPENAI_PATTERN <<< " $(normalizeModelPattern " $OPENAI_MODELS " )"
199- initializeLlmProviderConfig openai openai OPENAI api.openai.com " 443" " https" " " " $OPENAI_TYPE " " $OPENAI_PATTERN "
181+ initializeLlmProviderConfig openai openai OPENAI api.openai.com " 443" " https" " " " $OPENAI_MODELS "
200182 fi
201183
202184 # OpenRouter - multi-provider router, supports custom models
203185 if [ -n " $OPENROUTER_API_KEY " ]; then
204- local OPENROUTER_MODELS=" ${OPENROUTER_MODELS} "
205- IFS=' |' read -r OPENROUTER_TYPE OPENROUTER_PATTERN <<< " $(normalizeModelPattern " $OPENROUTER_MODELS " )"
206- initializeLlmProviderConfig openrouter openrouter OPENROUTER openrouter.ai " 443" " https" " " " $OPENROUTER_TYPE " " $OPENROUTER_PATTERN "
186+ initializeLlmProviderConfig openrouter openrouter OPENROUTER openrouter.ai " 443" " https" " " " $OPENROUTER_MODELS "
207187 fi
208188
209189 # Other providers (alphabetically ordered)
210- local YI_MODELS=" ${YI_MODELS} "
211- IFS=' |' read -r YI_TYPE YI_PATTERN <<< " $(normalizeModelPattern " $YI_MODELS " )"
212- initializeLlmProviderConfig yi yi YI api.lingyiwanwu.com " 443" " https" " " " $YI_TYPE " " $YI_PATTERN "
190+ initializeLlmProviderConfig yi yi YI api.lingyiwanwu.com " 443" " https" " " " $YI_MODELS "
213191
214- local AI360_MODELS=" ${AI360_MODELS} "
215- IFS=' |' read -r AI360_TYPE AI360_PATTERN <<< " $(normalizeModelPattern " $AI360_MODELS " )"
216- initializeLlmProviderConfig ai360 ai360 AI360 api.360.cn " 443" " https" " " " $AI360_TYPE " " $AI360_PATTERN "
192+ initializeLlmProviderConfig ai360 ai360 AI360 api.360.cn " 443" " https" " " " $AI360_MODELS "
217193
218- local BAICHUAN_MODELS=" ${BAICHUAN_MODELS} "
219- IFS=' |' read -r BAICHUAN_TYPE BAICHUAN_PATTERN <<< " $(normalizeModelPattern " $BAICHUAN_MODELS " )"
220- initializeLlmProviderConfig baichuan baichuan BAICHUAN api.baichuan-ai.com " 443" " https" " " " $BAICHUAN_TYPE " " $BAICHUAN_PATTERN "
194+ initializeLlmProviderConfig baichuan baichuan BAICHUAN api.baichuan-ai.com " 443" " https" " " " $BAICHUAN_MODELS "
221195
222- local BAIDU_MODELS=" ${BAIDU_MODELS} "
223- IFS=' |' read -r BAIDU_TYPE BAIDU_PATTERN <<< " $(normalizeModelPattern " $BAIDU_MODELS " )"
224- initializeLlmProviderConfig baidu baidu BAIDU qianfan.baidubce.com " 443" " https" " " " $BAIDU_TYPE " " $BAIDU_PATTERN "
196+ initializeLlmProviderConfig baidu baidu BAIDU qianfan.baidubce.com " 443" " https" " " " $BAIDU_MODELS "
225197
226198 parseExtraConfigs " CLAUDE_EXTRA_CONFIGS"
227199 if [ ${# EXTRA_CONFIGS[@]} -eq 0 ]; then
@@ -234,34 +206,26 @@ function initializeLlmProviderConfigs() {
234206 EXTRA_CONFIGS+=(" claudeCodeMode=true" )
235207 fi
236208 fi
237- local CLAUDE_MODELS=" ${CLAUDE_MODELS} "
238- IFS=' |' read -r CLAUDE_TYPE CLAUDE_PATTERN <<< " $(normalizeModelPattern " $CLAUDE_MODELS " )"
239- initializeLlmProviderConfig claude claude CLAUDE api.anthropic.com " 443" " https" " " " $CLAUDE_TYPE " " $CLAUDE_PATTERN " " ${EXTRA_CONFIGS[@]} "
209+ initializeLlmProviderConfig claude claude CLAUDE api.anthropic.com " 443" " https" " " " $CLAUDE_MODELS " " ${EXTRA_CONFIGS[@]} "
240210
241211 # Cloudflare Workers AI
242212 if [ -n " $CLOUDFLARE_CONFIGURED " ]; then
243213 parseExtraConfigs " CLOUDFLARE_EXTRA_CONFIGS"
244214 if [ ${# EXTRA_CONFIGS[@]} -eq 0 ] && [ -n " $CLOUDFLARE_ACCOUNT_ID " ]; then
245215 EXTRA_CONFIGS=(" cloudflareAccountId=\" $CLOUDFLARE_ACCOUNT_ID \" " )
246216 fi
247- local CLOUDFLARE_MODELS=" ${CLOUDFLARE_MODELS} "
248- IFS=' |' read -r CLOUDFLARE_TYPE CLOUDFLARE_PATTERN <<< " $(normalizeModelPattern " $CLOUDFLARE_MODELS " )"
249- initializeLlmProviderConfig cloudflare cloudflare CLOUDFLARE api.cloudflare.com " 443" " https" " " " $CLOUDFLARE_TYPE " " $CLOUDFLARE_PATTERN " " ${EXTRA_CONFIGS[@]} "
217+ initializeLlmProviderConfig cloudflare cloudflare CLOUDFLARE api.cloudflare.com " 443" " https" " " " $CLOUDFLARE_MODELS " " ${EXTRA_CONFIGS[@]} "
250218 fi
251219
252- local COHERE_MODELS=" ${COHERE_MODELS} "
253- IFS=' |' read -r COHERE_TYPE COHERE_PATTERN <<< " $(normalizeModelPattern " $COHERE_MODELS " )"
254- initializeLlmProviderConfig cohere cohere COHERE api.cohere.com " 443" " https" " " " $COHERE_TYPE " " $COHERE_PATTERN "
220+ initializeLlmProviderConfig cohere cohere COHERE api.cohere.com " 443" " https" " " " $COHERE_MODELS "
255221
256222 # DeepL - translation service
257223 if [ -n " $DEEPL_CONFIGURED " ]; then
258224 parseExtraConfigs " DEEPL_EXTRA_CONFIGS"
259225 if [ ${# EXTRA_CONFIGS[@]} -eq 0 ] && [ -n " $DEEPL_TARGET_LANG " ]; then
260226 EXTRA_CONFIGS=(" targetLang=\" $DEEPL_TARGET_LANG \" " )
261227 fi
262- local DEEPL_MODELS=" ${DEEPL_MODELS} "
263- IFS=' |' read -r DEEPL_TYPE DEEPL_PATTERN <<< " $(normalizeModelPattern " $DEEPL_MODELS " )"
264- initializeLlmProviderConfig deepl deepl DEEPL api.deepl.com " 443" " https" " " " $DEEPL_TYPE " " $DEEPL_PATTERN " " ${EXTRA_CONFIGS[@]} "
228+ initializeLlmProviderConfig deepl deepl DEEPL api.deepl.com " 443" " https" " " " $DEEPL_MODELS " " ${EXTRA_CONFIGS[@]} "
265229 fi
266230
267231 # Dify - AI workflow platform
@@ -286,50 +250,34 @@ function initializeLlmProviderConfigs() {
286250 EXTRA_CONFIGS+=(" outputVariable=\" $DIFY_OUTPUT_VARIABLE \" " )
287251 fi
288252 fi
289- local DIFY_MODELS=" ${DIFY_MODELS} "
290- IFS=' |' read -r DIFY_TYPE DIFY_PATTERN <<< " $(normalizeModelPattern " $DIFY_MODELS " )"
291- initializeLlmProviderConfig dify dify DIFY " $DIFY_DOMAIN " " 443" " https" " " " $DIFY_TYPE " " $DIFY_PATTERN " " ${EXTRA_CONFIGS[@]} "
253+ initializeLlmProviderConfig dify dify DIFY " $DIFY_DOMAIN " " 443" " https" " " " $DIFY_MODELS " " ${EXTRA_CONFIGS[@]} "
292254 fi
293255
294- local DOUBAO_MODELS=" ${DOUBAO_MODELS} "
295- IFS=' |' read -r DOUBAO_TYPE DOUBAO_PATTERN <<< " $(normalizeModelPattern " $DOUBAO_MODELS " )"
296- initializeLlmProviderConfig doubao doubao DOUBAO ark.cn-beijing.volces.com " 443" " https" " " " $DOUBAO_TYPE " " $DOUBAO_PATTERN "
256+ initializeLlmProviderConfig doubao doubao DOUBAO ark.cn-beijing.volces.com " 443" " https" " " " $DOUBAO_MODELS "
297257
298258 # Fireworks AI - fast inference
299259 if [ -n " $FIREWORKS_API_KEY " ]; then
300- local FIREWORKS_MODELS=" ${FIREWORKS_MODELS} "
301- IFS=' |' read -r FIREWORKS_TYPE FIREWORKS_PATTERN <<< " $(normalizeModelPattern " $FIREWORKS_MODELS " )"
302- initializeLlmProviderConfig fireworks fireworks FIREWORKS api.fireworks.ai " 443" " https" " " " $FIREWORKS_TYPE " " $FIREWORKS_PATTERN "
260+ initializeLlmProviderConfig fireworks fireworks FIREWORKS api.fireworks.ai " 443" " https" " " " $FIREWORKS_MODELS "
303261 fi
304262
305263 # GitHub Models
306264 if [ -n " $GITHUB_API_KEY " ]; then
307- local GITHUB_MODELS=" ${GITHUB_MODELS} "
308- IFS=' |' read -r GITHUB_TYPE GITHUB_PATTERN <<< " $(normalizeModelPattern " $GITHUB_MODELS " )"
309- initializeLlmProviderConfig github github GITHUB models.inference.ai.azure.com " 443" " https" " " " $GITHUB_TYPE " " $GITHUB_PATTERN "
265+ initializeLlmProviderConfig github github GITHUB models.inference.ai.azure.com " 443" " https" " " " $GITHUB_MODELS "
310266 fi
311267
312- local GEMINI_MODELS=" ${GEMINI_MODELS} "
313- IFS=' |' read -r GEMINI_TYPE GEMINI_PATTERN <<< " $(normalizeModelPattern " $GEMINI_MODELS " )"
314- initializeLlmProviderConfig gemini gemini GEMINI generativelanguage.googleapis.com " 443" " https" " " " $GEMINI_TYPE " " $GEMINI_PATTERN "
268+ initializeLlmProviderConfig gemini gemini GEMINI generativelanguage.googleapis.com " 443" " https" " " " $GEMINI_MODELS "
315269
316270 # Grok - xAI's model
317271 if [ -n " $GROK_API_KEY " ]; then
318- local GROK_MODELS=" ${GROK_MODELS} "
319- IFS=' |' read -r GROK_TYPE GROK_PATTERN <<< " $(normalizeModelPattern " $GROK_MODELS " )"
320- initializeLlmProviderConfig grok grok GROK api.x.ai " 443" " https" " " " $GROK_TYPE " " $GROK_PATTERN "
272+ initializeLlmProviderConfig grok grok GROK api.x.ai " 443" " https" " " " $GROK_MODELS "
321273 fi
322274
323275 # Groq - fast inference
324276 if [ -n " $GROQ_API_KEY " ]; then
325- local GROQ_MODELS=" ${GROQ_MODELS} "
326- IFS=' |' read -r GROQ_TYPE GROQ_PATTERN <<< " $(normalizeModelPattern " $GROQ_MODELS " )"
327- initializeLlmProviderConfig groq groq GROQ api.groq.com " 443" " https" " " " $GROQ_TYPE " " $GROQ_PATTERN "
277+ initializeLlmProviderConfig groq groq GROQ api.groq.com " 443" " https" " " " $GROQ_MODELS "
328278 fi
329279
330- local MISTRAL_MODELS=" ${MISTRAL_MODELS} "
331- IFS=' |' read -r MISTRAL_TYPE MISTRAL_PATTERN <<< " $(normalizeModelPattern " $MISTRAL_MODELS " )"
332- initializeLlmProviderConfig mistral mistral MISTRAL api.mistral.ai " 443" " https" " " " $MISTRAL_TYPE " " $MISTRAL_PATTERN "
280+ initializeLlmProviderConfig mistral mistral MISTRAL api.mistral.ai " 443" " https" " " " $MISTRAL_MODELS "
333281
334282 parseExtraConfigs " OLLAMA_EXTRA_CONFIGS"
335283 local OLLAMA_HOST_VAL=$( getExtraConfigValue " ollamaServerHost" " ${OLLAMA_SERVER_HOST:- YOUR_OLLAMA_SERVER_HOST} " )
@@ -340,20 +288,14 @@ function initializeLlmProviderConfigs() {
340288 " ollamaServerPort=$OLLAMA_PORT_VAL "
341289 )
342290 fi
343- local OLLAMA_MODELS=" ${OLLAMA_MODELS} "
344- IFS=' |' read -r OLLAMA_TYPE OLLAMA_PATTERN <<< " $(normalizeModelPattern " $OLLAMA_MODELS " )"
345- initializeLlmProviderConfig ollama ollama OLLAMA " $OLLAMA_HOST_VAL " " $OLLAMA_PORT_VAL " " http" " " " $OLLAMA_TYPE " " $OLLAMA_PATTERN " " ${EXTRA_CONFIGS[@]} "
291+ initializeLlmProviderConfig ollama ollama OLLAMA " $OLLAMA_HOST_VAL " " $OLLAMA_PORT_VAL " " http" " " " $OLLAMA_MODELS " " ${EXTRA_CONFIGS[@]} "
346292
347293 # iFlyTek Spark
348294 if [ -n " $SPARK_CONFIGURED " ]; then
349- local SPARK_MODELS=" ${SPARK_MODELS} "
350- IFS=' |' read -r SPARK_TYPE SPARK_PATTERN <<< " $(normalizeModelPattern " $SPARK_MODELS " )"
351- initializeLlmProviderConfig spark spark SPARK spark-api-open.xf-yun.com " 443" " https" " " " $SPARK_TYPE " " $SPARK_PATTERN "
295+ initializeLlmProviderConfig spark spark SPARK spark-api-open.xf-yun.com " 443" " https" " " " $SPARK_MODELS "
352296 fi
353297
354- local STEPFUN_MODELS=" ${STEPFUN_MODELS} "
355- IFS=' |' read -r STEPFUN_TYPE STEPFUN_PATTERN <<< " $(normalizeModelPattern " $STEPFUN_MODELS " )"
356- initializeLlmProviderConfig stepfun stepfun STEPFUN api.stepfun.com " 443" " https" " " " $STEPFUN_TYPE " " $STEPFUN_PATTERN "
298+ initializeLlmProviderConfig stepfun stepfun STEPFUN api.stepfun.com " 443" " https" " " " $STEPFUN_MODELS "
357299
358300 # Tencent Hunyuan
359301 if [ -n " $HUNYUAN_CONFIGURED " ]; then
@@ -367,16 +309,12 @@ function initializeLlmProviderConfigs() {
367309 EXTRA_CONFIGS+=(" hunyuanAuthKey=\" $HUNYUAN_AUTH_KEY \" " )
368310 fi
369311 fi
370- local HUNYUAN_MODELS=" ${HUNYUAN_MODELS} "
371- IFS=' |' read -r HUNYUAN_TYPE HUNYUAN_PATTERN <<< " $(normalizeModelPattern " $HUNYUAN_MODELS " )"
372- initializeLlmProviderConfig hunyuan hunyuan HUNYUAN hunyuan.tencentcloudapi.com " 443" " https" " " " $HUNYUAN_TYPE " " $HUNYUAN_PATTERN " " ${EXTRA_CONFIGS[@]} "
312+ initializeLlmProviderConfig hunyuan hunyuan HUNYUAN hunyuan.tencentcloudapi.com " 443" " https" " " " $HUNYUAN_MODELS " " ${EXTRA_CONFIGS[@]} "
373313 fi
374314
375315 # Together AI - open model hosting
376316 if [ -n " $TOGETHERAI_API_KEY " ]; then
377- local TOGETHERAI_MODELS=" ${TOGETHERAI_MODELS} "
378- IFS=' |' read -r TOGETHERAI_TYPE TOGETHERAI_PATTERN <<< " $(normalizeModelPattern " $TOGETHERAI_MODELS " )"
379- initializeLlmProviderConfig togetherai togetherai TOGETHERAI api.together.xyz " 443" " https" " " " $TOGETHERAI_TYPE " " $TOGETHERAI_PATTERN "
317+ initializeLlmProviderConfig togetherai togetherai TOGETHERAI api.together.xyz " 443" " https" " " " $TOGETHERAI_MODELS "
380318 fi
381319}
382320
@@ -395,12 +333,14 @@ function initializeLlmProviderConfig() {
395333 shift
396334 local DEFAULT_API_KEY=" $1 "
397335 shift
398- local MODEL_MATCH_TYPE=" $1 "
399- shift
400- local MODEL_MATCH_VALUE=" $1 "
336+ local MODELS=" $1 "
401337 shift
402338 local EXTRA_CONFIGS=(" $@ " )
403339
340+ local MODEL_MATCH_TYPE
341+ local MODEL_MATCH_VALUE
342+ IFS=' |' read -r MODEL_MATCH_TYPE MODEL_MATCH_VALUE <<< " $(normalizeModelPattern " $MODELS " )"
343+
404344 appendAiRegistry " $NAME " " $DOMAIN " " $PORT " " $PROTOCOL "
405345 appendAiProxyConfigs " $NAME " " $TYPE " " $API_KEY_PREFIX " " $DEFAULT_API_KEY " " ${EXTRA_CONFIGS[@]} "
406346 generateAiIngress " $NAME " " $MODEL_MATCH_TYPE " " $MODEL_MATCH_VALUE "
@@ -644,6 +584,37 @@ function generateAiRoute() {
644584
645585 mkdir -p /data/configmaps
646586
587+ local modelPredicatesJson=" "
588+ if [ " $MODEL_MATCH_TYPE " == " REGULAR" ]; then
589+ # REGULAR: split into multiple predicates
590+ IFS=' |' read -ra patterns <<< " $MODEL_MATCH_VALUE"
591+ local predicates=()
592+ for pattern in " ${patterns[@]} " ; do
593+ if [[ " $pattern " =~ \.\* $ ]]; then
594+ # Ends with .*, use PRE match
595+ local prefixValue=" ${pattern% .* } " # Remove trailing .*
596+ predicates+=(" {\" matchType\" : \" PRE\" , \" matchValue\" : \" $prefixValue \" }" )
597+ else
598+ # Other cases, EXACT match, but use PRE match for simplicity
599+ predicates+=(" {\" matchType\" : \" PRE\" , \" matchValue\" : \" $pattern \" }" )
600+ fi
601+ done
602+ modelPredicatesJson=" ["
603+ local first=1
604+ for pred in " ${predicates[@]} " ; do
605+ if [ $first -eq 1 ]; then
606+ first=0
607+ else
608+ modelPredicatesJson+=" ,"
609+ fi
610+ modelPredicatesJson+=$' \n ' " $pred "
611+ done
612+ modelPredicatesJson+=$' \n ' " ]"
613+ else
614+ # Other cases, single predicate
615+ modelPredicatesJson=" [{\" matchType\" : \" $MODEL_MATCH_TYPE \" , \" matchValue\" : \" $MODEL_MATCH_VALUE \" }]"
616+ fi
617+
647618 cat << EOF >"$CONFIG_MAP_FILE "
648619apiVersion: v1
649620kind: ConfigMap
@@ -663,12 +634,7 @@ data:
663634 "provider": "$ROUTE_NAME "
664635 }
665636 ],
666- "modelPredicates": [
667- {
668- "matchType": "$MODEL_MATCH_TYPE ",
669- "matchValue": "$MODEL_MATCH_VALUE "
670- }
671- ],
637+ "modelPredicates": $modelPredicatesJson ,
672638 "version": "1"
673639 }
674640EOF
0 commit comments