pub struct AgentBuilder { /* private fields */ }Implementations§
Source§impl AgentBuilder
impl AgentBuilder
pub fn new(name: impl Into<String>) -> Self
Sourcepub fn config(self, config: Config) -> Self
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 .await?;
14
15 // Send a message
16 let response = agent.chat("Hello! How are you?").await?;
17 println!("Agent: {}", response);
18
19 // Continue the conversation
20 let response = agent.chat("What can you help me with?").await?;
21 println!("Agent: {}", response);
22
23 Ok(())
24}More 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 .await?;
76
77 // Ask about weather
78 let response = agent.chat("What's the weather like in New York?").await?;
79 println!("Agent: {}\n", response);
80
81 let response = agent.chat("How about in London, but in celsius?").await?;
82 println!("Agent: {}\n", response);
83
84 Ok(())
85}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 .await?;
17
18 println!(
19 "Available tools: {:?}\n",
20 agent.tool_registry().list_tools()
21 );
22
23 // Test calculator tool
24 let response = agent.chat("What is 25 * 4 + 10?").await?;
25 println!("Agent: {}\n", response);
26
27 // Test echo tool
28 let response = agent
29 .chat("Can you echo this message: 'Hello from Helios!'")
30 .await?;
31 println!("Agent: {}\n", response);
32
33 Ok(())
34}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 .await?;
15
16 let mut creative_agent = Agent::builder("CreativeAgent")
17 .config(config)
18 .system_prompt("You are a creative writer who loves storytelling and poetry.")
19 .build()
20 .await?;
21
22 println!("=== Math Agent ===");
23 let response = math_agent.chat("What is the square root of 144?").await?;
24 println!("Math Agent: {}\n", response);
25
26 println!("=== Creative Agent ===");
27 let response = creative_agent
28 .chat("Write a haiku about programming.")
29 .await?;
30 println!("Creative Agent: {}\n", response);
31
32 Ok(())
33}examples/agent_with_file_tools.rs (line 23)
11async fn main() -> helios_engine::Result<()> {
12 println!("🚀 Helios Engine - Agent with File Tools Example");
13 println!("=================================================\n");
14
15 // Load configuration
16 let config = Config::from_file("config.toml").unwrap_or_else(|_| {
17 println!("⚠ No config.toml found, using default configuration");
18 Config::new_default()
19 });
20
21 // Create agent with file tools
22 let mut agent = Agent::builder("FileAssistant")
23 .config(config)
24 .system_prompt(
25 "You are a helpful file management assistant. You can search for files, \
26 read file contents, and edit files. Always confirm with the user before \
27 making changes to files. Keep track of important session information."
28 )
29 .tool(Box::new(FileSearchTool))
30 .tool(Box::new(FileReadTool))
31 .tool(Box::new(FileEditTool))
32 .tool(Box::new(FileWriteTool))
33 .max_iterations(10)
34 .build()
35 .await?;
36
37 println!("✓ Agent created with file tools");
38 println!("✓ Available tools: file_search, file_read, file_edit, file_write\n");
39
40 // Set initial session memory
41 agent.set_memory("session_start", chrono::Utc::now().to_rfc3339());
42 agent.set_memory("working_directory", std::env::current_dir()?.display().to_string());
43 agent.set_memory("tasks_completed", "0");
44
45 // Example 1: Search for Rust files
46 println!("Example 1: Searching for Rust files");
47 println!("====================================\n");
48
49 let response = agent
50 .chat("Find all Rust source files in the src directory")
51 .await?;
52 println!("Agent: {}\n", response);
53
54 // Update session memory
55 agent.increment_tasks_completed();
56 agent.set_memory("last_task", "file_search");
57
58 // Example 2: Read a specific file
59 println!("\nExample 2: Reading file contents");
60 println!("==================================\n");
61
62 let response = agent
63 .chat("Read the contents of src/lib.rs and give me a summary")
64 .await?;
65 println!("Agent: {}\n", response);
66
67 // Update session memory
68 agent.increment_tasks_completed();
69 agent.set_memory("last_task", "file_read");
70
71 // Example 3: Show session summary
72 println!("\nExample 3: Session Summary");
73 println!("==========================\n");
74
75 println!("{}", agent.get_session_summary());
76
77 // Example 4: Check session memory
78 println!("\nExample 4: Checking Session Memory");
79 println!("===================================\n");
80
81 println!("Working directory: {}", agent.get_memory("working_directory").unwrap_or(&"unknown".to_string()));
82 println!("Tasks completed: {}", agent.get_memory("tasks_completed").unwrap_or(&"0".to_string()));
83 println!("Last task: {}", agent.get_memory("last_task").unwrap_or(&"none".to_string()));
84
85 println!("\n✅ Example completed successfully!");
86 println!("\n💡 Key Features Demonstrated:");
87 println!(" • File search with pattern matching and content search");
88 println!(" • File reading with line range support");
89 println!(" • File editing with find/replace functionality");
90 println!(" • Session memory for tracking agent state");
91 println!(" • Streaming responses (works with both local and remote models)");
92
93 Ok(())
94}examples/agent_with_memory_db.rs (line 23)
11async fn main() -> helios_engine::Result<()> {
12 println!("🚀 Helios Engine - Agent with Memory DB Example");
13 println!("================================================\n");
14
15 // Load configuration
16 let config = Config::from_file("config.toml").unwrap_or_else(|_| {
17 println!("⚠ No config.toml found, using default configuration");
18 Config::new_default()
19 });
20
21 // Create agent with memory database tool
22 let mut agent = Agent::builder("DataAgent")
23 .config(config)
24 .system_prompt(
25 "You are a helpful assistant with access to an in-memory database. \
26 You can store and retrieve information using the memory_db tool. \
27 Operations available: set, get, delete, list, clear, exists. \
28 Use this to remember important information across our conversation."
29 )
30 .tool(Box::new(MemoryDBTool::new()))
31 .max_iterations(10)
32 .build()
33 .await?;
34
35 println!("✓ Agent created with memory database tool\n");
36
37 // Example 1: Store user preferences
38 println!("Example 1: Storing User Preferences");
39 println!("====================================\n");
40
41 let response = agent
42 .chat("Store my name as 'Alice' and my favorite color as 'blue' in the database")
43 .await?;
44 println!("Agent: {}\n", response);
45
46 // Example 2: Retrieve stored data
47 println!("\nExample 2: Retrieving Stored Data");
48 println!("==================================\n");
49
50 let response = agent
51 .chat("What's my name and favorite color?")
52 .await?;
53 println!("Agent: {}\n", response);
54
55 // Example 3: Store calculations
56 println!("\nExample 3: Caching Calculations");
57 println!("================================\n");
58
59 let response = agent
60 .chat("Calculate 123 * 456 and store the result in the database with key 'calculation_result'")
61 .await?;
62 println!("Agent: {}\n", response);
63
64 // Example 4: List all stored data
65 println!("\nExample 4: Listing All Data");
66 println!("===========================\n");
67
68 let response = agent
69 .chat("Show me everything stored in the database")
70 .await?;
71 println!("Agent: {}\n", response);
72
73 // Example 5: Check if key exists
74 println!("\nExample 5: Checking Key Existence");
75 println!("==================================\n");
76
77 let response = agent
78 .chat("Check if 'name' and 'age' exist in the database")
79 .await?;
80 println!("Agent: {}\n", response);
81
82 // Example 6: Delete specific data
83 println!("\nExample 6: Deleting Data");
84 println!("========================\n");
85
86 let response = agent
87 .chat("Delete the 'calculation_result' from the database")
88 .await?;
89 println!("Agent: {}\n", response);
90
91 // Example 7: Final state
92 println!("\nExample 7: Final Database State");
93 println!("================================\n");
94
95 let response = agent
96 .chat("List all remaining items in the database")
97 .await?;
98 println!("Agent: {}\n", response);
99
100 println!("\n✅ Example completed successfully!");
101 println!("\n💡 Key Features Demonstrated:");
102 println!(" • Setting key-value pairs in memory database");
103 println!(" • Retrieving stored values");
104 println!(" • Listing all database contents");
105 println!(" • Checking key existence");
106 println!(" • Deleting specific entries");
107 println!(" • Persistent data across multiple agent interactions");
108 println!("\n📝 Use Cases:");
109 println!(" • Caching expensive computations");
110 println!(" • Storing user preferences during conversation");
111 println!(" • Maintaining context across multiple queries");
112 println!(" • Temporary data storage for complex workflows");
113
114 Ok(())
115}Additional examples can be found in:
Sourcepub fn system_prompt(self, prompt: impl Into<String>) -> Self
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 .await?;
14
15 // Send a message
16 let response = agent.chat("Hello! How are you?").await?;
17 println!("Agent: {}", response);
18
19 // Continue the conversation
20 let response = agent.chat("What can you help me with?").await?;
21 println!("Agent: {}", response);
22
23 Ok(())
24}More 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 .await?;
76
77 // Ask about weather
78 let response = agent.chat("What's the weather like in New York?").await?;
79 println!("Agent: {}\n", response);
80
81 let response = agent.chat("How about in London, but in celsius?").await?;
82 println!("Agent: {}\n", response);
83
84 Ok(())
85}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 .await?;
17
18 println!(
19 "Available tools: {:?}\n",
20 agent.tool_registry().list_tools()
21 );
22
23 // Test calculator tool
24 let response = agent.chat("What is 25 * 4 + 10?").await?;
25 println!("Agent: {}\n", response);
26
27 // Test echo tool
28 let response = agent
29 .chat("Can you echo this message: 'Hello from Helios!'")
30 .await?;
31 println!("Agent: {}\n", response);
32
33 Ok(())
34}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 .await?;
15
16 let mut creative_agent = Agent::builder("CreativeAgent")
17 .config(config)
18 .system_prompt("You are a creative writer who loves storytelling and poetry.")
19 .build()
20 .await?;
21
22 println!("=== Math Agent ===");
23 let response = math_agent.chat("What is the square root of 144?").await?;
24 println!("Math Agent: {}\n", response);
25
26 println!("=== Creative Agent ===");
27 let response = creative_agent
28 .chat("Write a haiku about programming.")
29 .await?;
30 println!("Creative Agent: {}\n", response);
31
32 Ok(())
33}examples/agent_with_file_tools.rs (lines 24-28)
11async fn main() -> helios_engine::Result<()> {
12 println!("🚀 Helios Engine - Agent with File Tools Example");
13 println!("=================================================\n");
14
15 // Load configuration
16 let config = Config::from_file("config.toml").unwrap_or_else(|_| {
17 println!("⚠ No config.toml found, using default configuration");
18 Config::new_default()
19 });
20
21 // Create agent with file tools
22 let mut agent = Agent::builder("FileAssistant")
23 .config(config)
24 .system_prompt(
25 "You are a helpful file management assistant. You can search for files, \
26 read file contents, and edit files. Always confirm with the user before \
27 making changes to files. Keep track of important session information."
28 )
29 .tool(Box::new(FileSearchTool))
30 .tool(Box::new(FileReadTool))
31 .tool(Box::new(FileEditTool))
32 .tool(Box::new(FileWriteTool))
33 .max_iterations(10)
34 .build()
35 .await?;
36
37 println!("✓ Agent created with file tools");
38 println!("✓ Available tools: file_search, file_read, file_edit, file_write\n");
39
40 // Set initial session memory
41 agent.set_memory("session_start", chrono::Utc::now().to_rfc3339());
42 agent.set_memory("working_directory", std::env::current_dir()?.display().to_string());
43 agent.set_memory("tasks_completed", "0");
44
45 // Example 1: Search for Rust files
46 println!("Example 1: Searching for Rust files");
47 println!("====================================\n");
48
49 let response = agent
50 .chat("Find all Rust source files in the src directory")
51 .await?;
52 println!("Agent: {}\n", response);
53
54 // Update session memory
55 agent.increment_tasks_completed();
56 agent.set_memory("last_task", "file_search");
57
58 // Example 2: Read a specific file
59 println!("\nExample 2: Reading file contents");
60 println!("==================================\n");
61
62 let response = agent
63 .chat("Read the contents of src/lib.rs and give me a summary")
64 .await?;
65 println!("Agent: {}\n", response);
66
67 // Update session memory
68 agent.increment_tasks_completed();
69 agent.set_memory("last_task", "file_read");
70
71 // Example 3: Show session summary
72 println!("\nExample 3: Session Summary");
73 println!("==========================\n");
74
75 println!("{}", agent.get_session_summary());
76
77 // Example 4: Check session memory
78 println!("\nExample 4: Checking Session Memory");
79 println!("===================================\n");
80
81 println!("Working directory: {}", agent.get_memory("working_directory").unwrap_or(&"unknown".to_string()));
82 println!("Tasks completed: {}", agent.get_memory("tasks_completed").unwrap_or(&"0".to_string()));
83 println!("Last task: {}", agent.get_memory("last_task").unwrap_or(&"none".to_string()));
84
85 println!("\n✅ Example completed successfully!");
86 println!("\n💡 Key Features Demonstrated:");
87 println!(" • File search with pattern matching and content search");
88 println!(" • File reading with line range support");
89 println!(" • File editing with find/replace functionality");
90 println!(" • Session memory for tracking agent state");
91 println!(" • Streaming responses (works with both local and remote models)");
92
93 Ok(())
94}examples/agent_with_memory_db.rs (lines 24-29)
11async fn main() -> helios_engine::Result<()> {
12 println!("🚀 Helios Engine - Agent with Memory DB Example");
13 println!("================================================\n");
14
15 // Load configuration
16 let config = Config::from_file("config.toml").unwrap_or_else(|_| {
17 println!("⚠ No config.toml found, using default configuration");
18 Config::new_default()
19 });
20
21 // Create agent with memory database tool
22 let mut agent = Agent::builder("DataAgent")
23 .config(config)
24 .system_prompt(
25 "You are a helpful assistant with access to an in-memory database. \
26 You can store and retrieve information using the memory_db tool. \
27 Operations available: set, get, delete, list, clear, exists. \
28 Use this to remember important information across our conversation."
29 )
30 .tool(Box::new(MemoryDBTool::new()))
31 .max_iterations(10)
32 .build()
33 .await?;
34
35 println!("✓ Agent created with memory database tool\n");
36
37 // Example 1: Store user preferences
38 println!("Example 1: Storing User Preferences");
39 println!("====================================\n");
40
41 let response = agent
42 .chat("Store my name as 'Alice' and my favorite color as 'blue' in the database")
43 .await?;
44 println!("Agent: {}\n", response);
45
46 // Example 2: Retrieve stored data
47 println!("\nExample 2: Retrieving Stored Data");
48 println!("==================================\n");
49
50 let response = agent
51 .chat("What's my name and favorite color?")
52 .await?;
53 println!("Agent: {}\n", response);
54
55 // Example 3: Store calculations
56 println!("\nExample 3: Caching Calculations");
57 println!("================================\n");
58
59 let response = agent
60 .chat("Calculate 123 * 456 and store the result in the database with key 'calculation_result'")
61 .await?;
62 println!("Agent: {}\n", response);
63
64 // Example 4: List all stored data
65 println!("\nExample 4: Listing All Data");
66 println!("===========================\n");
67
68 let response = agent
69 .chat("Show me everything stored in the database")
70 .await?;
71 println!("Agent: {}\n", response);
72
73 // Example 5: Check if key exists
74 println!("\nExample 5: Checking Key Existence");
75 println!("==================================\n");
76
77 let response = agent
78 .chat("Check if 'name' and 'age' exist in the database")
79 .await?;
80 println!("Agent: {}\n", response);
81
82 // Example 6: Delete specific data
83 println!("\nExample 6: Deleting Data");
84 println!("========================\n");
85
86 let response = agent
87 .chat("Delete the 'calculation_result' from the database")
88 .await?;
89 println!("Agent: {}\n", response);
90
91 // Example 7: Final state
92 println!("\nExample 7: Final Database State");
93 println!("================================\n");
94
95 let response = agent
96 .chat("List all remaining items in the database")
97 .await?;
98 println!("Agent: {}\n", response);
99
100 println!("\n✅ Example completed successfully!");
101 println!("\n💡 Key Features Demonstrated:");
102 println!(" • Setting key-value pairs in memory database");
103 println!(" • Retrieving stored values");
104 println!(" • Listing all database contents");
105 println!(" • Checking key existence");
106 println!(" • Deleting specific entries");
107 println!(" • Persistent data across multiple agent interactions");
108 println!("\n📝 Use Cases:");
109 println!(" • Caching expensive computations");
110 println!(" • Storing user preferences during conversation");
111 println!(" • Maintaining context across multiple queries");
112 println!(" • Temporary data storage for complex workflows");
113
114 Ok(())
115}Additional examples can be found in:
Sourcepub fn tool(self, tool: Box<dyn Tool>) -> Self
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 .await?;
76
77 // Ask about weather
78 let response = agent.chat("What's the weather like in New York?").await?;
79 println!("Agent: {}\n", response);
80
81 let response = agent.chat("How about in London, but in celsius?").await?;
82 println!("Agent: {}\n", response);
83
84 Ok(())
85}More 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 .await?;
17
18 println!(
19 "Available tools: {:?}\n",
20 agent.tool_registry().list_tools()
21 );
22
23 // Test calculator tool
24 let response = agent.chat("What is 25 * 4 + 10?").await?;
25 println!("Agent: {}\n", response);
26
27 // Test echo tool
28 let response = agent
29 .chat("Can you echo this message: 'Hello from Helios!'")
30 .await?;
31 println!("Agent: {}\n", response);
32
33 Ok(())
34}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 .await?;
15
16 let mut creative_agent = Agent::builder("CreativeAgent")
17 .config(config)
18 .system_prompt("You are a creative writer who loves storytelling and poetry.")
19 .build()
20 .await?;
21
22 println!("=== Math Agent ===");
23 let response = math_agent.chat("What is the square root of 144?").await?;
24 println!("Math Agent: {}\n", response);
25
26 println!("=== Creative Agent ===");
27 let response = creative_agent
28 .chat("Write a haiku about programming.")
29 .await?;
30 println!("Creative Agent: {}\n", response);
31
32 Ok(())
33}examples/agent_with_file_tools.rs (line 29)
11async fn main() -> helios_engine::Result<()> {
12 println!("🚀 Helios Engine - Agent with File Tools Example");
13 println!("=================================================\n");
14
15 // Load configuration
16 let config = Config::from_file("config.toml").unwrap_or_else(|_| {
17 println!("⚠ No config.toml found, using default configuration");
18 Config::new_default()
19 });
20
21 // Create agent with file tools
22 let mut agent = Agent::builder("FileAssistant")
23 .config(config)
24 .system_prompt(
25 "You are a helpful file management assistant. You can search for files, \
26 read file contents, and edit files. Always confirm with the user before \
27 making changes to files. Keep track of important session information."
28 )
29 .tool(Box::new(FileSearchTool))
30 .tool(Box::new(FileReadTool))
31 .tool(Box::new(FileEditTool))
32 .tool(Box::new(FileWriteTool))
33 .max_iterations(10)
34 .build()
35 .await?;
36
37 println!("✓ Agent created with file tools");
38 println!("✓ Available tools: file_search, file_read, file_edit, file_write\n");
39
40 // Set initial session memory
41 agent.set_memory("session_start", chrono::Utc::now().to_rfc3339());
42 agent.set_memory("working_directory", std::env::current_dir()?.display().to_string());
43 agent.set_memory("tasks_completed", "0");
44
45 // Example 1: Search for Rust files
46 println!("Example 1: Searching for Rust files");
47 println!("====================================\n");
48
49 let response = agent
50 .chat("Find all Rust source files in the src directory")
51 .await?;
52 println!("Agent: {}\n", response);
53
54 // Update session memory
55 agent.increment_tasks_completed();
56 agent.set_memory("last_task", "file_search");
57
58 // Example 2: Read a specific file
59 println!("\nExample 2: Reading file contents");
60 println!("==================================\n");
61
62 let response = agent
63 .chat("Read the contents of src/lib.rs and give me a summary")
64 .await?;
65 println!("Agent: {}\n", response);
66
67 // Update session memory
68 agent.increment_tasks_completed();
69 agent.set_memory("last_task", "file_read");
70
71 // Example 3: Show session summary
72 println!("\nExample 3: Session Summary");
73 println!("==========================\n");
74
75 println!("{}", agent.get_session_summary());
76
77 // Example 4: Check session memory
78 println!("\nExample 4: Checking Session Memory");
79 println!("===================================\n");
80
81 println!("Working directory: {}", agent.get_memory("working_directory").unwrap_or(&"unknown".to_string()));
82 println!("Tasks completed: {}", agent.get_memory("tasks_completed").unwrap_or(&"0".to_string()));
83 println!("Last task: {}", agent.get_memory("last_task").unwrap_or(&"none".to_string()));
84
85 println!("\n✅ Example completed successfully!");
86 println!("\n💡 Key Features Demonstrated:");
87 println!(" • File search with pattern matching and content search");
88 println!(" • File reading with line range support");
89 println!(" • File editing with find/replace functionality");
90 println!(" • Session memory for tracking agent state");
91 println!(" • Streaming responses (works with both local and remote models)");
92
93 Ok(())
94}examples/agent_with_memory_db.rs (line 30)
11async fn main() -> helios_engine::Result<()> {
12 println!("🚀 Helios Engine - Agent with Memory DB Example");
13 println!("================================================\n");
14
15 // Load configuration
16 let config = Config::from_file("config.toml").unwrap_or_else(|_| {
17 println!("⚠ No config.toml found, using default configuration");
18 Config::new_default()
19 });
20
21 // Create agent with memory database tool
22 let mut agent = Agent::builder("DataAgent")
23 .config(config)
24 .system_prompt(
25 "You are a helpful assistant with access to an in-memory database. \
26 You can store and retrieve information using the memory_db tool. \
27 Operations available: set, get, delete, list, clear, exists. \
28 Use this to remember important information across our conversation."
29 )
30 .tool(Box::new(MemoryDBTool::new()))
31 .max_iterations(10)
32 .build()
33 .await?;
34
35 println!("✓ Agent created with memory database tool\n");
36
37 // Example 1: Store user preferences
38 println!("Example 1: Storing User Preferences");
39 println!("====================================\n");
40
41 let response = agent
42 .chat("Store my name as 'Alice' and my favorite color as 'blue' in the database")
43 .await?;
44 println!("Agent: {}\n", response);
45
46 // Example 2: Retrieve stored data
47 println!("\nExample 2: Retrieving Stored Data");
48 println!("==================================\n");
49
50 let response = agent
51 .chat("What's my name and favorite color?")
52 .await?;
53 println!("Agent: {}\n", response);
54
55 // Example 3: Store calculations
56 println!("\nExample 3: Caching Calculations");
57 println!("================================\n");
58
59 let response = agent
60 .chat("Calculate 123 * 456 and store the result in the database with key 'calculation_result'")
61 .await?;
62 println!("Agent: {}\n", response);
63
64 // Example 4: List all stored data
65 println!("\nExample 4: Listing All Data");
66 println!("===========================\n");
67
68 let response = agent
69 .chat("Show me everything stored in the database")
70 .await?;
71 println!("Agent: {}\n", response);
72
73 // Example 5: Check if key exists
74 println!("\nExample 5: Checking Key Existence");
75 println!("==================================\n");
76
77 let response = agent
78 .chat("Check if 'name' and 'age' exist in the database")
79 .await?;
80 println!("Agent: {}\n", response);
81
82 // Example 6: Delete specific data
83 println!("\nExample 6: Deleting Data");
84 println!("========================\n");
85
86 let response = agent
87 .chat("Delete the 'calculation_result' from the database")
88 .await?;
89 println!("Agent: {}\n", response);
90
91 // Example 7: Final state
92 println!("\nExample 7: Final Database State");
93 println!("================================\n");
94
95 let response = agent
96 .chat("List all remaining items in the database")
97 .await?;
98 println!("Agent: {}\n", response);
99
100 println!("\n✅ Example completed successfully!");
101 println!("\n💡 Key Features Demonstrated:");
102 println!(" • Setting key-value pairs in memory database");
103 println!(" • Retrieving stored values");
104 println!(" • Listing all database contents");
105 println!(" • Checking key existence");
106 println!(" • Deleting specific entries");
107 println!(" • Persistent data across multiple agent interactions");
108 println!("\n📝 Use Cases:");
109 println!(" • Caching expensive computations");
110 println!(" • Storing user preferences during conversation");
111 println!(" • Maintaining context across multiple queries");
112 println!(" • Temporary data storage for complex workflows");
113
114 Ok(())
115}examples/agent_with_rag.rs (line 48)
15async fn main() -> helios_engine::Result<()> {
16 println!("🚀 Helios Engine - Agent with RAG Example");
17 println!("==========================================\n");
18
19 // Check for required environment variables
20 let embedding_api_key = std::env::var("OPENAI_API_KEY")
21 .unwrap_or_else(|_| {
22 println!("⚠ Warning: OPENAI_API_KEY not set. Using placeholder.");
23 "your-api-key-here".to_string()
24 });
25
26 // Load configuration
27 let config = Config::from_file("config.toml").unwrap_or_else(|_| {
28 println!("⚠ No config.toml found, using default configuration");
29 Config::new_default()
30 });
31
32 // Create RAG tool with Qdrant backend
33 let rag_tool = QdrantRAGTool::new(
34 "http://localhost:6333", // Qdrant URL
35 "helios_knowledge", // Collection name
36 "https://api.openai.com/v1/embeddings", // Embedding API
37 embedding_api_key, // API key
38 );
39
40 // Create agent with RAG tool
41 let mut agent = Agent::builder("KnowledgeAgent")
42 .config(config)
43 .system_prompt(
44 "You are a helpful assistant with access to a RAG (Retrieval-Augmented Generation) system. \
45 You can store documents and retrieve relevant information to answer questions. \
46 When answering questions, first search for relevant documents, then provide informed answers based on the retrieved context."
47 )
48 .tool(Box::new(rag_tool))
49 .max_iterations(10)
50 .build()
51 .await?;
52
53 println!("✓ Agent created with RAG capabilities\n");
54
55 // Example 1: Add knowledge to the database
56 println!("Example 1: Adding Documents to Knowledge Base");
57 println!("==============================================\n");
58
59 let response = agent
60 .chat(
61 "Store this information: Rust is a systems programming language that runs blazingly fast, \
62 prevents segfaults, and guarantees thread safety. It was created by Mozilla Research."
63 )
64 .await?;
65 println!("Agent: {}\n", response);
66
67 let response = agent
68 .chat(
69 "Store this: Python is a high-level, interpreted programming language known for its \
70 clear syntax and readability. It was created by Guido van Rossum in 1991."
71 )
72 .await?;
73 println!("Agent: {}\n", response);
74
75 let response = agent
76 .chat(
77 "Store this: JavaScript is a programming language commonly used for web development. \
78 It allows developers to create interactive web pages and runs in web browsers."
79 )
80 .await?;
81 println!("Agent: {}\n", response);
82
83 // Example 2: Semantic search - ask questions
84 println!("\nExample 2: Semantic Search and Q&A");
85 println!("===================================\n");
86
87 let response = agent
88 .chat("What programming language is known for preventing segfaults?")
89 .await?;
90 println!("Agent: {}\n", response);
91
92 let response = agent
93 .chat("Tell me about the programming language created in 1991")
94 .await?;
95 println!("Agent: {}\n", response);
96
97 // Example 3: Multi-document retrieval
98 println!("\nExample 3: Multi-Document Retrieval");
99 println!("====================================\n");
100
101 let response = agent
102 .chat("Search for information about programming languages and summarize what you find")
103 .await?;
104 println!("Agent: {}\n", response);
105
106 // Example 4: Adding documents with metadata
107 println!("\nExample 4: Documents with Metadata");
108 println!("===================================\n");
109
110 let response = agent
111 .chat(
112 "Store this with metadata: \
113 The Helios Engine is a Rust framework for building LLM agents. \
114 Metadata: category=framework, language=rust, year=2024"
115 )
116 .await?;
117 println!("Agent: {}\n", response);
118
119 println!("\n✅ Example completed successfully!");
120 println!("\n💡 Key Features Demonstrated:");
121 println!(" • Document embedding with OpenAI embeddings");
122 println!(" • Vector storage in Qdrant database");
123 println!(" • Semantic search with cosine similarity");
124 println!(" • RAG workflow for context-aware answers");
125 println!(" • Metadata support for document organization");
126
127 println!("\n📝 RAG Use Cases:");
128 println!(" • Question answering over custom knowledge bases");
129 println!(" • Document search and retrieval");
130 println!(" • Building chatbots with domain-specific knowledge");
131 println!(" • Information extraction from large document sets");
132
133 println!("\n🔧 Setup Instructions:");
134 println!(" 1. Start Qdrant: docker run -p 6333:6333 qdrant/qdrant");
135 println!(" 2. Set API key: export OPENAI_API_KEY=your-key");
136 println!(" 3. Run example: cargo run --example agent_with_rag");
137
138 Ok(())
139}Additional examples can be found in:
Sourcepub fn max_iterations(self, max: usize) -> Self
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 .await?;
17
18 println!(
19 "Available tools: {:?}\n",
20 agent.tool_registry().list_tools()
21 );
22
23 // Test calculator tool
24 let response = agent.chat("What is 25 * 4 + 10?").await?;
25 println!("Agent: {}\n", response);
26
27 // Test echo tool
28 let response = agent
29 .chat("Can you echo this message: 'Hello from Helios!'")
30 .await?;
31 println!("Agent: {}\n", response);
32
33 Ok(())
34}More examples
examples/agent_with_file_tools.rs (line 33)
11async fn main() -> helios_engine::Result<()> {
12 println!("🚀 Helios Engine - Agent with File Tools Example");
13 println!("=================================================\n");
14
15 // Load configuration
16 let config = Config::from_file("config.toml").unwrap_or_else(|_| {
17 println!("⚠ No config.toml found, using default configuration");
18 Config::new_default()
19 });
20
21 // Create agent with file tools
22 let mut agent = Agent::builder("FileAssistant")
23 .config(config)
24 .system_prompt(
25 "You are a helpful file management assistant. You can search for files, \
26 read file contents, and edit files. Always confirm with the user before \
27 making changes to files. Keep track of important session information."
28 )
29 .tool(Box::new(FileSearchTool))
30 .tool(Box::new(FileReadTool))
31 .tool(Box::new(FileEditTool))
32 .tool(Box::new(FileWriteTool))
33 .max_iterations(10)
34 .build()
35 .await?;
36
37 println!("✓ Agent created with file tools");
38 println!("✓ Available tools: file_search, file_read, file_edit, file_write\n");
39
40 // Set initial session memory
41 agent.set_memory("session_start", chrono::Utc::now().to_rfc3339());
42 agent.set_memory("working_directory", std::env::current_dir()?.display().to_string());
43 agent.set_memory("tasks_completed", "0");
44
45 // Example 1: Search for Rust files
46 println!("Example 1: Searching for Rust files");
47 println!("====================================\n");
48
49 let response = agent
50 .chat("Find all Rust source files in the src directory")
51 .await?;
52 println!("Agent: {}\n", response);
53
54 // Update session memory
55 agent.increment_tasks_completed();
56 agent.set_memory("last_task", "file_search");
57
58 // Example 2: Read a specific file
59 println!("\nExample 2: Reading file contents");
60 println!("==================================\n");
61
62 let response = agent
63 .chat("Read the contents of src/lib.rs and give me a summary")
64 .await?;
65 println!("Agent: {}\n", response);
66
67 // Update session memory
68 agent.increment_tasks_completed();
69 agent.set_memory("last_task", "file_read");
70
71 // Example 3: Show session summary
72 println!("\nExample 3: Session Summary");
73 println!("==========================\n");
74
75 println!("{}", agent.get_session_summary());
76
77 // Example 4: Check session memory
78 println!("\nExample 4: Checking Session Memory");
79 println!("===================================\n");
80
81 println!("Working directory: {}", agent.get_memory("working_directory").unwrap_or(&"unknown".to_string()));
82 println!("Tasks completed: {}", agent.get_memory("tasks_completed").unwrap_or(&"0".to_string()));
83 println!("Last task: {}", agent.get_memory("last_task").unwrap_or(&"none".to_string()));
84
85 println!("\n✅ Example completed successfully!");
86 println!("\n💡 Key Features Demonstrated:");
87 println!(" • File search with pattern matching and content search");
88 println!(" • File reading with line range support");
89 println!(" • File editing with find/replace functionality");
90 println!(" • Session memory for tracking agent state");
91 println!(" • Streaming responses (works with both local and remote models)");
92
93 Ok(())
94}examples/agent_with_memory_db.rs (line 31)
11async fn main() -> helios_engine::Result<()> {
12 println!("🚀 Helios Engine - Agent with Memory DB Example");
13 println!("================================================\n");
14
15 // Load configuration
16 let config = Config::from_file("config.toml").unwrap_or_else(|_| {
17 println!("⚠ No config.toml found, using default configuration");
18 Config::new_default()
19 });
20
21 // Create agent with memory database tool
22 let mut agent = Agent::builder("DataAgent")
23 .config(config)
24 .system_prompt(
25 "You are a helpful assistant with access to an in-memory database. \
26 You can store and retrieve information using the memory_db tool. \
27 Operations available: set, get, delete, list, clear, exists. \
28 Use this to remember important information across our conversation."
29 )
30 .tool(Box::new(MemoryDBTool::new()))
31 .max_iterations(10)
32 .build()
33 .await?;
34
35 println!("✓ Agent created with memory database tool\n");
36
37 // Example 1: Store user preferences
38 println!("Example 1: Storing User Preferences");
39 println!("====================================\n");
40
41 let response = agent
42 .chat("Store my name as 'Alice' and my favorite color as 'blue' in the database")
43 .await?;
44 println!("Agent: {}\n", response);
45
46 // Example 2: Retrieve stored data
47 println!("\nExample 2: Retrieving Stored Data");
48 println!("==================================\n");
49
50 let response = agent
51 .chat("What's my name and favorite color?")
52 .await?;
53 println!("Agent: {}\n", response);
54
55 // Example 3: Store calculations
56 println!("\nExample 3: Caching Calculations");
57 println!("================================\n");
58
59 let response = agent
60 .chat("Calculate 123 * 456 and store the result in the database with key 'calculation_result'")
61 .await?;
62 println!("Agent: {}\n", response);
63
64 // Example 4: List all stored data
65 println!("\nExample 4: Listing All Data");
66 println!("===========================\n");
67
68 let response = agent
69 .chat("Show me everything stored in the database")
70 .await?;
71 println!("Agent: {}\n", response);
72
73 // Example 5: Check if key exists
74 println!("\nExample 5: Checking Key Existence");
75 println!("==================================\n");
76
77 let response = agent
78 .chat("Check if 'name' and 'age' exist in the database")
79 .await?;
80 println!("Agent: {}\n", response);
81
82 // Example 6: Delete specific data
83 println!("\nExample 6: Deleting Data");
84 println!("========================\n");
85
86 let response = agent
87 .chat("Delete the 'calculation_result' from the database")
88 .await?;
89 println!("Agent: {}\n", response);
90
91 // Example 7: Final state
92 println!("\nExample 7: Final Database State");
93 println!("================================\n");
94
95 let response = agent
96 .chat("List all remaining items in the database")
97 .await?;
98 println!("Agent: {}\n", response);
99
100 println!("\n✅ Example completed successfully!");
101 println!("\n💡 Key Features Demonstrated:");
102 println!(" • Setting key-value pairs in memory database");
103 println!(" • Retrieving stored values");
104 println!(" • Listing all database contents");
105 println!(" • Checking key existence");
106 println!(" • Deleting specific entries");
107 println!(" • Persistent data across multiple agent interactions");
108 println!("\n📝 Use Cases:");
109 println!(" • Caching expensive computations");
110 println!(" • Storing user preferences during conversation");
111 println!(" • Maintaining context across multiple queries");
112 println!(" • Temporary data storage for complex workflows");
113
114 Ok(())
115}examples/agent_with_rag.rs (line 49)
15async fn main() -> helios_engine::Result<()> {
16 println!("🚀 Helios Engine - Agent with RAG Example");
17 println!("==========================================\n");
18
19 // Check for required environment variables
20 let embedding_api_key = std::env::var("OPENAI_API_KEY")
21 .unwrap_or_else(|_| {
22 println!("⚠ Warning: OPENAI_API_KEY not set. Using placeholder.");
23 "your-api-key-here".to_string()
24 });
25
26 // Load configuration
27 let config = Config::from_file("config.toml").unwrap_or_else(|_| {
28 println!("⚠ No config.toml found, using default configuration");
29 Config::new_default()
30 });
31
32 // Create RAG tool with Qdrant backend
33 let rag_tool = QdrantRAGTool::new(
34 "http://localhost:6333", // Qdrant URL
35 "helios_knowledge", // Collection name
36 "https://api.openai.com/v1/embeddings", // Embedding API
37 embedding_api_key, // API key
38 );
39
40 // Create agent with RAG tool
41 let mut agent = Agent::builder("KnowledgeAgent")
42 .config(config)
43 .system_prompt(
44 "You are a helpful assistant with access to a RAG (Retrieval-Augmented Generation) system. \
45 You can store documents and retrieve relevant information to answer questions. \
46 When answering questions, first search for relevant documents, then provide informed answers based on the retrieved context."
47 )
48 .tool(Box::new(rag_tool))
49 .max_iterations(10)
50 .build()
51 .await?;
52
53 println!("✓ Agent created with RAG capabilities\n");
54
55 // Example 1: Add knowledge to the database
56 println!("Example 1: Adding Documents to Knowledge Base");
57 println!("==============================================\n");
58
59 let response = agent
60 .chat(
61 "Store this information: Rust is a systems programming language that runs blazingly fast, \
62 prevents segfaults, and guarantees thread safety. It was created by Mozilla Research."
63 )
64 .await?;
65 println!("Agent: {}\n", response);
66
67 let response = agent
68 .chat(
69 "Store this: Python is a high-level, interpreted programming language known for its \
70 clear syntax and readability. It was created by Guido van Rossum in 1991."
71 )
72 .await?;
73 println!("Agent: {}\n", response);
74
75 let response = agent
76 .chat(
77 "Store this: JavaScript is a programming language commonly used for web development. \
78 It allows developers to create interactive web pages and runs in web browsers."
79 )
80 .await?;
81 println!("Agent: {}\n", response);
82
83 // Example 2: Semantic search - ask questions
84 println!("\nExample 2: Semantic Search and Q&A");
85 println!("===================================\n");
86
87 let response = agent
88 .chat("What programming language is known for preventing segfaults?")
89 .await?;
90 println!("Agent: {}\n", response);
91
92 let response = agent
93 .chat("Tell me about the programming language created in 1991")
94 .await?;
95 println!("Agent: {}\n", response);
96
97 // Example 3: Multi-document retrieval
98 println!("\nExample 3: Multi-Document Retrieval");
99 println!("====================================\n");
100
101 let response = agent
102 .chat("Search for information about programming languages and summarize what you find")
103 .await?;
104 println!("Agent: {}\n", response);
105
106 // Example 4: Adding documents with metadata
107 println!("\nExample 4: Documents with Metadata");
108 println!("===================================\n");
109
110 let response = agent
111 .chat(
112 "Store this with metadata: \
113 The Helios Engine is a Rust framework for building LLM agents. \
114 Metadata: category=framework, language=rust, year=2024"
115 )
116 .await?;
117 println!("Agent: {}\n", response);
118
119 println!("\n✅ Example completed successfully!");
120 println!("\n💡 Key Features Demonstrated:");
121 println!(" • Document embedding with OpenAI embeddings");
122 println!(" • Vector storage in Qdrant database");
123 println!(" • Semantic search with cosine similarity");
124 println!(" • RAG workflow for context-aware answers");
125 println!(" • Metadata support for document organization");
126
127 println!("\n📝 RAG Use Cases:");
128 println!(" • Question answering over custom knowledge bases");
129 println!(" • Document search and retrieval");
130 println!(" • Building chatbots with domain-specific knowledge");
131 println!(" • Information extraction from large document sets");
132
133 println!("\n🔧 Setup Instructions:");
134 println!(" 1. Start Qdrant: docker run -p 6333:6333 qdrant/qdrant");
135 println!(" 2. Set API key: export OPENAI_API_KEY=your-key");
136 println!(" 3. Run example: cargo run --example agent_with_rag");
137
138 Ok(())
139}examples/complete_demo.rs (line 35)
12async fn main() -> helios_engine::Result<()> {
13 println!("🚀 Helios Engine - Complete Feature Demo");
14 println!("=========================================\n");
15
16 // Load configuration
17 let config = Config::from_file("config.toml").unwrap_or_else(|_| {
18 println!("⚠ No config.toml found, using default configuration");
19 Config::new_default()
20 });
21
22 // Create agent with all file tools
23 println!("📦 Creating agent with file tools...");
24 let mut agent = Agent::builder("SmartAssistant")
25 .config(config)
26 .system_prompt(
27 "You are an intelligent assistant with file management capabilities. \
28 You can search files, read them, and make edits. Always explain what \
29 you're doing and track important information in session memory."
30 )
31 .tool(Box::new(FileSearchTool))
32 .tool(Box::new(FileReadTool))
33 .tool(Box::new(FileEditTool))
34 .tool(Box::new(FileWriteTool))
35 .max_iterations(10)
36 .build()
37 .await?;
38
39 println!("✓ Agent created successfully!\n");
40
41 // Initialize session memory
42 println!("🧠 Initializing session memory...");
43 agent.set_memory("session_start", chrono::Utc::now().to_rfc3339());
44 agent.set_memory("working_directory", std::env::current_dir()?.display().to_string());
45 agent.set_memory("files_accessed", "0");
46 agent.set_memory("edits_made", "0");
47 println!("✓ Session memory initialized\n");
48
49 // Demo 1: Search for files with streaming response
50 println!("Demo 1: File Search with Streaming");
51 println!("===================================");
52 println!("User: Find all Rust example files\n");
53
54 print!("Agent: ");
55 io::stdout().flush()?;
56
57 let response1 = agent.chat("Find all Rust example files in the examples directory").await?;
58 println!("{}\n", response1);
59
60 // Update memory
61 agent.increment_counter("files_accessed");
62 agent.set_memory("last_action", "file_search");
63
64 // Demo 2: Read a file
65 println!("\nDemo 2: Reading File Contents");
66 println!("==============================");
67 println!("User: Read the NEW_FEATURES.md file and summarize the key points\n");
68
69 print!("Agent: ");
70 io::stdout().flush()?;
71
72 let response2 = agent.chat("Read the NEW_FEATURES.md file and give me a brief summary of what's new").await?;
73 println!("{}\n", response2);
74
75 // Update memory
76 agent.increment_counter("files_accessed");
77 agent.set_memory("last_action", "file_read");
78
79 // Demo 3: Show session summary
80 println!("\nDemo 3: Session Summary");
81 println!("=======================\n");
82 println!("{}", agent.get_session_summary());
83
84 // Demo 4: Interactive mode
85 println!("\n\nDemo 4: Interactive Mode");
86 println!("========================");
87 println!("You can now interact with the agent. Type 'exit' to quit.\n");
88
89 loop {
90 print!("\nYou: ");
91 io::stdout().flush()?;
92
93 let mut input = String::new();
94 io::stdin().read_line(&mut input)?;
95 let input = input.trim();
96
97 if input.is_empty() {
98 continue;
99 }
100
101 match input.to_lowercase().as_str() {
102 "exit" | "quit" => {
103 println!("\n👋 Goodbye!");
104 break;
105 }
106 "summary" => {
107 println!("\n📊 Session Summary:");
108 println!("{}", agent.get_session_summary());
109 continue;
110 }
111 "memory" => {
112 println!("\n🧠 Session Memory:");
113 if let Some(start) = agent.get_memory("session_start") {
114 println!(" Session started: {}", start);
115 }
116 if let Some(dir) = agent.get_memory("working_directory") {
117 println!(" Working directory: {}", dir);
118 }
119 if let Some(files) = agent.get_memory("files_accessed") {
120 println!(" Files accessed: {}", files);
121 }
122 if let Some(edits) = agent.get_memory("edits_made") {
123 println!(" Edits made: {}", edits);
124 }
125 if let Some(action) = agent.get_memory("last_action") {
126 println!(" Last action: {}", action);
127 }
128 continue;
129 }
130 "help" => {
131 println!("\n📖 Available Commands:");
132 println!(" exit, quit - Exit the demo");
133 println!(" summary - Show session summary");
134 println!(" memory - Show session memory");
135 println!(" help - Show this help");
136 println!("\n💡 Try asking the agent to:");
137 println!(" • Search for specific files");
138 println!(" • Read file contents");
139 println!(" • Summarize what it has done");
140 continue;
141 }
142 _ => {}
143 }
144
145 // Send message to agent with streaming
146 print!("\nAgent: ");
147 io::stdout().flush()?;
148
149 match agent.chat(input).await {
150 Ok(response) => {
151 println!("{}", response);
152
153 // Update memory after each interaction
154 agent.increment_counter("files_accessed");
155 }
156 Err(e) => {
157 eprintln!("\n❌ Error: {}", e);
158 }
159 }
160 }
161
162 // Final summary
163 println!("\n📊 Final Session Summary:");
164 println!("{}", agent.get_session_summary());
165
166 println!("\n✅ Demo completed successfully!");
167 println!("\n💡 Features Demonstrated:");
168 println!(" ✓ Streaming responses (local/remote models)");
169 println!(" ✓ File search with pattern matching");
170 println!(" ✓ File reading with summaries");
171 println!(" ✓ Session memory tracking");
172 println!(" ✓ Interactive conversation");
173 println!(" ✓ Real-time progress updates");
174
175 Ok(())
176}Sourcepub async fn build(self) -> Result<Agent>
pub async 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 .await?;
14
15 // Send a message
16 let response = agent.chat("Hello! How are you?").await?;
17 println!("Agent: {}", response);
18
19 // Continue the conversation
20 let response = agent.chat("What can you help me with?").await?;
21 println!("Agent: {}", response);
22
23 Ok(())
24}More 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 .await?;
76
77 // Ask about weather
78 let response = agent.chat("What's the weather like in New York?").await?;
79 println!("Agent: {}\n", response);
80
81 let response = agent.chat("How about in London, but in celsius?").await?;
82 println!("Agent: {}\n", response);
83
84 Ok(())
85}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 .await?;
17
18 println!(
19 "Available tools: {:?}\n",
20 agent.tool_registry().list_tools()
21 );
22
23 // Test calculator tool
24 let response = agent.chat("What is 25 * 4 + 10?").await?;
25 println!("Agent: {}\n", response);
26
27 // Test echo tool
28 let response = agent
29 .chat("Can you echo this message: 'Hello from Helios!'")
30 .await?;
31 println!("Agent: {}\n", response);
32
33 Ok(())
34}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 .await?;
15
16 let mut creative_agent = Agent::builder("CreativeAgent")
17 .config(config)
18 .system_prompt("You are a creative writer who loves storytelling and poetry.")
19 .build()
20 .await?;
21
22 println!("=== Math Agent ===");
23 let response = math_agent.chat("What is the square root of 144?").await?;
24 println!("Math Agent: {}\n", response);
25
26 println!("=== Creative Agent ===");
27 let response = creative_agent
28 .chat("Write a haiku about programming.")
29 .await?;
30 println!("Creative Agent: {}\n", response);
31
32 Ok(())
33}examples/agent_with_file_tools.rs (line 34)
11async fn main() -> helios_engine::Result<()> {
12 println!("🚀 Helios Engine - Agent with File Tools Example");
13 println!("=================================================\n");
14
15 // Load configuration
16 let config = Config::from_file("config.toml").unwrap_or_else(|_| {
17 println!("⚠ No config.toml found, using default configuration");
18 Config::new_default()
19 });
20
21 // Create agent with file tools
22 let mut agent = Agent::builder("FileAssistant")
23 .config(config)
24 .system_prompt(
25 "You are a helpful file management assistant. You can search for files, \
26 read file contents, and edit files. Always confirm with the user before \
27 making changes to files. Keep track of important session information."
28 )
29 .tool(Box::new(FileSearchTool))
30 .tool(Box::new(FileReadTool))
31 .tool(Box::new(FileEditTool))
32 .tool(Box::new(FileWriteTool))
33 .max_iterations(10)
34 .build()
35 .await?;
36
37 println!("✓ Agent created with file tools");
38 println!("✓ Available tools: file_search, file_read, file_edit, file_write\n");
39
40 // Set initial session memory
41 agent.set_memory("session_start", chrono::Utc::now().to_rfc3339());
42 agent.set_memory("working_directory", std::env::current_dir()?.display().to_string());
43 agent.set_memory("tasks_completed", "0");
44
45 // Example 1: Search for Rust files
46 println!("Example 1: Searching for Rust files");
47 println!("====================================\n");
48
49 let response = agent
50 .chat("Find all Rust source files in the src directory")
51 .await?;
52 println!("Agent: {}\n", response);
53
54 // Update session memory
55 agent.increment_tasks_completed();
56 agent.set_memory("last_task", "file_search");
57
58 // Example 2: Read a specific file
59 println!("\nExample 2: Reading file contents");
60 println!("==================================\n");
61
62 let response = agent
63 .chat("Read the contents of src/lib.rs and give me a summary")
64 .await?;
65 println!("Agent: {}\n", response);
66
67 // Update session memory
68 agent.increment_tasks_completed();
69 agent.set_memory("last_task", "file_read");
70
71 // Example 3: Show session summary
72 println!("\nExample 3: Session Summary");
73 println!("==========================\n");
74
75 println!("{}", agent.get_session_summary());
76
77 // Example 4: Check session memory
78 println!("\nExample 4: Checking Session Memory");
79 println!("===================================\n");
80
81 println!("Working directory: {}", agent.get_memory("working_directory").unwrap_or(&"unknown".to_string()));
82 println!("Tasks completed: {}", agent.get_memory("tasks_completed").unwrap_or(&"0".to_string()));
83 println!("Last task: {}", agent.get_memory("last_task").unwrap_or(&"none".to_string()));
84
85 println!("\n✅ Example completed successfully!");
86 println!("\n💡 Key Features Demonstrated:");
87 println!(" • File search with pattern matching and content search");
88 println!(" • File reading with line range support");
89 println!(" • File editing with find/replace functionality");
90 println!(" • Session memory for tracking agent state");
91 println!(" • Streaming responses (works with both local and remote models)");
92
93 Ok(())
94}examples/agent_with_memory_db.rs (line 32)
11async fn main() -> helios_engine::Result<()> {
12 println!("🚀 Helios Engine - Agent with Memory DB Example");
13 println!("================================================\n");
14
15 // Load configuration
16 let config = Config::from_file("config.toml").unwrap_or_else(|_| {
17 println!("⚠ No config.toml found, using default configuration");
18 Config::new_default()
19 });
20
21 // Create agent with memory database tool
22 let mut agent = Agent::builder("DataAgent")
23 .config(config)
24 .system_prompt(
25 "You are a helpful assistant with access to an in-memory database. \
26 You can store and retrieve information using the memory_db tool. \
27 Operations available: set, get, delete, list, clear, exists. \
28 Use this to remember important information across our conversation."
29 )
30 .tool(Box::new(MemoryDBTool::new()))
31 .max_iterations(10)
32 .build()
33 .await?;
34
35 println!("✓ Agent created with memory database tool\n");
36
37 // Example 1: Store user preferences
38 println!("Example 1: Storing User Preferences");
39 println!("====================================\n");
40
41 let response = agent
42 .chat("Store my name as 'Alice' and my favorite color as 'blue' in the database")
43 .await?;
44 println!("Agent: {}\n", response);
45
46 // Example 2: Retrieve stored data
47 println!("\nExample 2: Retrieving Stored Data");
48 println!("==================================\n");
49
50 let response = agent
51 .chat("What's my name and favorite color?")
52 .await?;
53 println!("Agent: {}\n", response);
54
55 // Example 3: Store calculations
56 println!("\nExample 3: Caching Calculations");
57 println!("================================\n");
58
59 let response = agent
60 .chat("Calculate 123 * 456 and store the result in the database with key 'calculation_result'")
61 .await?;
62 println!("Agent: {}\n", response);
63
64 // Example 4: List all stored data
65 println!("\nExample 4: Listing All Data");
66 println!("===========================\n");
67
68 let response = agent
69 .chat("Show me everything stored in the database")
70 .await?;
71 println!("Agent: {}\n", response);
72
73 // Example 5: Check if key exists
74 println!("\nExample 5: Checking Key Existence");
75 println!("==================================\n");
76
77 let response = agent
78 .chat("Check if 'name' and 'age' exist in the database")
79 .await?;
80 println!("Agent: {}\n", response);
81
82 // Example 6: Delete specific data
83 println!("\nExample 6: Deleting Data");
84 println!("========================\n");
85
86 let response = agent
87 .chat("Delete the 'calculation_result' from the database")
88 .await?;
89 println!("Agent: {}\n", response);
90
91 // Example 7: Final state
92 println!("\nExample 7: Final Database State");
93 println!("================================\n");
94
95 let response = agent
96 .chat("List all remaining items in the database")
97 .await?;
98 println!("Agent: {}\n", response);
99
100 println!("\n✅ Example completed successfully!");
101 println!("\n💡 Key Features Demonstrated:");
102 println!(" • Setting key-value pairs in memory database");
103 println!(" • Retrieving stored values");
104 println!(" • Listing all database contents");
105 println!(" • Checking key existence");
106 println!(" • Deleting specific entries");
107 println!(" • Persistent data across multiple agent interactions");
108 println!("\n📝 Use Cases:");
109 println!(" • Caching expensive computations");
110 println!(" • Storing user preferences during conversation");
111 println!(" • Maintaining context across multiple queries");
112 println!(" • Temporary data storage for complex workflows");
113
114 Ok(())
115}Additional examples can be found in:
Auto Trait Implementations§
impl Freeze for AgentBuilder
impl !RefUnwindSafe for AgentBuilder
impl Send for AgentBuilder
impl Sync for AgentBuilder
impl Unpin for AgentBuilder
impl !UnwindSafe for AgentBuilder
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more