Fall back without changing your app contract
You route across models by capability, health, latency, price, or application policy. A fallback preserves the typed contract and remains observable.
Unit example (nearest native match)
See the idea in context
set_usage_observer(Some(Arc::new(move |event| {
usage_queue.lock().unwrap().push(event);
})));
client.chat_with_options(request, json!({
"usageContext": {"tenantId": tenant_id, "userId": user_id, "requestId": request_id}
}))?;Run itIn your own project
cargo add axllm
use axllm::{ai, ax};
use serde_json::json;
let llm = ai("openai", json!({"apiKey": std::env::var("OPENAI_API_KEY")?}))?;
let classify = ax("review:string -> sentiment:class \"positive, negative, neutral\"")?;Set OPENAI_APIKEY in your environment before running provider-backed code.
From a clone of the ax repo:
npm run example -- rust src/examples/rust/long-agents/smart_defaults_agent.rsActive practice
Answer 2 in a row to learn this · attempt 1