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