agent_with_rag/
agent_with_rag.rs1use helios_engine::{Agent, Config, QdrantRAGTool};
21
22#[tokio::main]
23async fn main() -> helios_engine::Result<()> {
24 println!("š Helios Engine - Agent with RAG Example");
25 println!("==========================================\n");
26
27 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 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 let rag_tool = QdrantRAGTool::new(
41 "http://localhost:6333", "helios_knowledge", "https://api.openai.com/v1/embeddings", embedding_api_key, );
46
47 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 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 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 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 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=2025",
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}