AgentBuilder

Struct AgentBuilder 

Source
pub struct AgentBuilder { /* private fields */ }

Implementations§

Source§

impl AgentBuilder

Source

pub fn new(name: impl Into<String>) -> Self

Source

pub fn config(self, config: Config) -> Self

Examples found in repository?
examples/basic_chat.rs (line 10)
4async fn main() -> helios_engine::Result<()> {
5    // Load configuration
6    let config = Config::from_file("config.toml")?;
7
8    // Create a simple agent
9    let mut agent = Agent::builder("BasicAgent")
10        .config(config)
11        .system_prompt("You are a helpful assistant.")
12        .build()?;
13
14    // Send a message
15    let response = agent.chat("Hello! How are you?").await?;
16    println!("Agent: {}", response);
17
18    // Continue the conversation
19    let response = agent.chat("What can you help me with?").await?;
20    println!("Agent: {}", response);
21
22    Ok(())
23}
More examples
Hide additional examples
examples/custom_tool.rs (line 71)
65async fn main() -> helios_engine::Result<()> {
66    // Load configuration
67    let config = Config::from_file("config.toml")?;
68
69    // Create an agent with custom tool
70    let mut agent = Agent::builder("WeatherAgent")
71        .config(config)
72        .system_prompt("You are a helpful weather assistant. Use the weather tool to answer questions about weather.")
73        .tool(Box::new(WeatherTool))
74        .build()?;
75
76    // Ask about weather
77    let response = agent.chat("What's the weather like in New York?").await?;
78    println!("Agent: {}\n", response);
79
80    let response = agent.chat("How about in London, but in celsius?").await?;
81    println!("Agent: {}\n", response);
82
83    Ok(())
84}
examples/agent_with_tools.rs (line 10)
4async fn main() -> helios_engine::Result<()> {
5    // Load configuration
6    let config = Config::from_file("config.toml")?;
7
8    // Create an agent with tools
9    let mut agent = Agent::builder("ToolAgent")
10        .config(config)
11        .system_prompt("You are a helpful assistant with access to tools. Use them when needed.")
12        .tool(Box::new(CalculatorTool))
13        .tool(Box::new(EchoTool))
14        .max_iterations(5)
15        .build()?;
16
17    println!("Available tools: {:?}\n", agent.tool_registry().list_tools());
18
19    // Test calculator tool
20    let response = agent.chat("What is 25 * 4 + 10?").await?;
21    println!("Agent: {}\n", response);
22
23    // Test echo tool
24    let response = agent.chat("Can you echo this message: 'Hello from Helios!'").await?;
25    println!("Agent: {}\n", response);
26
27    Ok(())
28}
examples/multiple_agents.rs (line 10)
4async fn main() -> helios_engine::Result<()> {
5    // Load configuration
6    let config = Config::from_file("config.toml")?;
7
8    // Create multiple agents with different personalities
9    let mut math_agent = Agent::builder("MathAgent")
10        .config(config.clone())
11        .system_prompt("You are a math expert. You love numbers and equations.")
12        .tool(Box::new(CalculatorTool))
13        .build()?;
14
15    let mut creative_agent = Agent::builder("CreativeAgent")
16        .config(config)
17        .system_prompt("You are a creative writer who loves storytelling and poetry.")
18        .build()?;
19
20    println!("=== Math Agent ===");
21    let response = math_agent.chat("What is the square root of 144?").await?;
22    println!("Math Agent: {}\n", response);
23
24    println!("=== Creative Agent ===");
25    let response = creative_agent.chat("Write a haiku about programming.").await?;
26    println!("Creative Agent: {}\n", response);
27
28    Ok(())
29}
Source

pub fn system_prompt(self, prompt: impl Into<String>) -> Self

