Skip to main content

simple_agents_core/
lib.rs

1//! Core client API for SimpleAgents.
2//!
3//! This crate provides the unified `SimpleAgentsClient` that integrates
4//! providers, routing, caching, healing, and middleware in one place.
5//!
6//! # Example
7//! ```no_run
8//! use simple_agents_core::{SimpleAgentsClient, SimpleAgentsClientBuilder, RoutingMode};
9//! use simple_agent_type::prelude::*;
10//! # use async_trait::async_trait;
11//! # use std::sync::Arc;
12//! #
13//! # struct MockProvider;
14//! #
15//! # #[async_trait]
16//! # impl Provider for MockProvider {
17//! #     fn name(&self) -> &str { "mock" }
18//! #     fn transform_request(&self, _req: &CompletionRequest) -> Result<ProviderRequest> {
19//! #         Ok(ProviderRequest::new("http://example.com"))
20//! #     }
21//! #     async fn execute(&self, _req: ProviderRequest) -> Result<ProviderResponse> {
22//! #         Ok(ProviderResponse::new(200, serde_json::json!({"ok": true})))
23//! #     }
24//! #     fn transform_response(&self, _resp: ProviderResponse) -> Result<CompletionResponse> {
25//! #         Ok(CompletionResponse {
26//! #             id: "resp_1".to_string(),
27//! #             model: "test".to_string(),
28//! #             choices: vec![CompletionChoice {
29//! #                 index: 0,
30//! #                 message: Message::assistant("ok"),
31//! #                 finish_reason: FinishReason::Stop,
32//! #                 logprobs: None,
33//! #             }],
34//! #             usage: Usage::new(1, 1),
35//! #             created: None,
36//! #             provider: Some("mock".to_string()),
37//! #             healing_metadata: None,
38//! #         })
39//! #     }
40//! # }
41//! #
42//! # async fn example() -> Result<()> {
43//! let client = SimpleAgentsClientBuilder::new()
44//!     .with_provider(Arc::new(MockProvider))
45//!     .with_routing_mode(RoutingMode::RoundRobin)
46//!     .build()?;
47//!
48//! let request = CompletionRequest::builder()
49//!     .model("gpt-4")
50//!     .message(Message::user("Hello!"))
51//!     .build()?;
52//!
53//! let response = client.complete(&request).await?;
54//! println!("{}", response.content().unwrap_or_default());
55//! # Ok(())
56//! # }
57//! ```
58
59#![deny(missing_docs)]
60#![deny(unsafe_code)]
61
62mod client;
63mod healing;
64mod middleware;
65mod routing;
66
67pub use client::{SimpleAgentsClient, SimpleAgentsClientBuilder};
68pub use healing::{HealedJsonResponse, HealedSchemaResponse, HealingSettings};
69pub use middleware::Middleware;
70pub use routing::RoutingMode;
71
72// Re-export commonly used types.
73pub use simple_agent_type::prelude;