diff --git a/docs/core-concepts/Agents.md b/docs/core-concepts/Agents.md index bb054f8b9..7b93fdde7 100644 --- a/docs/core-concepts/Agents.md +++ b/docs/core-concepts/Agents.md @@ -114,7 +114,7 @@ from langchain.agents import load_tools langchain_tools = load_tools(["google-serper"], llm=llm) agent1 = CustomAgent( - role="backstory agent", + role="agent role", goal="who is {input}?", backstory="agent backstory", verbose=True, @@ -127,7 +127,7 @@ task1 = Task( ) agent2 = Agent( - role="bio agent", + role="agent role", goal="summarize the short bio for {input} and if needed do more research", backstory="agent backstory", verbose=True, diff --git a/docs/core-concepts/Crews.md b/docs/core-concepts/Crews.md index 1896c6a38..56cd2a19d 100644 --- a/docs/core-concepts/Crews.md +++ b/docs/core-concepts/Crews.md @@ -33,6 +33,7 @@ A crew in crewAI represents a collaborative group of agents working together to | **Manager Callbacks** _(optional)_ | `manager_callbacks` | `manager_callbacks` takes a list of callback handlers to be executed by the manager agent when a hierarchical process is used. | | **Prompt File** _(optional)_ | `prompt_file` | Path to the prompt JSON file to be used for the crew. | | **Planning** *(optional)* | `planning` | Adds planning ability to the Crew. When activated before each Crew iteration, all Crew data is sent to an AgentPlanner that will plan the tasks and this plan will be added to each task description. +| **Planning LLM** *(optional)* | `planning_llm` | The language model used by the AgentPlanner in a planning process. | !!! note "Crew Max RPM" The `max_rpm` attribute sets the maximum number of requests per minute the crew can perform to avoid rate limits and will override individual agents' `max_rpm` settings if you set it. @@ -136,7 +137,7 @@ crew = Crew( verbose=2 ) -result = crew.kickoff() +crew_output = crew.kickoff() # Accessing the crew output print(f"Raw Output: {crew_output.raw}") diff --git a/docs/core-concepts/Planning.md b/docs/core-concepts/Planning.md index 810309703..36ae34437 100644 --- a/docs/core-concepts/Planning.md +++ b/docs/core-concepts/Planning.md @@ -23,6 +23,25 @@ my_crew = Crew( From this point on, your crew will have planning enabled, and the tasks will be planned before each iteration. +#### Planning LLM + +Now you can define the LLM that will be used to plan the tasks. You can use any ChatOpenAI LLM model available. + +```python +from crewai import Crew, Agent, Task, Process +from langchain_openai import ChatOpenAI + +# Assemble your crew with planning capabilities and custom LLM +my_crew = Crew( + agents=self.agents, + tasks=self.tasks, + process=Process.sequential, + planning=True, + planning_llm=ChatOpenAI(model="gpt-4o") +) +``` + + ### Example When running the base case example, you will see something like the following output, which represents the output of the AgentPlanner responsible for creating the step-by-step logic to add to the Agents tasks. diff --git a/docs/core-concepts/Testing.md b/docs/core-concepts/Testing.md new file mode 100644 index 000000000..45ababafb --- /dev/null +++ b/docs/core-concepts/Testing.md @@ -0,0 +1,41 @@ +--- +title: crewAI Testing +description: Learn how to test your crewAI Crew and evaluate their performance. +--- + +## Introduction + +Testing is a crucial part of the development process, and it is essential to ensure that your crew is performing as expected. And with crewAI, you can easily test your crew and evaluate its performance using the built-in testing capabilities. + +### Using the Testing Feature + +We added the CLI command `crewai test` to make it easy to test your crew. This command will run your crew for a specified number of iterations and provide detailed performance metrics. +The parameters are `n_iterations` and `model` which are optional and default to 2 and `gpt-4o-mini` respectively. For now the only provider available is OpenAI. + +```bash +crewai test +``` + +If you want to run more iterations or use a different model, you can specify the parameters like this: + +```bash +crewai test --n_iterations 5 --model gpt-4o +``` + +What happens when you run the `crewai test` command is that the crew will be executed for the specified number of iterations, and the performance metrics will be displayed at the end of the run. + +A table of scores at the end will show the performance of the crew in terms of the following metrics: +``` + Task Scores + (1-10 Higher is better) +┏━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━┓ +┃ Tasks/Crew ┃ Run 1 ┃ Run 2 ┃ Avg. Total ┃ +┡━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━┩ +│ Task 1 │ 10.0 │ 9.0 │ 9.5 │ +│ Task 2 │ 9.0 │ 9.0 │ 9.0 │ +│ Crew │ 9.5 │ 9.0 │ 9.2 │ +└────────────┴───────┴───────┴────────────┘ +``` + +The example above shows the test results for two runs of the crew with two tasks, with the average total score for each task and the crew as a whole. + diff --git a/docs/how-to/Installing-CrewAI.md b/docs/getting-started/Installing-CrewAI.md similarity index 91% rename from docs/how-to/Installing-CrewAI.md rename to docs/getting-started/Installing-CrewAI.md index 5a347df32..8bf58ee01 100644 --- a/docs/how-to/Installing-CrewAI.md +++ b/docs/getting-started/Installing-CrewAI.md @@ -18,4 +18,7 @@ pip install crewai # Install the main crewAI package and the tools package # that includes a series of helpful tools for your agents pip install 'crewai[tools]' + +# Alternatively, you can also use: +pip install crewai crewai-tools ``` \ No newline at end of file diff --git a/docs/getting-started/Start-a-New-CrewAI-Project-Template-Method.md b/docs/getting-started/Start-a-New-CrewAI-Project-Template-Method.md new file mode 100644 index 000000000..0e6fcc446 --- /dev/null +++ b/docs/getting-started/Start-a-New-CrewAI-Project-Template-Method.md @@ -0,0 +1,255 @@ +--- +title: Starting a New CrewAI Project - Using Template +description: A comprehensive guide to starting a new CrewAI project, including the latest updates and project setup methods. +--- + +# Starting Your CrewAI Project + +Welcome to the ultimate guide for starting a new CrewAI project. This document will walk you through the steps to create, customize, and run your CrewAI project, ensuring you have everything you need to get started. + +Beforre we start there are a couple of things to note: + +1. CrewAI is a Python package and requires Python >=3.10 and <=3.13 to run. +2. The preferred way of setting up CrewAI is using the `crewai create` command.This will create a new project folder and install a skeleton template for you to work on. + +## Prerequisites + +Before getting started with CrewAI, make sure that you have installed it via pip: + +```shell +$ pip install crewai crewi-tools +``` + +### Virtual Environemnts +It is highly recommended that you use virtual environments to ensure that your CrewAI project is isolated from other projects and dependencies. Virtual environments provide a clean, separate workspace for each project, preventing conflicts between different versions of packages and libraries. This isolation is crucial for maintaining consistency and reproducibility in your development process. You have multiple options for setting up virtual environments depending on your operating system and Python version: + +1. Use venv (Python's built-in virtual environment tool): + venv is included with Python 3.3 and later, making it a convenient choice for many developers. It's lightweight and easy to use, perfect for simple project setups. + + To set up virtual environments with venv, refer to the official [Python documentation](https://docs.python.org/3/tutorial/venv.html). + +2. Use Conda (A Python virtual environment manager): + Conda is an open-source package manager and environment management system for Python. It's widely used by data scientists, developers, and researchers to manage dependencies and environments in a reproducible way. + + To set up virtual environments with Conda, refer to the official [Conda documentation](https://docs.conda.io/projects/conda/en/stable/user-guide/getting-started.html). + +3. Use Poetry (A Python package manager and dependency management tool): + Poetry is an open-source Python package manager that simplifies the installation of packages and their dependencies. Poetry offers a convenient way to manage virtual environments and dependencies. + Poetry is CrewAI's prefered tool for package / dependancy management in CrewAI. + +### Code IDEs + +Most users of CrewAI a Code Editor / Integrated Development Environment (IDE) for building there Crews. You can use any code IDE of your choice. Seee below for some popular options for Code Editors / Integrated Development Environments (IDE): + +- [Visual Studio Code](https://code.visualstudio.com/) - Most popular +- [PyCharm](https://www.jetbrains.com/pycharm/) +- [Cursor AI](https://cursor.com) + +Pick one that suits your style and needs. + +## Creating a New Project +In this example we will be using Venv as our virtual environment manager. + +To setup a virtual environment, run the following CLI command: + +```shell +$ python3 -m venv +``` + +Activate your virtual environment by running the following CLI command: + +```shell +$ source /bin/activate +``` + +Now, to create a new CrewAI project, run the following CLI command: + +```shell +$ crewai create +``` + +This command will create a new project folder with the following structure: + +```shell +my_project/ +├── .gitignore +├── pyproject.toml +├── README.md +└── src/ + └── my_project/ + ├── __init__.py + ├── main.py + ├── crew.py + ├── tools/ + │ ├── custom_tool.py + │ └── __init__.py + └── config/ + ├── agents.yaml + └── tasks.yaml +``` + +You can now start developing your project by editing the files in the `src/my_project` folder. The `main.py` file is the entry point of your project, and the `crew.py` file is where you define your agents and tasks. + +## Customizing Your Project + +To customize your project, you can: +- Modify `src/my_project/config/agents.yaml` to define your agents. +- Modify `src/my_project/config/tasks.yaml` to define your tasks. +- Modify `src/my_project/crew.py` to add your own logic, tools, and specific arguments. +- Modify `src/my_project/main.py` to add custom inputs for your agents and tasks. +- Add your environment variables into the `.env` file. + +### Example: Defining Agents and Tasks + +#### agents.yaml + +```yaml +researcher: + role: > + Job Candidate Researcher + goal: > + Find potential candidates for the job + backstory: > + You are adept at finding the right candidates by exploring various online + resources. Your skill in identifying suitable candidates ensures the best + match for job positions. +``` + +#### tasks.yaml + +```yaml +research_candidates_task: + description: > + Conduct thorough research to find potential candidates for the specified job. + Utilize various online resources and databases to gather a comprehensive list of potential candidates. + Ensure that the candidates meet the job requirements provided. + + Job Requirements: + {job_requirements} + expected_output: > + A list of 10 potential candidates with their contact information and brief profiles highlighting their suitability. + agent: researcher # THIS NEEDS TO MATCH THE AGENT NAME IN THE AGENTS.YAML FILE AND THE AGENT DEFINED IN THE Crew.PY FILE + context: # THESE NEED TO MATCH THE TASK NAMES DEFINED ABOVE AND THE TASKS.YAML FILE AND THE TASK DEFINED IN THE Crew.PY FILE + - researcher +``` + +### Referencing Variables: +Your defined functions with the same name will be used. For example, you can reference the agent for specific tasks from task.yaml file. Ensure your annotated agent and function name is the same otherwise your task wont recognize the reference properly. + +#### Example References +agent.yaml +```yaml +email_summarizer: + role: > + Email Summarizer + goal: > + Summarize emails into a concise and clear summary + backstory: > + You will create a 5 bullet point summary of the report + llm: mixtal_llm +``` + +task.yaml +```yaml +email_summarizer_task: + description: > + Summarize the email into a 5 bullet point summary + expected_output: > + A 5 bullet point summary of the email + agent: email_summarizer + context: + - reporting_task + - research_task +``` + +Use the annotations are used to properly reference the agent and task in the crew.py file. + +### Annotations include: +* @agent +* @task +* @crew +* @llm +* @tool +* @callback +* @output_json +* @output_pydantic +* @cache_handler + + +crew.py +```py +... + @llm + def mixtal_llm(self): + return ChatGroq(temperature=0, model_name="mixtral-8x7b-32768") + + @agent + def email_summarizer(self) -> Agent: + return Agent( + config=self.agents_config["email_summarizer"], + ) + ## ...other tasks defined + @task + def email_summarizer_task(self) -> Task: + return Task( + config=self.tasks_config["email_summarizer_task"], + ) +... +``` + + + +## Installing Dependencies + +To install the dependencies for your project, you can use Poetry. First, navigate to your project directory: + +```shell +$ cd my_project +$ poetry lock +$ poetry install +``` + +This will install the dependencies specified in the `pyproject.toml` file. + +## Interpolating Variables + +Any variable interpolated in your `agents.yaml` and `tasks.yaml` files like `{variable}` will be replaced by the value of the variable in the `main.py` file. + +#### agents.yaml + +```yaml +research_task: + description: > + Conduct a thorough research about the customer and competitors in the context + of {customer_domain}. + Make sure you find any interesting and relevant information given the + current year is 2024. + expected_output: > + A complete report on the customer and their customers and competitors, + including their demographics, preferences, market positioning and audience engagement. +``` + +#### main.py + +```python +# main.py +def run(): + inputs = { + "customer_domain": "crewai.com" + } + MyProjectCrew(inputs).crew().kickoff(inputs=inputs) +``` + +## Running Your Project + +To run your project, use the following command: + +```shell +$ poetry run my_project +``` + +This will initialize your crew of AI agents and begin task execution as defined in your configuration in the `main.py` file. + +## Deploying Your Project + +The easiest way to deploy your crew is through [CrewAI+](https://www.crewai.com/crewaiplus), where you can deploy your crew in a few clicks. diff --git a/docs/how-to/Creating-a-Crew-and-kick-it-off.md b/docs/how-to/Creating-a-Crew-and-kick-it-off.md deleted file mode 100644 index 7200d75d4..000000000 --- a/docs/how-to/Creating-a-Crew-and-kick-it-off.md +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: Assembling and Activating Your CrewAI Team -description: A comprehensive guide to creating a dynamic CrewAI team for your projects, with updated functionalities including verbose mode, memory capabilities, asynchronous execution, output customization, language model configuration, code execution, integration with third-party agents, and improved task management. ---- - -## Introduction -Embark on your CrewAI journey by setting up your environment and initiating your AI crew with the latest features. This guide ensures a smooth start, incorporating all recent updates for an enhanced experience, including code execution capabilities, integration with third-party agents, and advanced task management. - -## Step 0: Installation -Install CrewAI and any necessary packages for your project. CrewAI is compatible with Python >=3.10,<=3.13. - -```shell -pip install crewai -pip install 'crewai[tools]' -``` - -## Step 1: Assemble Your Agents -Define your agents with distinct roles, backstories, and enhanced capabilities. The Agent class now supports a wide range of attributes for fine-tuned control over agent behavior and interactions, including code execution and integration with third-party agents. - -```python -import os -from langchain.llms import OpenAI -from crewai import Agent -from crewai_tools import SerperDevTool, BrowserbaseLoadTool, EXASearchTool - -os.environ["OPENAI_API_KEY"] = "Your OpenAI Key" -os.environ["SERPER_API_KEY"] = "Your Serper Key" -os.environ["BROWSERBASE_API_KEY"] = "Your BrowserBase Key" -os.environ["BROWSERBASE_PROJECT_ID"] = "Your BrowserBase Project Id" - -search_tool = SerperDevTool() -browser_tool = BrowserbaseLoadTool() -exa_search_tool = EXASearchTool() - -# Creating a senior researcher agent with advanced configurations -researcher = Agent( - role='Senior Researcher', - goal='Uncover groundbreaking technologies in {topic}', - backstory=("Driven by curiosity, you're at the forefront of innovation, " - "eager to explore and share knowledge that could change the world."), - memory=True, - verbose=True, - allow_delegation=False, - tools=[search_tool, browser_tool], - allow_code_execution=False, # New attribute for enabling code execution - max_iter=15, # Maximum number of iterations for task execution - max_rpm=100, # Maximum requests per minute - max_execution_time=3600, # Maximum execution time in seconds - system_template="Your custom system template here", # Custom system template - prompt_template="Your custom prompt template here", # Custom prompt template - response_template="Your custom response template here", # Custom response template -) - -# Creating a writer agent with custom tools and specific configurations -writer = Agent( - role='Writer', - goal='Narrate compelling tech stories about {topic}', - backstory=("With a flair for simplifying complex topics, you craft engaging " - "narratives that captivate and educate, bringing new discoveries to light."), - verbose=True, - allow_delegation=False, - memory=True, - tools=[exa_search_tool], - function_calling_llm=OpenAI(model_name="gpt-3.5-turbo"), # Separate LLM for function calling -) - -# Setting a specific manager agent -manager = Agent( - role='Manager', - goal='Ensure the smooth operation and coordination of the team', - verbose=True, - backstory=( - "As a seasoned project manager, you excel in organizing " - "tasks, managing timelines, and ensuring the team stays on track." - ), - allow_code_execution=True, # Enable code execution for the manager -) -``` - -### New Agent Attributes and Features - -1. `allow_code_execution`: Enable or disable code execution capabilities for the agent (default is False). -2. `max_execution_time`: Set a maximum execution time (in seconds) for the agent to complete a task. -3. `function_calling_llm`: Specify a separate language model for function calling. \ No newline at end of file diff --git a/docs/how-to/Force-Tool-Ouput-as-Result.md b/docs/how-to/Force-Tool-Ouput-as-Result.md index c40d0af29..15c60f80b 100644 --- a/docs/how-to/Force-Tool-Ouput-as-Result.md +++ b/docs/how-to/Force-Tool-Ouput-as-Result.md @@ -7,7 +7,7 @@ description: Learn how to force tool output as the result in of an Agent's task In CrewAI, you can force the output of a tool as the result of an agent's task. This feature is useful when you want to ensure that the tool output is captured and returned as the task result, and avoid the agent modifying the output during the task execution. ## Forcing Tool Output as Result -To force the tool output as the result of an agent's task, you can set the `force_tool_output` parameter to `True` when creating the task. This parameter ensures that the tool output is captured and returned as the task result, without any modifications by the agent. +To force the tool output as the result of an agent's task, you can set the `result_as_answer` parameter to `True` when creating the agent. This parameter ensures that the tool output is captured and returned as the task result, without any modifications by the agent. Here's an example of how to force the tool output as the result of an agent's task: diff --git a/docs/how-to/Start-a-New-CrewAI-Project.md b/docs/how-to/Start-a-New-CrewAI-Project.md deleted file mode 100644 index 1a6bbf6fd..000000000 --- a/docs/how-to/Start-a-New-CrewAI-Project.md +++ /dev/null @@ -1,137 +0,0 @@ ---- -title: Starting a New CrewAI Project -description: A comprehensive guide to starting a new CrewAI project, including the latest updates and project setup methods. ---- - -# Starting Your CrewAI Project - -Welcome to the ultimate guide for starting a new CrewAI project. This document will walk you through the steps to create, customize, and run your CrewAI project, ensuring you have everything you need to get started. - -## Prerequisites - -We assume you have already installed CrewAI. If not, please refer to the [installation guide](https://docs.crewai.com/how-to/Installing-CrewAI/) to install CrewAI and its dependencies. - -## Creating a New Project - -To create a new project, run the following CLI command: - -```shell -$ crewai create my_project -``` - -This command will create a new project folder with the following structure: - -```shell -my_project/ -├── .gitignore -├── pyproject.toml -├── README.md -└── src/ - └── my_project/ - ├── __init__.py - ├── main.py - ├── crew.py - ├── tools/ - │ ├── custom_tool.py - │ └── __init__.py - └── config/ - ├── agents.yaml - └── tasks.yaml -``` - -You can now start developing your project by editing the files in the `src/my_project` folder. The `main.py` file is the entry point of your project, and the `crew.py` file is where you define your agents and tasks. - -## Customizing Your Project - -To customize your project, you can: -- Modify `src/my_project/config/agents.yaml` to define your agents. -- Modify `src/my_project/config/tasks.yaml` to define your tasks. -- Modify `src/my_project/crew.py` to add your own logic, tools, and specific arguments. -- Modify `src/my_project/main.py` to add custom inputs for your agents and tasks. -- Add your environment variables into the `.env` file. - -### Example: Defining Agents and Tasks - -#### agents.yaml - -```yaml -researcher: - role: > - Job Candidate Researcher - goal: > - Find potential candidates for the job - backstory: > - You are adept at finding the right candidates by exploring various online - resources. Your skill in identifying suitable candidates ensures the best - match for job positions. -``` - -#### tasks.yaml - -```yaml -research_candidates_task: - description: > - Conduct thorough research to find potential candidates for the specified job. - Utilize various online resources and databases to gather a comprehensive list of potential candidates. - Ensure that the candidates meet the job requirements provided. - - Job Requirements: - {job_requirements} - expected_output: > - A list of 10 potential candidates with their contact information and brief profiles highlighting their suitability. -``` - -## Installing Dependencies - -To install the dependencies for your project, you can use Poetry. First, navigate to your project directory: - -```shell -$ cd my_project -$ poetry lock -$ poetry install -``` - -This will install the dependencies specified in the `pyproject.toml` file. - -## Interpolating Variables - -Any variable interpolated in your `agents.yaml` and `tasks.yaml` files like `{variable}` will be replaced by the value of the variable in the `main.py` file. - -#### agents.yaml - -```yaml -research_task: - description: > - Conduct a thorough research about the customer and competitors in the context - of {customer_domain}. - Make sure you find any interesting and relevant information given the - current year is 2024. - expected_output: > - A complete report on the customer and their customers and competitors, - including their demographics, preferences, market positioning and audience engagement. -``` - -#### main.py - -```python -# main.py -def run(): - inputs = { - "customer_domain": "crewai.com" - } - MyProjectCrew(inputs).crew().kickoff(inputs=inputs) -``` - -## Running Your Project - -To run your project, use the following command: - -```shell -$ poetry run my_project -``` - -This will initialize your crew of AI agents and begin task execution as defined in your configuration in the `main.py` file. - -## Deploying Your Project - -The easiest way to deploy your crew is through [CrewAI+](https://www.crewai.com/crewaiplus), where you can deploy your crew in a few clicks. diff --git a/docs/index.md b/docs/index.md index c02b1fb27..7fe2d224f 100644 --- a/docs/index.md +++ b/docs/index.md @@ -5,6 +5,19 @@ Cutting-edge framework for orchestrating role-playing, autonomous AI agents. By fostering collaborative intelligence, CrewAI empowers agents to work together seamlessly, tackling complex tasks.
+
+

Getting Started

+ +

Core Concepts