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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
//! You can import everything directly from the crate:
//! ```rust
//! use reagent_rs::{Agent, AgentBuilder, Flow, Tool, Message};
//! ```
//! Or pull in the essentials:
//! ```rust
//! use reagent_rs::prelude::*;
//! ```
//!
//! Create an [`Agent`] using [`AgentBuilder`] :
//!
//! ```
//! use std::error::Error;
//! use reagent_rs::{init_default_tracing, AgentBuilder};
//! use schemars::{schema_for, JsonSchema};
//! use serde::Deserialize;
//!
//! #[derive(Debug, Deserialize, JsonSchema)]
//! struct MyWeatherOuput {
//! _windy: bool,
//! _temperature: i32,
//! _description: String
//! }
//!
//! #[tokio::main]
//! async fn main() -> Result<(), Box<dyn Error>> {
//! init_default_tracing();
//!
//! let mut agent = AgentBuilder::default()
//! .set_model("qwen3:0.6b")
//! .set_system_prompt("You make up weather info in JSON")
//! .set_response_format(serde_json::to_string_pretty(&schema_for!(MyWeatherOuput))?)
//! .set_temperature(0.6)
//! .set_top_k(20)
//! .set_stream(true)
//! .build()
//! .await?;
//!
//! let resp: MyWeatherOuput = agent
//! .invoke_flow_structured_output("What is the current weather in Koper?")
//! .await?;
//! println!("{resp:#?}");
//!
//! Ok(())
//! }
//! ```
//!
//!
//! Reagent talks to Ollama by default. It also supports OpenRouter.
//! To use OpenRouter, set the provider to `Provider::OpenRouter` and supply your API key.
//!
//! ```rust
//!
//! use reagent_rs::{AgentBuilder, Provider};
//!
//! async {
//! let agent = AgentBuilder::default()
//! .set_provider(Provider::OpenRouter)
//! .set_api_key("your_openrouter_key")
//! .set_model("meta-llama/llama-3.1-8b-instruct:free")
//! .build()
//! .await;
//! };
//! ```
pub use crate*;
pub use crate*;
pub use crate*;
pub use crate*;
pub use crate*;
pub use crate*;
pub use crate;
pub use crate;
pub use crate;
pub use crateMcpServerType;
pub use crateMcpIntegrationError;
pub use crateinit_default_tracing;
// Invocation helpers at top level for convenience
// -------------------------------------
// Small prelude for common imports
// -------------------------------------
/// Commonly used items for building and running agents.