Examples found in repository?
examples/basic_chat.rs (line 11)
4async fn main() -> helios_engine::Result<()> {
5    // Load configuration
6    let config = Config::from_file("config.toml")?;
7
8    // Create a simple agent
9    let mut agent = Agent::builder("BasicAgent")
10        .config(config)
11        .system_prompt("You are a helpful assistant.")
12        .build()?;
13
14    // Send a message
15    let response = agent.chat("Hello! How are you?").await?;
16    println!("Agent: {}", response);
17
18    // Continue the conversation
19    let response = agent.chat("What can you help me with?").await?;
20    println!("Agent: {}", response);
21
22    Ok(())
23}
More examples
Hide additional examples
examples/custom_tool.rs (line 72)
65async fn main() -> helios_engine::Result<()> {
66    // Load configuration
67    let config = Config::from_file("config.toml")?;
68
69    // Create an agent with custom tool
70    let mut agent = Agent::builder("WeatherAgent")
71        .config(config)
72        .system_prompt("You are a helpful weather assistant. Use the weather tool to answer questions about weather.")
73        .tool(Box::new(WeatherTool))
74        .build()?;
75
76    // Ask about weather
77    let response = agent.chat("What's the weather like in New York?").await?;
78    println!("Agent: {}\n", response);
79
80    let response = agent.chat("How about in London, but in celsius?").await?;
81    println!("Agent: {}\n", response);
82
83    Ok(())
84}
examples/agent_with_tools.rs (line 11)
4async fn main() -> helios_engine::Result<()> {
5    // Load configuration
6    let config = Config::from_file("config.toml")?;
7
8    // Create an agent with tools
9    let mut agent = Agent::builder("ToolAgent")
10        .config(config)
11        .system_prompt("You are a helpful assistant with access to tools. Use them when needed.")
12        .tool(Box::new(CalculatorTool))
13        .tool(Box::new(EchoTool))
14        .max_iterations(5)
15        .build()?;
16
17    println!("Available tools: {:?}\n", agent.tool_registry().list_tools());
18
19    // Test calculator tool
20    let response = agent.chat("What is 25 * 4 + 10?").await?;
21    println!("Agent: {}\n", response);
22
23    // Test echo tool
24    let response = agent.chat("Can you echo this message: 'Hello from Helios!'").await?;
25    println!("Agent: {}\n", response);
26
27    Ok(())
28}
examples/multiple_agents.rs (line 11)
4async fn main() -> helios_engine::Result<()> {
5    // Load configuration
6    let config = Config::from_file("config.toml")?;
7
8    // Create multiple agents with different personalities
9    let mut math_agent = Agent::builder("MathAgent")
10        .config(config.clone())
11        .system_prompt("You are a math expert. You love numbers and equations.")
12        .tool(Box::new(CalculatorTool))
13        .build()?;
14
15    let mut creative_agent = Agent::builder("CreativeAgent")
16        .config(config)
17        .system_prompt("You are a creative writer who loves storytelling and poetry.")
18        .build()?;
19
20    println!("=== Math Agent ===");
21    let response = math_agent.chat("What is the square root of 144?").await?;
22    println!("Math Agent: {}\n", response);
23
24    println!("=== Creative Agent ===");
25    let response = creative_agent.chat("Write a haiku about programming.").await?;
26    println!("Creative Agent: {}\n", response);
27
28    Ok(())
29}
Source

pub fn tool(self, tool: Box<dyn Tool>) -> Self

Examples found in repository?
examples/custom_tool.rs (line 73)
65async fn main() -> helios_engine::Result<()> {
66    // Load configuration
67    let config = Config::from_file("config.toml")?;
68
69    // Create an agent with custom tool
70    let mut agent = Agent::builder("WeatherAgent")
71        .config(config)
72        .system_prompt("You are a helpful weather assistant. Use the weather tool to answer questions about weather.")
73        .tool(Box::new(WeatherTool))
74        .build()?;
75
76    // Ask about weather
77    let response = agent.chat("What's the weather like in New York?").await?;
78    println!("Agent: {}\n", response);
79
80    let response = agent.chat("How about in London, but in celsius?").await?;
81    println!("Agent: {}\n", response);
82
83    Ok(())
84}
More examples
Hide additional examples
examples/agent_with_tools.rs (line 12)
4async fn main() -> helios_engine::Result<()> {
5    // Load configuration
6    let config = Config::from_file("config.toml")?;
7
8    // Create an agent with tools
9    let mut agent = Agent::builder("ToolAgent")
10        .config(config)
11        .system_prompt("You are a helpful assistant with access to tools. Use them when needed.")
12        .tool(Box::new(CalculatorTool))
13        .tool(Box::new(EchoTool))
14        .max_iterations(5)
15        .build()?;
16
17    println!("Available tools: {:?}\n", agent.tool_registry().list_tools());
18
19    // Test calculator tool
20    let response = agent.chat("What is 25 * 4 + 10?").await?;
21    println!("Agent: {}\n", response);
22
23    // Test echo tool
24    let response = agent.chat("Can you echo this message: 'Hello from Helios!'").await?;
25    println!("Agent: {}\n", response);
26
27    Ok(())
28}
examples/multiple_agents.rs (line 12)
4async fn main() -> helios_engine::Result<()> {
5    // Load configuration
6    let config = Config::from_file("config.toml")?;
7
8    // Create multiple agents with different personalities
9    let mut math_agent = Agent::builder("MathAgent")
10        .config(config.clone())
11        .system_prompt("You are a math expert. You love numbers and equations.")
12        .tool(Box::new(CalculatorTool))
13        .build()?;
14
15    let mut creative_agent = Agent::builder("CreativeAgent")
16        .config(config)
17        .system_prompt("You are a creative writer who loves storytelling and poetry.")
18        .build()?;
19
20    println!("=== Math Agent ===");
21    let response = math_agent.chat("What is the square root of 144?").await?;
22    println!("Math Agent: {}\n", response);
23
24    println!("=== Creative Agent ===");
25    let response = creative_agent.chat("Write a haiku about programming.").await?;
26    println!("Creative Agent: {}\n", response);
27
28    Ok(())
29}
Source

