Skip to main content

Crate ferro_ai

Crate ferro_ai 

Source
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.