rcrewai 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/CHANGELOG.md +108 -0
- data/LICENSE +21 -0
- data/README.md +328 -0
- data/Rakefile +130 -0
- data/bin/rcrewai +7 -0
- data/docs/_config.yml +59 -0
- data/docs/_layouts/api.html +16 -0
- data/docs/_layouts/default.html +78 -0
- data/docs/_layouts/example.html +24 -0
- data/docs/_layouts/tutorial.html +33 -0
- data/docs/api/configuration.md +327 -0
- data/docs/api/crew.md +345 -0
- data/docs/api/index.md +41 -0
- data/docs/api/tools.md +412 -0
- data/docs/assets/css/style.css +416 -0
- data/docs/examples/human-in-the-loop.md +382 -0
- data/docs/examples/index.md +78 -0
- data/docs/examples/production-ready-crew.md +485 -0
- data/docs/examples/simple-research-crew.md +297 -0
- data/docs/index.md +353 -0
- data/docs/tutorials/getting-started.md +341 -0
- data/examples/async_execution_example.rb +294 -0
- data/examples/hierarchical_crew_example.rb +193 -0
- data/examples/human_in_the_loop_example.rb +233 -0
- data/lib/rcrewai/agent.rb +636 -0
- data/lib/rcrewai/async_executor.rb +248 -0
- data/lib/rcrewai/cli.rb +39 -0
- data/lib/rcrewai/configuration.rb +100 -0
- data/lib/rcrewai/crew.rb +292 -0
- data/lib/rcrewai/human_input.rb +520 -0
- data/lib/rcrewai/llm_client.rb +41 -0
- data/lib/rcrewai/llm_clients/anthropic.rb +127 -0
- data/lib/rcrewai/llm_clients/azure.rb +158 -0
- data/lib/rcrewai/llm_clients/base.rb +82 -0
- data/lib/rcrewai/llm_clients/google.rb +158 -0
- data/lib/rcrewai/llm_clients/ollama.rb +199 -0
- data/lib/rcrewai/llm_clients/openai.rb +124 -0
- data/lib/rcrewai/memory.rb +194 -0
- data/lib/rcrewai/process.rb +421 -0
- data/lib/rcrewai/task.rb +376 -0
- data/lib/rcrewai/tools/base.rb +82 -0
- data/lib/rcrewai/tools/code_executor.rb +333 -0
- data/lib/rcrewai/tools/email_sender.rb +210 -0
- data/lib/rcrewai/tools/file_reader.rb +111 -0
- data/lib/rcrewai/tools/file_writer.rb +115 -0
- data/lib/rcrewai/tools/pdf_processor.rb +342 -0
- data/lib/rcrewai/tools/sql_database.rb +226 -0
- data/lib/rcrewai/tools/web_search.rb +131 -0
- data/lib/rcrewai/version.rb +5 -0
- data/lib/rcrewai.rb +36 -0
- data/rcrewai.gemspec +54 -0
- metadata +365 -0
@@ -0,0 +1,297 @@
|
|
1
|
+
---
|
2
|
+
layout: example
|
3
|
+
title: Simple Research Crew
|
4
|
+
description: A basic research crew example with researcher and writer agents
|
5
|
+
---
|
6
|
+
|
7
|
+
# Simple Research Crew
|
8
|
+
|
9
|
+
This example demonstrates how to create a basic research crew with two agents: a researcher who gathers information and a writer who creates content based on that research.
|
10
|
+
|
11
|
+
## Overview
|
12
|
+
|
13
|
+
We'll create a crew that:
|
14
|
+
1. Researches a given topic
|
15
|
+
2. Writes an informative article based on the research
|
16
|
+
3. Returns both the research findings and the final article
|
17
|
+
|
18
|
+
## Complete Code
|
19
|
+
|
20
|
+
```ruby
|
21
|
+
require 'rcrewai'
|
22
|
+
|
23
|
+
# Configure RCrewAI - supports multiple providers
|
24
|
+
RCrewAI.configure do |config|
|
25
|
+
config.llm_provider = :openai # or :anthropic, :google, :azure
|
26
|
+
# API keys are loaded automatically from environment variables
|
27
|
+
config.openai_model = 'gpt-4' # or 'gpt-3.5-turbo' for lower cost
|
28
|
+
config.temperature = 0.1 # Lower = more consistent, Higher = more creative
|
29
|
+
end
|
30
|
+
|
31
|
+
# Create the crew
|
32
|
+
research_crew = RCrewAI::Crew.new("research_crew")
|
33
|
+
|
34
|
+
# Define the research agent
|
35
|
+
researcher = RCrewAI::Agent.new(
|
36
|
+
name: "senior_researcher",
|
37
|
+
role: "Senior Research Analyst",
|
38
|
+
goal: "Uncover cutting-edge developments in AI and technology",
|
39
|
+
backstory: "You work at a leading tech think tank. Your expertise lies in identifying emerging trends in AI and technology. You have a knack for dissecting complex topics and presenting clear insights.",
|
40
|
+
verbose: true,
|
41
|
+
allow_delegation: false
|
42
|
+
)
|
43
|
+
|
44
|
+
# Define the writer agent
|
45
|
+
writer = RCrewAI::Agent.new(
|
46
|
+
name: "tech_writer",
|
47
|
+
role: "Tech Content Strategist",
|
48
|
+
goal: "Craft compelling content on tech advancements",
|
49
|
+
backstory: "You are a renowned Content Strategist, known for your insightful and engaging articles on technology and innovation. With a deep understanding of the tech industry, you transform complex concepts into compelling narratives.",
|
50
|
+
verbose: true,
|
51
|
+
allow_delegation: true
|
52
|
+
)
|
53
|
+
|
54
|
+
# Add agents to the crew
|
55
|
+
research_crew.add_agent(researcher)
|
56
|
+
research_crew.add_agent(writer)
|
57
|
+
|
58
|
+
# Define the research task
|
59
|
+
research_task = RCrewAI::Task.new(
|
60
|
+
name: "research_ai_advancements",
|
61
|
+
description: "Conduct a comprehensive analysis of the latest advancements in AI in 2024. Identify key trends, breakthrough technologies, and their potential impact on various industries. Your final report should be detailed and well-structured.",
|
62
|
+
agent: researcher,
|
63
|
+
expected_output: "A comprehensive research report with key findings, trends, and implications of AI advancements in 2024"
|
64
|
+
)
|
65
|
+
|
66
|
+
# Define the writing task
|
67
|
+
writing_task = RCrewAI::Task.new(
|
68
|
+
name: "write_ai_article",
|
69
|
+
description: "Using the research provided, write a compelling blog article about the latest AI advancements. Make it engaging but informative, suitable for a tech-savvy audience. Include an introduction, main content with key points, and a conclusion.",
|
70
|
+
agent: writer,
|
71
|
+
expected_output: "A well-written, engaging blog article about AI advancements (800-1000 words)",
|
72
|
+
context: [research_task] # This task depends on the research task
|
73
|
+
)
|
74
|
+
|
75
|
+
# Add tasks to the crew
|
76
|
+
research_crew.add_task(research_task)
|
77
|
+
research_crew.add_task(writing_task)
|
78
|
+
|
79
|
+
# Execute the crew
|
80
|
+
puts "Starting research crew execution..."
|
81
|
+
results = research_crew.execute
|
82
|
+
|
83
|
+
# Display results
|
84
|
+
puts "\n" + "="*50
|
85
|
+
puts "RESEARCH RESULTS:"
|
86
|
+
puts "="*50
|
87
|
+
puts research_task.result
|
88
|
+
|
89
|
+
puts "\n" + "="*50
|
90
|
+
puts "FINAL ARTICLE:"
|
91
|
+
puts "="*50
|
92
|
+
puts writing_task.result
|
93
|
+
|
94
|
+
# Optional: Save results to files
|
95
|
+
File.write("research_findings.md", research_task.result)
|
96
|
+
File.write("ai_article.md", writing_task.result)
|
97
|
+
|
98
|
+
puts "\nResults saved to research_findings.md and ai_article.md"
|
99
|
+
```
|
100
|
+
|
101
|
+
## Step-by-Step Explanation
|
102
|
+
|
103
|
+
### 1. Setup and Configuration
|
104
|
+
|
105
|
+
```ruby
|
106
|
+
require 'rcrewai'
|
107
|
+
|
108
|
+
RCrewAI.configure do |config|
|
109
|
+
config.llm_provider = :openai
|
110
|
+
config.api_key = ENV['OPENAI_API_KEY']
|
111
|
+
config.model = 'gpt-4'
|
112
|
+
end
|
113
|
+
```
|
114
|
+
|
115
|
+
First, we require the RCrewAI gem and configure it with our LLM provider. The API key should be stored in an environment variable for security.
|
116
|
+
|
117
|
+
### 2. Create the Crew
|
118
|
+
|
119
|
+
```ruby
|
120
|
+
research_crew = RCrewAI::Crew.new("research_crew")
|
121
|
+
```
|
122
|
+
|
123
|
+
We create a new crew instance that will coordinate our agents and tasks.
|
124
|
+
|
125
|
+
### 3. Define Agents
|
126
|
+
|
127
|
+
#### Research Agent
|
128
|
+
```ruby
|
129
|
+
researcher = RCrewAI::Agent.new(
|
130
|
+
name: "senior_researcher",
|
131
|
+
role: "Senior Research Analyst",
|
132
|
+
goal: "Uncover cutting-edge developments in AI and technology",
|
133
|
+
backstory: "You work at a leading tech think tank...",
|
134
|
+
verbose: true,
|
135
|
+
allow_delegation: false
|
136
|
+
)
|
137
|
+
```
|
138
|
+
|
139
|
+
The researcher agent is designed to gather and analyze information. Key attributes:
|
140
|
+
- **Role**: Defines what the agent does
|
141
|
+
- **Goal**: Specific objective for the agent
|
142
|
+
- **Backstory**: Provides context that influences the agent's behavior
|
143
|
+
- **verbose**: Enables detailed logging
|
144
|
+
- **allow_delegation**: Controls whether this agent can delegate tasks
|
145
|
+
|
146
|
+
#### Writer Agent
|
147
|
+
```ruby
|
148
|
+
writer = RCrewAI::Agent.new(
|
149
|
+
name: "tech_writer",
|
150
|
+
role: "Tech Content Strategist",
|
151
|
+
goal: "Craft compelling content on tech advancements",
|
152
|
+
backstory: "You are a renowned Content Strategist...",
|
153
|
+
verbose: true,
|
154
|
+
allow_delegation: true
|
155
|
+
)
|
156
|
+
```
|
157
|
+
|
158
|
+
The writer transforms research into engaging content.
|
159
|
+
|
160
|
+
### 4. Define Tasks
|
161
|
+
|
162
|
+
#### Research Task
|
163
|
+
```ruby
|
164
|
+
research_task = RCrewAI::Task.new(
|
165
|
+
name: "research_ai_advancements",
|
166
|
+
description: "Conduct a comprehensive analysis...",
|
167
|
+
agent: researcher,
|
168
|
+
expected_output: "A comprehensive research report..."
|
169
|
+
)
|
170
|
+
```
|
171
|
+
|
172
|
+
Tasks define what work needs to be done. The `expected_output` helps guide the agent's work quality.
|
173
|
+
|
174
|
+
#### Writing Task
|
175
|
+
```ruby
|
176
|
+
writing_task = RCrewAI::Task.new(
|
177
|
+
name: "write_ai_article",
|
178
|
+
description: "Using the research provided...",
|
179
|
+
agent: writer,
|
180
|
+
expected_output: "A well-written, engaging blog article...",
|
181
|
+
context: [research_task] # Dependencies
|
182
|
+
)
|
183
|
+
```
|
184
|
+
|
185
|
+
The `context` parameter creates dependencies - the writing task will have access to the research task's results.
|
186
|
+
|
187
|
+
### 5. Execute and Handle Results
|
188
|
+
|
189
|
+
```ruby
|
190
|
+
results = research_crew.execute
|
191
|
+
|
192
|
+
puts research_task.result
|
193
|
+
puts writing_task.result
|
194
|
+
```
|
195
|
+
|
196
|
+
The crew executes tasks in order, respecting dependencies. Results are accessible through each task's `result` attribute.
|
197
|
+
|
198
|
+
## Running the Example
|
199
|
+
|
200
|
+
1. **Install dependencies:**
|
201
|
+
```bash
|
202
|
+
bundle install
|
203
|
+
```
|
204
|
+
|
205
|
+
2. **Set environment variables (choose your provider):**
|
206
|
+
```bash
|
207
|
+
# OpenAI
|
208
|
+
export OPENAI_API_KEY="your-openai-key"
|
209
|
+
|
210
|
+
# Or Anthropic
|
211
|
+
export ANTHROPIC_API_KEY="your-anthropic-key"
|
212
|
+
|
213
|
+
# Or Google
|
214
|
+
export GOOGLE_API_KEY="your-google-key"
|
215
|
+
|
216
|
+
# Or Azure
|
217
|
+
export AZURE_OPENAI_API_KEY="your-azure-key"
|
218
|
+
```
|
219
|
+
|
220
|
+
3. **Run the script:**
|
221
|
+
```bash
|
222
|
+
ruby research_crew_example.rb
|
223
|
+
```
|
224
|
+
|
225
|
+
## Expected Output
|
226
|
+
|
227
|
+
The script will produce:
|
228
|
+
- Research findings about AI advancements
|
229
|
+
- A well-structured blog article based on the research
|
230
|
+
- Saved files with the results
|
231
|
+
|
232
|
+
## Customization Options
|
233
|
+
|
234
|
+
### Different Topics
|
235
|
+
Change the task descriptions to research different topics:
|
236
|
+
|
237
|
+
```ruby
|
238
|
+
research_task = RCrewAI::Task.new(
|
239
|
+
name: "research_blockchain",
|
240
|
+
description: "Research the latest developments in blockchain technology...",
|
241
|
+
# ... rest of configuration
|
242
|
+
)
|
243
|
+
```
|
244
|
+
|
245
|
+
### Adding Tools
|
246
|
+
Equip agents with tools for enhanced capabilities:
|
247
|
+
|
248
|
+
```ruby
|
249
|
+
web_search_tool = RCrewAI::Tools::WebSearch.new
|
250
|
+
|
251
|
+
researcher = RCrewAI::Agent.new(
|
252
|
+
name: "senior_researcher",
|
253
|
+
# ... other config
|
254
|
+
tools: [web_search_tool]
|
255
|
+
)
|
256
|
+
```
|
257
|
+
|
258
|
+
### Multiple Output Formats
|
259
|
+
Create additional tasks for different output formats:
|
260
|
+
|
261
|
+
```ruby
|
262
|
+
# Add a summarizer agent
|
263
|
+
summarizer = RCrewAI::Agent.new(
|
264
|
+
name: "content_summarizer",
|
265
|
+
role: "Content Summarizer",
|
266
|
+
goal: "Create concise summaries"
|
267
|
+
)
|
268
|
+
|
269
|
+
# Summary task
|
270
|
+
summary_task = RCrewAI::Task.new(
|
271
|
+
name: "create_summary",
|
272
|
+
description: "Create a 200-word summary of the research and article",
|
273
|
+
agent: summarizer,
|
274
|
+
context: [research_task, writing_task]
|
275
|
+
)
|
276
|
+
```
|
277
|
+
|
278
|
+
## Troubleshooting
|
279
|
+
|
280
|
+
### Common Issues
|
281
|
+
|
282
|
+
1. **API Key Issues**: Ensure your OpenAI API key is correctly set
|
283
|
+
2. **Agent Confusion**: Make sure agent roles and goals are specific and clear
|
284
|
+
3. **Task Dependencies**: Verify that dependent tasks are added to the crew before dependent tasks
|
285
|
+
|
286
|
+
### Debugging Tips
|
287
|
+
|
288
|
+
- Set `verbose: true` on agents to see detailed execution logs
|
289
|
+
- Use `crew.verbose = true` for crew-level logging
|
290
|
+
- Check individual task results with `task.result` after execution
|
291
|
+
|
292
|
+
## Next Steps
|
293
|
+
|
294
|
+
- Try modifying the agent roles and backstories
|
295
|
+
- Add more agents for specialized tasks (fact-checker, SEO optimizer)
|
296
|
+
- Experiment with different task dependencies
|
297
|
+
- Add custom tools for specific capabilities
|
data/docs/index.md
ADDED
@@ -0,0 +1,353 @@
|
|
1
|
+
---
|
2
|
+
layout: default
|
3
|
+
title: RCrewAI - Build AI Agent Crews in Ruby
|
4
|
+
---
|
5
|
+
|
6
|
+
# RCrewAI
|
7
|
+
|
8
|
+
Build powerful AI agent crews in Ruby that work together to accomplish complex tasks.
|
9
|
+
|
10
|
+
<div class="hero-section">
|
11
|
+
<p class="lead">RCrewAI is a Ruby implementation of the CrewAI framework, allowing you to create autonomous AI agents that collaborate to solve problems and complete tasks.</p>
|
12
|
+
|
13
|
+
<div class="cta-buttons">
|
14
|
+
<a href="{{ site.baseurl }}/tutorials/getting-started" class="btn btn-primary">Get Started</a>
|
15
|
+
<a href="https://github.com/gkosmo/rcrewAI" class="btn btn-secondary">View on GitHub</a>
|
16
|
+
</div>
|
17
|
+
</div>
|
18
|
+
|
19
|
+
## Features
|
20
|
+
|
21
|
+
- **🤖 Intelligent Agents**: AI agents with reasoning loops, memory, and tool usage capabilities
|
22
|
+
- **🔗 Multi-LLM Support**: OpenAI, Anthropic (Claude), Google (Gemini), Azure OpenAI, and Ollama
|
23
|
+
- **🛠️ Rich Tool Ecosystem**: Web search, file operations, SQL, email, code execution, PDF processing, and custom tools
|
24
|
+
- **🧠 Agent Memory**: Short-term and long-term memory for learning from past executions
|
25
|
+
- **🤝 Human-in-the-Loop**: Interactive approval workflows, human guidance, and collaborative decision making
|
26
|
+
- **⚡ Advanced Task System**: Dependencies, retries, async/concurrent execution, and context sharing
|
27
|
+
- **🏗️ Hierarchical Teams**: Manager agents that coordinate and delegate tasks to specialist agents
|
28
|
+
- **🔒 Production Ready**: Security controls, error handling, logging, monitoring, and sandboxing
|
29
|
+
- **🎯 Flexible Orchestration**: Sequential, hierarchical, and concurrent execution modes
|
30
|
+
- **💎 Ruby-First Design**: Built specifically for Ruby developers with idiomatic patterns
|
31
|
+
|
32
|
+
## Quick Start
|
33
|
+
|
34
|
+
### Basic Agent Collaboration
|
35
|
+
|
36
|
+
```ruby
|
37
|
+
require 'rcrewai'
|
38
|
+
|
39
|
+
# Configure your LLM provider
|
40
|
+
RCrewAI.configure do |config|
|
41
|
+
config.llm_provider = :openai # or :anthropic, :google, :azure, :ollama
|
42
|
+
config.temperature = 0.1
|
43
|
+
end
|
44
|
+
|
45
|
+
# Create intelligent agents with specialized tools
|
46
|
+
researcher = RCrewAI::Agent.new(
|
47
|
+
name: "researcher",
|
48
|
+
role: "Senior Research Analyst",
|
49
|
+
goal: "Uncover cutting-edge developments in AI",
|
50
|
+
backstory: "Expert at finding and analyzing the latest tech trends",
|
51
|
+
tools: [RCrewAI::Tools::WebSearch.new],
|
52
|
+
verbose: true
|
53
|
+
)
|
54
|
+
|
55
|
+
writer = RCrewAI::Agent.new(
|
56
|
+
name: "writer",
|
57
|
+
role: "Tech Content Strategist",
|
58
|
+
goal: "Create compelling technical content",
|
59
|
+
backstory: "Skilled at transforming research into engaging articles",
|
60
|
+
tools: [RCrewAI::Tools::FileWriter.new]
|
61
|
+
)
|
62
|
+
|
63
|
+
# Create crew with sequential process
|
64
|
+
crew = RCrewAI::Crew.new("ai_research_crew")
|
65
|
+
crew.add_agent(researcher)
|
66
|
+
crew.add_agent(writer)
|
67
|
+
|
68
|
+
# Define tasks with dependencies
|
69
|
+
research_task = RCrewAI::Task.new(
|
70
|
+
name: "research_ai_trends",
|
71
|
+
description: "Research the latest developments in AI for 2024",
|
72
|
+
agent: researcher,
|
73
|
+
expected_output: "Comprehensive report on AI trends with key insights"
|
74
|
+
)
|
75
|
+
|
76
|
+
writing_task = RCrewAI::Task.new(
|
77
|
+
name: "write_article",
|
78
|
+
description: "Write an engaging 1000-word article about AI trends",
|
79
|
+
agent: writer,
|
80
|
+
context: [research_task], # Uses research results as context
|
81
|
+
expected_output: "Publication-ready article saved as ai_trends.md"
|
82
|
+
)
|
83
|
+
|
84
|
+
crew.add_task(research_task)
|
85
|
+
crew.add_task(writing_task)
|
86
|
+
|
87
|
+
# Execute - agents will reason, search, and produce real results!
|
88
|
+
results = crew.execute
|
89
|
+
puts "✅ Crew completed #{results[:completed_tasks]}/#{results[:total_tasks]} tasks"
|
90
|
+
```
|
91
|
+
|
92
|
+
### Advanced: Hierarchical Team with Human Oversight
|
93
|
+
|
94
|
+
```ruby
|
95
|
+
# Create a hierarchical crew with manager coordination
|
96
|
+
crew = RCrewAI::Crew.new("enterprise_team", process: :hierarchical)
|
97
|
+
|
98
|
+
# Manager agent coordinates the team
|
99
|
+
manager = RCrewAI::Agent.new(
|
100
|
+
name: "project_manager",
|
101
|
+
role: "Senior Project Manager",
|
102
|
+
goal: "Coordinate team execution efficiently",
|
103
|
+
backstory: "Experienced manager with expertise in AI project coordination",
|
104
|
+
manager: true,
|
105
|
+
allow_delegation: true,
|
106
|
+
verbose: true
|
107
|
+
)
|
108
|
+
|
109
|
+
# Specialist agents with human-in-the-loop capabilities
|
110
|
+
data_analyst = RCrewAI::Agent.new(
|
111
|
+
name: "data_analyst",
|
112
|
+
role: "Senior Data Analyst",
|
113
|
+
goal: "Analyze data with human validation",
|
114
|
+
backstory: "Expert at extracting insights from complex datasets",
|
115
|
+
tools: [RCrewAI::Tools::SqlDatabase.new, RCrewAI::Tools::FileWriter.new],
|
116
|
+
human_input: true, # Enable human interaction
|
117
|
+
require_approval_for_tools: true, # Human approves SQL queries
|
118
|
+
require_approval_for_final_answer: true # Human validates analysis
|
119
|
+
)
|
120
|
+
|
121
|
+
# Add agents to hierarchical crew
|
122
|
+
crew.add_agent(manager)
|
123
|
+
crew.add_agent(data_analyst)
|
124
|
+
crew.add_agent(researcher)
|
125
|
+
|
126
|
+
# Tasks with different execution modes
|
127
|
+
analysis_task = RCrewAI::Task.new(
|
128
|
+
name: "customer_analysis",
|
129
|
+
description: "Analyze customer behavior patterns from database",
|
130
|
+
expected_output: "Customer segmentation analysis with actionable insights",
|
131
|
+
human_input: true,
|
132
|
+
require_confirmation: true, # Human confirms before starting
|
133
|
+
async: true # Can run concurrently
|
134
|
+
)
|
135
|
+
|
136
|
+
research_task = RCrewAI::Task.new(
|
137
|
+
name: "market_research",
|
138
|
+
description: "Research competitive landscape",
|
139
|
+
expected_output: "Competitive analysis report",
|
140
|
+
async: true
|
141
|
+
)
|
142
|
+
|
143
|
+
crew.add_task(analysis_task)
|
144
|
+
crew.add_task(research_task)
|
145
|
+
|
146
|
+
# Execute with async/hierarchical coordination
|
147
|
+
results = crew.execute(async: true, max_concurrency: 2)
|
148
|
+
puts "🚀 Hierarchical execution completed with #{results[:success_rate]}% success rate"
|
149
|
+
```
|
150
|
+
|
151
|
+
## Installation
|
152
|
+
|
153
|
+
Add this line to your application's Gemfile:
|
154
|
+
|
155
|
+
```ruby
|
156
|
+
gem 'rcrewai'
|
157
|
+
```
|
158
|
+
|
159
|
+
And then execute:
|
160
|
+
|
161
|
+
```bash
|
162
|
+
$ bundle install
|
163
|
+
```
|
164
|
+
|
165
|
+
Or install it yourself as:
|
166
|
+
|
167
|
+
```bash
|
168
|
+
$ gem install rcrewai
|
169
|
+
```
|
170
|
+
|
171
|
+
## CLI Usage
|
172
|
+
|
173
|
+
RCrewAI includes a powerful CLI for managing your AI crews:
|
174
|
+
|
175
|
+
```bash
|
176
|
+
# Create a new crew with different process types
|
177
|
+
$ rcrewai new my_research_crew --process sequential
|
178
|
+
$ rcrewai new enterprise_team --process hierarchical
|
179
|
+
|
180
|
+
# List available crews and agents
|
181
|
+
$ rcrewai list
|
182
|
+
$ rcrewai agents list
|
183
|
+
|
184
|
+
# Create agents with advanced capabilities
|
185
|
+
$ rcrewai agent new researcher \
|
186
|
+
--role "Senior Research Analyst" \
|
187
|
+
--goal "Find cutting-edge AI information" \
|
188
|
+
--backstory "Expert researcher with 10 years experience" \
|
189
|
+
--tools web_search,file_writer \
|
190
|
+
--verbose \
|
191
|
+
--human-input
|
192
|
+
|
193
|
+
# Create manager agents for hierarchical crews
|
194
|
+
$ rcrewai agent new project_manager \
|
195
|
+
--role "Project Coordinator" \
|
196
|
+
--goal "Coordinate team execution" \
|
197
|
+
--manager \
|
198
|
+
--allow-delegation
|
199
|
+
|
200
|
+
# Create tasks with dependencies and human interaction
|
201
|
+
$ rcrewai task new research \
|
202
|
+
--description "Research latest AI developments" \
|
203
|
+
--expected-output "Comprehensive AI research report" \
|
204
|
+
--agent researcher \
|
205
|
+
--async \
|
206
|
+
--human-input \
|
207
|
+
--require-confirmation
|
208
|
+
|
209
|
+
# Run crews with different execution modes
|
210
|
+
$ rcrewai run --crew my_research_crew
|
211
|
+
$ rcrewai run --crew enterprise_team --async --max-concurrency 4
|
212
|
+
|
213
|
+
# Check crew status and results
|
214
|
+
$ rcrewai status --crew my_research_crew
|
215
|
+
$ rcrewai results --crew my_research_crew --task research
|
216
|
+
```
|
217
|
+
|
218
|
+
## Key Capabilities
|
219
|
+
|
220
|
+
### 🧠 **Advanced Agent Intelligence**
|
221
|
+
Agents use sophisticated reasoning with your chosen LLM provider:
|
222
|
+
- **Multi-step Reasoning**: Complex problem decomposition and solving
|
223
|
+
- **Tool Selection**: Intelligent tool usage based on task requirements
|
224
|
+
- **Context Awareness**: Memory-driven decision making from past executions
|
225
|
+
- **Learning Capability**: Short-term and long-term memory systems
|
226
|
+
|
227
|
+
### 🛠️ **Comprehensive Tool Ecosystem**
|
228
|
+
Production-ready tools for real-world tasks:
|
229
|
+
- **Web Search**: DuckDuckGo integration for research and information gathering
|
230
|
+
- **File Operations**: Read/write files with security controls and validation
|
231
|
+
- **SQL Database**: Secure database querying with connection management
|
232
|
+
- **Email Integration**: SMTP email sending with attachment support
|
233
|
+
- **Code Execution**: Sandboxed code execution environment
|
234
|
+
- **PDF Processing**: Text extraction and document processing
|
235
|
+
- **Custom Tools**: Extensible framework for building specialized tools
|
236
|
+
|
237
|
+
### 🤝 **Human-in-the-Loop Integration**
|
238
|
+
Seamless human-AI collaboration for critical workflows:
|
239
|
+
- **Interactive Approval**: Human confirmation for sensitive operations
|
240
|
+
- **Real-time Guidance**: Human input during agent reasoning processes
|
241
|
+
- **Task Confirmation**: Human approval before executing critical tasks
|
242
|
+
- **Result Validation**: Human review and revision of agent outputs
|
243
|
+
- **Error Recovery**: Human intervention when agents encounter failures
|
244
|
+
- **Strategic Input**: Human guidance for complex decision making
|
245
|
+
|
246
|
+
### 🏗️ **Enterprise-Grade Orchestration**
|
247
|
+
Sophisticated coordination patterns for complex workflows:
|
248
|
+
- **Hierarchical Teams**: Manager agents coordinate and delegate to specialists
|
249
|
+
- **Async Execution**: Parallel task processing with intelligent dependency management
|
250
|
+
- **Delegation Systems**: Automatic task assignment based on agent capabilities
|
251
|
+
- **Process Types**: Sequential, hierarchical, and consensual execution modes
|
252
|
+
- **Cross-Agent Communication**: Context sharing and collaborative problem solving
|
253
|
+
|
254
|
+
### ⚡ **Advanced Task Management**
|
255
|
+
Powerful task system with production features:
|
256
|
+
- **Smart Dependencies**: Tasks automatically wait for prerequisite completion
|
257
|
+
- **Context Propagation**: Results flow seamlessly between dependent tasks
|
258
|
+
- **Retry Logic**: Exponential backoff with configurable retry strategies
|
259
|
+
- **Concurrent Execution**: Multi-threaded execution with resource management
|
260
|
+
- **Task Monitoring**: Real-time progress tracking and performance metrics
|
261
|
+
|
262
|
+
### 🔒 **Production-Ready Architecture**
|
263
|
+
Built for enterprise deployment and reliability:
|
264
|
+
- **Security**: Sandboxing, access controls, input sanitization
|
265
|
+
- **Monitoring**: Comprehensive logging, metrics, and observability
|
266
|
+
- **Error Handling**: Graceful failure recovery and detailed error reporting
|
267
|
+
- **Resource Management**: Memory optimization, connection pooling
|
268
|
+
- **Configuration**: Flexible configuration with environment variable support
|
269
|
+
|
270
|
+
## LLM Provider Support
|
271
|
+
|
272
|
+
RCrewAI works with all major LLM providers through a unified interface:
|
273
|
+
|
274
|
+
```ruby
|
275
|
+
# OpenAI (GPT-4, GPT-3.5, etc.)
|
276
|
+
RCrewAI.configure do |config|
|
277
|
+
config.llm_provider = :openai
|
278
|
+
config.openai_api_key = ENV['OPENAI_API_KEY']
|
279
|
+
config.model = 'gpt-4'
|
280
|
+
config.temperature = 0.1
|
281
|
+
end
|
282
|
+
|
283
|
+
# Anthropic Claude
|
284
|
+
RCrewAI.configure do |config|
|
285
|
+
config.llm_provider = :anthropic
|
286
|
+
config.anthropic_api_key = ENV['ANTHROPIC_API_KEY']
|
287
|
+
config.model = 'claude-3-sonnet-20240229'
|
288
|
+
end
|
289
|
+
|
290
|
+
# Google Gemini
|
291
|
+
RCrewAI.configure do |config|
|
292
|
+
config.llm_provider = :google
|
293
|
+
config.google_api_key = ENV['GOOGLE_API_KEY']
|
294
|
+
config.model = 'gemini-pro'
|
295
|
+
end
|
296
|
+
|
297
|
+
# Azure OpenAI
|
298
|
+
RCrewAI.configure do |config|
|
299
|
+
config.llm_provider = :azure
|
300
|
+
config.azure_api_key = ENV['AZURE_OPENAI_API_KEY']
|
301
|
+
config.azure_endpoint = ENV['AZURE_OPENAI_ENDPOINT']
|
302
|
+
config.model = 'gpt-4'
|
303
|
+
end
|
304
|
+
|
305
|
+
# Local Ollama
|
306
|
+
RCrewAI.configure do |config|
|
307
|
+
config.llm_provider = :ollama
|
308
|
+
config.ollama_url = 'http://localhost:11434'
|
309
|
+
config.model = 'llama2'
|
310
|
+
end
|
311
|
+
```
|
312
|
+
|
313
|
+
## Use Cases
|
314
|
+
|
315
|
+
RCrewAI excels in scenarios requiring:
|
316
|
+
|
317
|
+
- **🔍 Research & Analysis**: Multi-source research with data correlation and insight generation
|
318
|
+
- **📝 Content Creation**: Collaborative content development with research, writing, and editing
|
319
|
+
- **🏢 Business Intelligence**: Data analysis, report generation, and strategic planning
|
320
|
+
- **🛠️ Development Workflows**: Code analysis, documentation, and quality assurance
|
321
|
+
- **📊 Data Processing**: ETL workflows with validation and transformation
|
322
|
+
- **🤖 Customer Support**: Intelligent routing, response generation, and escalation
|
323
|
+
- **🎯 Decision Making**: Multi-criteria analysis with human oversight and approval
|
324
|
+
|
325
|
+
## Learn More
|
326
|
+
|
327
|
+
<div class="feature-grid">
|
328
|
+
<div class="feature-card">
|
329
|
+
<h3>📚 Tutorials</h3>
|
330
|
+
<p>Step-by-step guides to get you started with RCrewAI</p>
|
331
|
+
<a href="{{ site.baseurl }}/tutorials/">View Tutorials →</a>
|
332
|
+
</div>
|
333
|
+
|
334
|
+
<div class="feature-card">
|
335
|
+
<h3>📖 API Reference</h3>
|
336
|
+
<p>Complete documentation of all classes and methods</p>
|
337
|
+
<a href="{{ site.baseurl }}/api/">API Docs →</a>
|
338
|
+
</div>
|
339
|
+
|
340
|
+
<div class="feature-card">
|
341
|
+
<h3>💡 Examples</h3>
|
342
|
+
<p>Real-world examples and use cases</p>
|
343
|
+
<a href="{{ site.baseurl }}/examples/">View Examples →</a>
|
344
|
+
</div>
|
345
|
+
</div>
|
346
|
+
|
347
|
+
## Contributing
|
348
|
+
|
349
|
+
We welcome contributions! Please see our [contributing guidelines](https://github.com/gkosmo/rcrewAI/blob/main/CONTRIBUTING.md) for details.
|
350
|
+
|
351
|
+
## License
|
352
|
+
|
353
|
+
RCrewAI is released under the [MIT License](https://github.com/gkosmo/rcrewAI/blob/main/LICENSE).
|