agent_with_rag/
agent_with_rag.rs1use helios_engine::{Agent, Config, QdrantRAGTool};
13
14#[tokio::main]
15async fn main() -> helios_engine::Result<()> {
16 println!("š Helios Engine - Agent with RAG Example");
17 println!("==========================================\n");
18
19 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 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 let rag_tool = QdrantRAGTool::new(
34 "http://localhost:6333", "helios_knowledge", "https://api.openai.com/v1/embeddings", embedding_api_key, );
39
40 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 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 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 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 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}