small refractoring for new version

This commit is contained in:
João Moura
2024-07-01 02:00:36 -07:00
parent a9d94112f5
commit 511af98dea
16 changed files with 9011 additions and 205346 deletions

View File

@@ -123,7 +123,7 @@ result = my_crew.kickoff()
print(result)
```
### Kicking Off a Crew
### Different wayt to Kicking Off a Crew
Once your crew is assembled, initiate the workflow with the appropriate kickoff method. CrewAI provides several methods for better control over the kickoff process: `kickoff()`, `kickoff_for_each()`, `kickoff_async()`, and `kickoff_for_each_async()`.

View File

@@ -0,0 +1,42 @@
---
title: crewAI Train
description: Learn how to train your crewAI agents by giving them feedback early on and get consistent results.
---
## Introduction
The training feature in CrewAI allows you to train your AI agents using the command-line interface (CLI). By running the command `crewai train -n <n_iterations>`, you can specify the number of iterations for the training process.
During training, CrewAI utilizes techniques to optimize the performance of your agents along with human feedback. This helps the agents improve their understanding, decision-making, and problem-solving abilities.
To use the training feature, follow these steps:
1. Open your terminal or command prompt.
2. Navigate to the directory where your CrewAI project is located.
3. Run the following command:
```shell
crewai train -n <n_iterations>
```
Replace `<n_iterations>` with the desired number of training iterations. This determines how many times the agents will go through the training process.
Remember to also replace the placeholder inputs with the actual values you want to use on the main.py file in the `train` function.
```python
def train():
"""
Train the crew for a given number of iterations.
"""
inputs = {"topic": "AI LLMs"}
try:
ProjectCreationCrew().crew().train(n_iterations=int(sys.argv[1]), inputs=inputs)
...
```
It is important to note that the training process may take some time, depending on the complexity of your agents and will also require your feedback on each iteration.
Once the training is complete, your agents will be equipped with enhanced capabilities and knowledge, ready to tackle complex tasks and provide more consistent and valuable insights.
Remember to regularly update and retrain your agents to ensure they stay up-to-date with the latest information and advancements in the field.
Happy training with CrewAI!

View File

@@ -0,0 +1,17 @@
---
title: Coding Agents
description: Learn how to enable your crewAI Agents to write code and execute it.
---
## Introduction
TLDR: strongly recommended to use bigger models like gpt-4 and such
EXAMPLE:
```python
Agent(
role="Senior Python Developer",
goal="Craft well design and thought out code",
backstory="You are a senior python…”,
allow_code_execution=True,
)
```

View File

View File

View File

@@ -33,6 +33,11 @@ Cutting-edge framework for orchestrating role-playing, autonomous AI agents. By
Crews
</a>
</li>
<li>
<a href="./core-concepts/Training-Crew">
Training
</a>
</li>
<li>
<a href="./core-concepts/Memory">
Memory
@@ -78,16 +83,36 @@ Cutting-edge framework for orchestrating role-playing, autonomous AI agents. By
Customizing Agents
</a>
</li>
<li>
<a href="./how-to/Coding-Agents">
Coding Agents
</a>
</li>
<li>
<a href="./how-to/Human-Input-on-Execution">
Human Input on Execution
</a>
</li>
<li>
<a href="./how-to/Kickoff-async">
Kickoff a Crew Asynchronously
</a>
</li>
<li>
<a href="./how-to/Kickoff-for-each">
Kickoff a Crew for a List
</a>
</li>
<li>
<a href="./how-to/AgentOps-Observability">
Agent Monitoring with AgentOps
</a>
</li>
<li>
<a href="./how-to/Langtrace-Observability">
Agent Monitoring with LangTrace
</a>
</li>
</ul>
</div>
<div style="width:30%">

View File

@@ -126,6 +126,7 @@ nav:
- Processes: 'core-concepts/Processes.md'
- Crews: 'core-concepts/Crews.md'
- Collaboration: 'core-concepts/Collaboration.md'
- Training: 'core-concepts/Training-Crew.md'
- Memory: 'core-concepts/Memory.md'
- Using LangChain Tools: 'core-concepts/Using-LangChain-Tools.md'
- Using LlamaIndex Tools: 'core-concepts/Using-LlamaIndex-Tools.md'
@@ -138,7 +139,10 @@ nav:
- Create your own Manager Agent: 'how-to/Your-Own-Manager-Agent.md'
- Connecting to any LLM: 'how-to/LLM-Connections.md'
- Customizing Agents: 'how-to/Customizing-Agents.md'
- Coding Agents: 'how-to/Coding-Agents.md'
- Human Input on Execution: 'how-to/Human-Input-on-Execution.md'
- Kickoff a Crew Asynchronously: 'how-to/Kickoff-async.md'
- Kickoff a Crew for a List: 'how-to/Kickoff-for-each.md'
- Agent Monitoring with AgentOps: 'how-to/AgentOps-Observability.md'
- Agent Monitoring with LangTrace: 'how-to/Langtrace-Observability.md'
- Tools Docs:

1127
poetry.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
[tool.poetry]
name = "crewai"
version = "0.35.0"
version = "0.35.3"
description = "Cutting-edge framework for orchestrating role-playing, autonomous AI agents. By fostering collaborative intelligence, CrewAI empowers agents to work together seamlessly, tackling complex tasks."
authors = ["Joao Moura <joao@crewai.com>"]
readme = "README.md"
@@ -14,17 +14,17 @@ Repository = "https://github.com/joaomdmoura/crewai"
[tool.poetry.dependencies]
python = ">=3.10,<=3.13"
pydantic = "^2.4.2"
langchain = "^0.1.10"
langchain = ">=0.2,<=0.3"
openai = "^1.13.3"
opentelemetry-api = "^1.22.0"
opentelemetry-sdk = "^1.22.0"
opentelemetry-exporter-otlp-proto-http = "^1.22.0"
instructor = "1.3.3"
regex = "^2023.12.25"
crewai-tools = { version = "^0.4.0", optional = true }
crewai-tools = { version = "^0.4.1", optional = true }
click = "^8.1.7"
python-dotenv = "^1.0.0"
embedchain = "0.1.109"
embedchain = { git = "https://github.com/joaomdmoura/embedchain.git", branch = "main" }
appdirs = "^1.4.4"
jsonref = "^1.1.0"
@@ -43,7 +43,7 @@ mkdocs-material = { extras = ["imaging"], version = "^9.5.7" }
mkdocs-material-extensions = "^1.3.1"
pillow = "^10.2.0"
cairosvg = "^2.7.1"
crewai-tools = "^0.4.0"
crewai-tools = "^0.4.1"
[tool.poetry.group.test.dependencies]
pytest = "^8.0.0"

View File

@@ -255,6 +255,16 @@ class Agent(BaseAgent):
tools = agent_tools.tools()
return tools
def get_code_execution_tools(self):
try:
from crewai_tools import CodeInterpreterTool
return [CodeInterpreterTool()]
except ModuleNotFoundError:
self._logger.log(
"info", "Coding tools not available. Install crewai_tools. "
)
def get_output_converter(self, llm, text, model, instructions):
return Converter(llm=llm, text=text, model=model, instructions=instructions)
@@ -270,13 +280,8 @@ class Agent(BaseAgent):
tools_list.append(tool.to_langchain())
else:
tools_list.append(tool)
if self.allow_code_execution:
from crewai_tools.code_interpreter_tool import CodeInterpreterTool
tools_list.append(CodeInterpreterTool)
except ModuleNotFoundError:
tools_list = []
for tool in tools:
tools_list.append(tool)
return tools_list

View File

@@ -214,7 +214,7 @@ class BaseAgent(ABC, BaseModel):
self.create_agent_executor()
def increment_formatting_errors(self) -> None:
print("Formatting errors incremented")
self.formatting_errors += 1
def copy(self):
exclude = {

View File

@@ -299,6 +299,8 @@ class Crew(BaseModel):
and not agent.function_calling_llm
):
agent.function_calling_llm = self.function_calling_llm
if hasattr(agent, "allow_code_execution") and agent.allow_code_execution:
agent.tools += agent.get_code_execution_tools()
if hasattr(agent, "step_callback") and not agent.step_callback:
agent.step_callback = self.step_callback

File diff suppressed because it is too large Load Diff

View File

@@ -600,6 +600,30 @@ def test_task_with_no_arguments():
assert result == "75"
def test_code_execution_flag_adds_code_tool_upon_kickoff():
from crewai_tools import CodeInterpreterTool
programmer = Agent(
role="Programmer",
goal="Write code to solve problems.",
backstory="You're a programmer who loves to solve problems with code.",
allow_delegation=False,
allow_code_execution=True,
)
task = Task(
description="How much is 2 + 2?",
expected_output="The result of the sum as an integer.",
agent=programmer,
)
crew = Crew(agents=[programmer], tasks=[task])
crew.kickoff()
assert len(programmer.tools) == 1
assert programmer.tools[0].__class__ == CodeInterpreterTool
@pytest.mark.vcr(filter_headers=["authorization"])
def test_delegation_is_not_enabled_if_there_are_only_one_agent():
from unittest.mock import patch
@@ -691,8 +715,8 @@ def test_agent_usage_metrics_are_captured_for_hierarchical_process():
assert result == '"Howdy!"'
assert crew.usage_metrics == {
"total_tokens": 1640,
"prompt_tokens": 1357,
"total_tokens": 1616,
"prompt_tokens": 1333,
"completion_tokens": 283,
"successful_requests": 3,
}