diff --git a/lang/el-compiler/runtime/el_runtime.c b/lang/el-compiler/runtime/el_runtime.c index f544846..7d47e17 100644 --- a/lang/el-compiler/runtime/el_runtime.c +++ b/lang/el-compiler/runtime/el_runtime.c @@ -8473,7 +8473,7 @@ static el_val_t llm_provider_request(const char* url, const char* key, } } -static el_val_t llm_chain_call(const char* system_str, const char* user_str) { +static el_val_t llm_chain_call(const char* model_pref, const char* system_str, const char* user_str) { char url_key[64], key_key[64], fmt_key[64], model_key[64]; for (int i = 0; i < LLM_MAX_PROVIDERS; i++) { snprintf(url_key, sizeof(url_key), "NEURON_LLM_%d_URL", i); @@ -8486,6 +8486,7 @@ static el_val_t llm_chain_call(const char* system_str, const char* user_str) { const char* fmt_s = getenv(fmt_key); int fmt = (fmt_s && strcmp(fmt_s, "anthropic") == 0) ? 1 : 0; const char* model = getenv(model_key); + if (!model || !*model) model = model_pref; /* fall back to the caller-requested model */ fprintf(stderr, "[llm] trying provider %d (%s)\n", i, url); el_val_t result = llm_provider_request(url, key, fmt, model, system_str, user_str); const char* t = EL_CSTR(result); @@ -8496,7 +8497,7 @@ static el_val_t llm_chain_call(const char* system_str, const char* user_str) { const char* api_key = getenv("ANTHROPIC_API_KEY"); if (!api_key || !*api_key) return http_error_json("no LLM providers configured"); fprintf(stderr, "[llm] using legacy ANTHROPIC_API_KEY fallback\n"); - return llm_provider_request(LLM_API_URL, api_key, 1, NULL, system_str, user_str); + return llm_provider_request(LLM_API_URL, api_key, 1, model_pref, system_str, user_str); } /* Legacy llm_request — kept for backward compat with agentic loop internals */ @@ -8560,14 +8561,16 @@ static el_val_t llm_extract_text(el_val_t resp_val) { } el_val_t llm_call(el_val_t model, el_val_t prompt) { + const char* m = EL_CSTR(model); const char* u = EL_CSTR(prompt); if (!u) u = ""; - return llm_chain_call(NULL, u); + return llm_chain_call(m, NULL, u); } el_val_t llm_call_system(el_val_t model, el_val_t system_prompt, el_val_t user_prompt) { + const char* m = EL_CSTR(model); const char* s = EL_CSTR(system_prompt); if (!s) s = ""; const char* u = EL_CSTR(user_prompt); if (!u) u = ""; - return llm_chain_call(s, u); + return llm_chain_call(m, s, u); } /* ── Tool registry for llm_call_agentic ─────────────────────────────────── */