Expand description
§ferro-ai
AI structured classification and confirmation primitives for the Ferro framework.
§Classification
Provider-abstracted wrapper for LLM structured JSON output with configurable schema, model selection, confidence threshold, and retry behavior.
ⓘ
use ferro_ai::{Classifier, ClassifierConfig, AnthropicProvider};
use serde::Deserialize;
use std::sync::Arc;
#[derive(Deserialize)]
struct CommandIntent {
action: String,
confidence: f64,
}
let provider = AnthropicProvider::from_env().unwrap();
let classifier = Classifier::<CommandIntent>::new(
Arc::new(provider),
ClassifierConfig::default(),
);§Confirmation
State machine for gating destructive actions behind explicit user confirmation with configurable TTL expiry and event-driven observability.
ⓘ
use ferro_ai::{InMemoryConfirmationStore, ConfirmationStore};
use std::time::Duration;
let store = InMemoryConfirmationStore::new();
let payload = serde_json::json!({"action": "delete_user", "user_id": 42});
store.request_confirmation("confirm-delete-42", payload, Duration::from_secs(60)).await?;
let confirmed = store.confirm("confirm-delete-42").await?;Re-exports§
pub use classifier::anthropic::AnthropicProvider;pub use classifier::provider::ClassificationProvider;pub use classifier::ClassificationResult;pub use classifier::Classifier;pub use classifier::ClassifierConfig;pub use client::AnthropicClient;pub use client::CompletionRequest;pub use client::CompletionResponse;pub use client::LlmClient;pub use client::OllamaClient;pub use client::OpenAiClient;pub use client::TokenStream;pub use client::ToolChoice;pub use client::ToolRequest;pub use client::ToolUseBlock;pub use complete::complete;pub use complete::complete_with;pub use complete::CompleteOptions;pub use config::AiConfig;pub use confirmation::events::ConfirmationExpired;pub use confirmation::store::InMemoryConfirmationStore;pub use confirmation::ConfirmationStore;pub use confirmation::PendingActionInfo;pub use embed::embed;pub use error::Error;pub use schema::for_structured_output;pub use similarity::cosine_similarity;pub use tools::make_handler;pub use tools::ToolDef;pub use tools::ToolError;pub use tools::ToolRegistry;
Modules§
- classifier
- client
- Provider-agnostic LLM client trait and request/response types.
- complete
- Typed completion entry point for structured LLM output.
- config
- Environment-driven LLM client factory.
- confirmation
- embed
- Text embedding entry point for the ferro-ai SDK.
- error
- schema
- JSON Schema normalization for structured-output APIs.
- similarity
- tools
- Tool calling:
ToolDef,ToolError,ToolRegistry, and the bounded dispatch loop.