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