Skip to main content

Crate rustic_ai

Crate rustic_ai 

Source
Expand description

§RusticAI

A Rust-native agent framework with tool calling, streaming, and multi-provider support for OpenAI, Anthropic, Gemini, and Grok.

§Quick Start

use rustic_ai::{Agent, RunInput, UsageLimits, UserContent, infer_model, infer_provider};

let model = infer_model("openai:gpt-4o-mini", infer_provider)?;
let agent = Agent::new(model)
    .system_prompt("You are a helpful assistant.");

let input = RunInput::new(
    vec![UserContent::Text("Hello!".to_string())],
    vec![],
    (),
    UsageLimits::default(),
);

let result = agent.run(input).await?;
println!("{}", result.output);

Type-state builder:

use rustic_ai::{RunInput, UsageLimits};
let input = RunInput::builder(())
    .user_text("Hello!")
    .usage_limits(UsageLimits::default())
    .build();

Typed structured output:

use rustic_ai::{Agent, RunInput, UsageLimits, UserContent, infer_model, infer_provider};
use schemars::JsonSchema;
use serde::Deserialize;
#[derive(Deserialize, JsonSchema)]
struct Answer {
    answer: String,
}
let model = infer_model("openai:gpt-4o-mini", infer_provider)?;
let agent = Agent::new(model).output_schema_for::<Answer>();
let input = RunInput::new(
    vec![UserContent::Text("Respond with {\"answer\": \"ok\"}".to_string())],
    vec![],
    (),
    UsageLimits::default(),
);
let _ = agent.run(input).await?;

§Features

  • Agent orchestration with tool calling, usage limits, and message history
  • Multi-provider support for OpenAI, Gemini, Anthropic, and Grok
  • Streaming with structured events
  • Structured output validation via JSON schema
  • Deferred tools for approval flows
  • MCP toolsets for remote tool integration
  • Instrumentation hooks with tracing/OpenTelemetry support

§Optional Features

  • telemetry-otel - OpenTelemetry/OTLP exporter support
  • telemetry-datadog - Datadog exporter support

Re-exports§

pub use agent::Agent;
pub use agent::AgentEventStream;
pub use agent::AgentRunResult;
pub use agent::AgentRunState;
pub use agent::AgentStreamEvent;
pub use agent::DeferredToolCall;
pub use agent::RunInput;
pub use agent::RunInputBuilder;
pub use error::AgentError;
pub use failover::FailoverResult;
pub use failover::classify_error_kind;
pub use failover::run_with_config;
pub use failover::run_with_config_and_classifier;
pub use failover::run_with_failover;
pub use failover::run_with_failover_with_classifier;
pub use failover::run_with_utility_failover;
pub use failover::run_with_utility_failover_with_classifier;
pub use instrumentation::Instrumenter;
pub use instrumentation::NoopInstrumenter;
pub use instrumentation::TracingInstrumenter;
pub use messages::AudioUrl;
pub use messages::BinaryContent;
pub use messages::DocumentUrl;
pub use messages::ImageUrl;
pub use messages::ModelMessage;
pub use messages::ModelRequest;
pub use messages::ModelRequestPart;
pub use messages::ModelResponse;
pub use messages::ModelResponsePart;
pub use messages::ProviderItemPart;
pub use messages::RetryPromptPart;
pub use messages::SystemPromptPart;
pub use messages::TextPart;
pub use messages::ToolCallPart;
pub use messages::ToolReturnPart;
pub use messages::UserContent;
pub use messages::UserPromptPart;
pub use messages::VideoUrl;
pub use model::Model;
pub use model::ModelError;
pub use model::ModelRequestParameters;
pub use model::ModelSettings;
pub use model::ModelStream;
pub use model::OutputMode;
pub use model::StreamChunk;
pub use model_config::CircuitBreakerConfig;
pub use model_config::InMemoryResolver;
pub use model_config::ModelConfigEntry;
pub use model_config::ModelConfigResolver;
pub use model_config::ResolvedModelConfig;
pub use providers::Provider;
pub use providers::ProviderError;
pub use providers::infer_model;
pub use providers::infer_provider;
pub use realtime::grok::GrokClient as GrokRealtimeClient;
pub use realtime::grok::GrokSender as GrokRealtimeSender;
pub use realtime::grok::ServerEvent as GrokRealtimeEvent;
pub use realtime::grok::SessionConfig as GrokSessionConfig;
pub use tools::ToolError;
pub use tools::FunctionTool;
pub use tools::RunContext;
pub use tools::Tool;
pub use tools::ToolDefinition;
pub use tools::ToolKind;
pub use tools::Toolset;
pub use usage::RequestUsage;
pub use usage::RunUsage;
pub use usage::UsageError;
pub use usage::UsageLimits;

Modules§

agent
error
failover
instrumentation
mcp
messages
model
model_config
providers
realtime
tools
usage