diff --git a/network-poc/native-node/src/inference.rs b/network-poc/native-node/src/inference.rs index 6275141..8df0381 100644 --- a/network-poc/native-node/src/inference.rs +++ b/network-poc/native-node/src/inference.rs @@ -8,17 +8,47 @@ pub struct LlmEngine { } impl LlmEngine { - pub fn load() -> Result { - let ollama_url = std::env::var("OLLAMA_URL").unwrap_or_else(|_| "http://localhost:11434".to_string()); + pub async fn load() -> Result { let model = std::env::var("OLLAMA_MODEL").unwrap_or_else(|_| "qwen2.5-coder:7b".to_string()); - tracing::info!("Ollama backend: {} | malli: {}", ollama_url, model); - let client = reqwest::Client::builder() .timeout(std::time::Duration::from_secs(600)) + .connect_timeout(std::time::Duration::from_secs(3)) .build() .map_err(|e| format!("HTTP client: {}", e))?; + // Jos OLLAMA_URL on asetettu, käytetään sitä suoraan + let ollama_url = if let Ok(url) = std::env::var("OLLAMA_URL") { + tracing::info!("Ollama backend (env): {}", url); + url + } else { + // Haistellaan Ollamaa tunnetuista osoitteista + let candidates = [ + "http://localhost:11434", + "http://127.0.0.1:11434", + "http://ollama:11434", + "http://host.docker.internal:11434", + ]; + let mut found = None; + for url in &candidates { + let probe = reqwest::Client::builder() + .connect_timeout(std::time::Duration::from_secs(2)) + .build().unwrap_or(client.clone()); + if let Ok(resp) = probe.get(format!("{}/api/version", url)).send().await { + if resp.status().is_success() { + tracing::info!("Ollama löytyi osoitteesta: {}", url); + found = Some(url.to_string()); + break; + } + } + } + found.unwrap_or_else(|| { + tracing::warn!("Ollamaa ei löytynyt — käytetään oletusta http://localhost:11434"); + "http://localhost:11434".to_string() + }) + }; + + tracing::info!("Ollama backend: {} | malli: {}", ollama_url, model); Ok(LlmEngine { ollama_url, model: RefCell::new(model), client }) } diff --git a/network-poc/native-node/src/main.rs b/network-poc/native-node/src/main.rs index 2fe768b..98ded24 100644 --- a/network-poc/native-node/src/main.rs +++ b/network-poc/native-node/src/main.rs @@ -287,7 +287,7 @@ async fn main() { // Ollama-backend tracing::info!("Alustetaan Ollama-yhteyttä..."); - let llm = match inference::LlmEngine::load() { + let llm = match inference::LlmEngine::load().await { Ok(engine) => { // Varmistetaan malli (ollama pull) — odotetaan kunnes valmis match engine.ensure_model().await {