feat: add model-availability validation to agentic insight generation (T009-T011)
- Verify custom model exists on at least one configured server before starting agentic loop; returns HTTP 400 with descriptive error if not found - has_tool_calling field auto-serialised in GET /insights/models via existing ModelCapabilities Serialize derive - model_version stored from OllamaClient.primary_model (already correct in T006 implementation) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -55,6 +55,11 @@ The following environment variables configure AI-powered photo insights and dail
|
||||
- Used to fetch conversation data for context in insights
|
||||
- `SMS_API_TOKEN` - Authentication token for SMS API (optional)
|
||||
|
||||
#### Agentic Insight Generation
|
||||
- `AGENTIC_MAX_ITERATIONS` - Maximum tool-call iterations per agentic insight request [default: `10`]
|
||||
- Controls how many times the model can invoke tools before being forced to produce a final answer
|
||||
- Increase for more thorough context gathering; decrease to limit response time
|
||||
|
||||
#### Fallback Behavior
|
||||
- Primary server is tried first with 5-second connection timeout
|
||||
- On failure, automatically falls back to secondary server (if configured)
|
||||
|
||||
@@ -1803,7 +1803,32 @@ Return ONLY the summary, nothing else."#,
|
||||
|
||||
let insight_cx = current_cx.with_span(span);
|
||||
|
||||
// 2. Check tool calling capability
|
||||
// 2a. Verify the model exists on at least one server before checking capabilities
|
||||
if let Some(ref model_name) = custom_model {
|
||||
let available_on_primary = OllamaClient::is_model_available(
|
||||
&ollama_client.primary_url,
|
||||
model_name,
|
||||
)
|
||||
.await
|
||||
.unwrap_or(false);
|
||||
|
||||
let available_on_fallback = if let Some(ref fallback_url) = ollama_client.fallback_url {
|
||||
OllamaClient::is_model_available(fallback_url, model_name)
|
||||
.await
|
||||
.unwrap_or(false)
|
||||
} else {
|
||||
false
|
||||
};
|
||||
|
||||
if !available_on_primary && !available_on_fallback {
|
||||
anyhow::bail!(
|
||||
"model not available: '{}' not found on any configured server",
|
||||
model_name
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// 2b. Check tool calling capability
|
||||
let capabilities = OllamaClient::check_model_capabilities(
|
||||
&ollama_client.primary_url,
|
||||
&ollama_client.primary_model,
|
||||
|
||||
Reference in New Issue
Block a user