pub fn max_iterations(self, max: usize) -> Self

Examples found in repository?
examples/agent_with_tools.rs (line 14)
4async fn main() -> helios_engine::Result<()> {
5    // Load configuration
6    let config = Config::from_file("config.toml")?;
7
8    // Create an agent with tools
9    let mut agent = Agent::builder("ToolAgent")
10        .config(config)
11        .system_prompt("You are a helpful assistant with access to tools. Use them when needed.")
12        .tool(Box::new(CalculatorTool))
13        .tool(Box::new(EchoTool))
14        .max_iterations(5)
15        .build()?;
16
17    println!("Available tools: {:?}\n", agent.tool_registry().list_tools());
18
19    // Test calculator tool
20    let response = agent.chat("What is 25 * 4 + 10?").await?;
21    println!("Agent: {}\n", response);
22
23    // Test echo tool
24    let response = agent.chat("Can you echo this message: 'Hello from Helios!'").await?;
25    println!("Agent: {}\n", response);
26
27    Ok(())
28}
Source

pub fn build(self) -> Result<Agent>

Examples found in repository?
examples/basic_chat.rs (line 12)
4async fn main() -> helios_engine::Result<()> {
5    // Load configuration
6    let config = Config::from_file("config.toml")?;
7
8    // Create a simple agent
9    let mut agent = Agent::builder("BasicAgent")
10        .config(config)
11        .system_prompt("You are a helpful assistant.")
12        .build()?;
13
14    // Send a message
15    let response = agent.chat("Hello! How are you?").await?;
16    println!("Agent: {}", response);
17
18    // Continue the conversation
19    let response = agent.chat("What can you help me with?").await?;
20    println!("Agent: {}", response);
21
22    Ok(())
23}
More examples
Hide additional examples
examples/custom_tool.rs (line 74)
65async fn main() -> helios_engine::Result<()> {
66    // Load configuration
67    let config = Config::from_file("config.toml")?;
68
69    // Create an agent with custom tool
70    let mut agent = Agent::builder("WeatherAgent")
71        .config(config)
72        .system_prompt("You are a helpful weather assistant. Use the weather tool to answer questions about weather.")
73        .tool(Box::new(WeatherTool))
74        .build()?;
75
76    // Ask about weather
77    let response = agent.chat("What's the weather like in New York?").await?;
78    println!("Agent: {}\n", response);
79
80    let response = agent.chat("How about in London, but in celsius?").await?;
81    println!("Agent: {}\n", response);
82
83    Ok(())
84}
examples/agent_with_tools.rs (line 15)
4async fn main() -> helios_engine::Result<()> {
5    // Load configuration
6    let config = Config::from_file("config.toml")?;
7
8    // Create an agent with tools
9    let mut agent = Agent::builder("ToolAgent")
10        .config(config)
11        .system_prompt("You are a helpful assistant with access to tools. Use them when needed.")
12        .tool(Box::new(CalculatorTool))
13        .tool(Box::new(EchoTool))
14        .max_iterations(5)
15        .build()?;
16
17    println!("Available tools: {:?}\n", agent.tool_registry().list_tools());
18
19    // Test calculator tool
20    let response = agent.chat("What is 25 * 4 + 10?").await?;
21    println!("Agent: {}\n", response);
22
23    // Test echo tool
24    let response = agent.chat("Can you echo this message: 'Hello from Helios!'").await?;
25    println!("Agent: {}\n", response);
26
27    Ok(())
28}
examples/multiple_agents.rs (line 13)
4async fn main() -> helios_engine::Result<()> {
5    // Load configuration
6    let config = Config::from_file("config.toml")?;
7
8    // Create multiple agents with different personalities
9    let mut math_agent = Agent::builder("MathAgent")
10        .config(config.clone())
11        .system_prompt("You are a math expert. You love numbers and equations.")
12        .tool(Box::new(CalculatorTool))
13        .build()?;
14
15    let mut creative_agent = Agent::builder("CreativeAgent")
16        .config(config)
17        .system_prompt("You are a creative writer who loves storytelling and poetry.")
18        .build()?;
19
20    println!("=== Math Agent ===");
21    let response = math_agent.chat("What is the square root of 144?").await?;
22    println!("Math Agent: {}\n", response);
23
24    println!("=== Creative Agent ===");
25    let response = creative_agent.chat("Write a haiku about programming.").await?;
26    println!("Creative Agent: {}\n", response);
27
28    Ok(())
29}

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more