Debugging Your Crew: Isolating Agents and Tasks in CrewAI

If you’re working with CrewAI to build multi-agent AI systems, you know that things can get complex quickly. As your crew grows, debugging and making changes to individual agents or tasks can become quite challenging.

In this post, we will explore how to run agents and tasks independently.

Why Isolate Agents and Tasks?

Isolating parts of your crew is like testing individual components of a larger system. It offers these practical benefits:

  • Easier Debugging: When something isn’t working right, testing the specific agent or task in isolation helps you quickly pinpoint the problem. You won’t have to wade through logs from the entire crew.

  • Faster Iteration: If you want to change how an agent behaves or how a task is defined, you can test those changes quickly without running the whole crew each time.

  • Focused Performance Tuning: You can profile and optimize individual components more easily when you isolate them from the rest of the system.

Let’s look at the main parts:

  1. The researcher Agent (agents.yaml):

    <span>researcher</span><span>:</span>
    <span>role</span><span>:</span> <span>"</span><span>Senior</span><span> </span><span>Research</span><span> </span><span>Analyst"</span>
    <span>goal</span><span>:</span> <span>"</span><span>Uncover</span><span> </span><span>groundbreaking</span><span> </span><span>technologies</span><span> </span><span>in</span><span> </span><span>AI"</span>
    <span>backstory</span><span>:</span> <span>"</span><span>A</span><span> </span><span>highly</span><span> </span><span>skilled</span><span> </span><span>researcher</span><span> </span><span>with</span><span> </span><span>a</span><span> </span><span>passion</span><span> </span><span>for</span><span> </span><span>AI</span><span> </span><span>advancements."</span>
    <span>llm</span><span>:</span> <span>gemini/gemini-1.5-flash</span> <span># Replace with your desired LLM</span>
    <span>allow_delegation</span><span>:</span> <span>false</span>
    <span>tools</span><span>:</span>
    <span>-</span> <span>WebSearchTool</span>
    <span>researcher</span><span>:</span>
      <span>role</span><span>:</span> <span>"</span><span>Senior</span><span> </span><span>Research</span><span> </span><span>Analyst"</span>
      <span>goal</span><span>:</span> <span>"</span><span>Uncover</span><span> </span><span>groundbreaking</span><span> </span><span>technologies</span><span> </span><span>in</span><span> </span><span>AI"</span>
      <span>backstory</span><span>:</span> <span>"</span><span>A</span><span> </span><span>highly</span><span> </span><span>skilled</span><span> </span><span>researcher</span><span> </span><span>with</span><span> </span><span>a</span><span> </span><span>passion</span><span> </span><span>for</span><span> </span><span>AI</span><span> </span><span>advancements."</span>
      <span>llm</span><span>:</span> <span>gemini/gemini-1.5-flash</span> <span># Replace with your desired LLM</span>
      <span>allow_delegation</span><span>:</span> <span>false</span>
      <span>tools</span><span>:</span>
        <span>-</span> <span>WebSearchTool</span>
    researcher: role: "Senior Research Analyst" goal: "Uncover groundbreaking technologies in AI" backstory: "A highly skilled researcher with a passion for AI advancements." llm: gemini/gemini-1.5-flash # Replace with your desired LLM allow_delegation: false tools: - WebSearchTool
  2. The research_task (tasks.yaml):

    <span>research_task</span><span>:</span>
    <span>description</span><span>:</span> <span>"</span><span>Research</span><span> </span><span>the</span><span> </span><span>latest</span><span> </span><span>developments</span><span> </span><span>in</span><span> </span><span>AI</span><span> </span><span>for</span><span> </span><span>2024."</span>
    <span>expected_output</span><span>:</span> <span>"</span><span>A</span><span> </span><span>report</span><span> </span><span>summarizing</span><span> </span><span>the</span><span> </span><span>key</span><span> </span><span>AI</span><span> </span><span>trends."</span>
    <span>agent</span><span>:</span> <span>researcher</span>
    <span>research_task</span><span>:</span>
      <span>description</span><span>:</span> <span>"</span><span>Research</span><span> </span><span>the</span><span> </span><span>latest</span><span> </span><span>developments</span><span> </span><span>in</span><span> </span><span>AI</span><span> </span><span>for</span><span> </span><span>2024."</span>
      <span>expected_output</span><span>:</span> <span>"</span><span>A</span><span> </span><span>report</span><span> </span><span>summarizing</span><span> </span><span>the</span><span> </span><span>key</span><span> </span><span>AI</span><span> </span><span>trends."</span>
      <span>agent</span><span>:</span> <span>researcher</span>
    research_task: description: "Research the latest developments in AI for 2024." expected_output: "A report summarizing the key AI trends." agent: researcher
  3. The IndependentCrew Class (crew.py):

    <span>from</span> <span>crewai</span> <span>import</span> <span>Agent</span><span>,</span> <span>Crew</span><span>,</span> <span>Process</span><span>,</span> <span>Task</span>
    <span>from</span> <span>crewai.project</span> <span>import</span> <span>CrewBase</span><span>,</span> <span>agent</span><span>,</span> <span>crew</span><span>,</span> <span>task</span>
    <span>from</span> <span>.tools</span> <span>import</span> <span>WebSearchTool</span>
    <span>@CrewBase</span>
    <span>class</span> <span>IndependentCrew</span><span>():</span>
    <span>"""</span><span>IndependentCrew crew</span><span>"""</span>
    <span>agents_config</span> <span>=</span> <span>'</span><span>config/agents.yaml</span><span>'</span>
    <span>tasks_config</span> <span>=</span> <span>'</span><span>config/tasks.yaml</span><span>'</span>
    <span># If you would like to add tools to your agents, you can learn more about it here: </span> <span># https://docs.crewai.com/concepts/agents#agent-tools </span> <span>@agent</span>
    <span>def</span> <span>researcher</span><span>(</span><span>self</span><span>)</span> <span>-></span> <span>Agent</span><span>:</span>
    <span>return</span> <span>Agent</span><span>(</span>
    <span>config</span><span>=</span><span>self</span><span>.</span><span>agents_config</span><span>[</span><span>'</span><span>researcher</span><span>'</span><span>],</span>
    <span>verbose</span><span>=</span><span>True</span><span>,</span>
    <span>tools</span><span>=</span><span>[</span><span>WebSearchTool</span><span>()]</span>
    <span>)</span>
    <span>@task</span>
    <span>def</span> <span>research_task</span><span>(</span><span>self</span><span>)</span> <span>-></span> <span>Task</span><span>:</span>
    <span>return</span> <span>Task</span><span>(</span>
    <span>config</span><span>=</span><span>self</span><span>.</span><span>tasks_config</span><span>[</span><span>'</span><span>research_task</span><span>'</span><span>],</span>
    <span>)</span>
    <span>@crew</span>
    <span>def</span> <span>crew</span><span>(</span><span>self</span><span>)</span> <span>-></span> <span>Crew</span><span>:</span>
    <span>"""</span><span>Creates the IndependentCrew crew</span><span>"""</span>
    <span>return</span> <span>Crew</span><span>(</span>
    <span>agents</span><span>=</span><span>self</span><span>.</span><span>agents</span><span>,</span> <span># Automatically created by the @agent decorator </span> <span>tasks</span><span>=</span><span>self</span><span>.</span><span>tasks</span><span>,</span> <span># Automatically created by the @task decorator </span> <span>process</span><span>=</span><span>Process</span><span>.</span><span>sequential</span><span>,</span>
    <span>verbose</span><span>=</span><span>True</span><span>,</span>
    <span>)</span>
    <span>from</span> <span>crewai</span> <span>import</span> <span>Agent</span><span>,</span> <span>Crew</span><span>,</span> <span>Process</span><span>,</span> <span>Task</span>
    <span>from</span> <span>crewai.project</span> <span>import</span> <span>CrewBase</span><span>,</span> <span>agent</span><span>,</span> <span>crew</span><span>,</span> <span>task</span>
    <span>from</span> <span>.tools</span> <span>import</span> <span>WebSearchTool</span>
    
    <span>@CrewBase</span>
    <span>class</span> <span>IndependentCrew</span><span>():</span>
        <span>"""</span><span>IndependentCrew crew</span><span>"""</span>
    
        <span>agents_config</span> <span>=</span> <span>'</span><span>config/agents.yaml</span><span>'</span>
        <span>tasks_config</span> <span>=</span> <span>'</span><span>config/tasks.yaml</span><span>'</span>
    
        <span># If you would like to add tools to your agents, you can learn more about it here: </span>    <span># https://docs.crewai.com/concepts/agents#agent-tools </span>    <span>@agent</span>
        <span>def</span> <span>researcher</span><span>(</span><span>self</span><span>)</span> <span>-></span> <span>Agent</span><span>:</span>
            <span>return</span> <span>Agent</span><span>(</span>
                <span>config</span><span>=</span><span>self</span><span>.</span><span>agents_config</span><span>[</span><span>'</span><span>researcher</span><span>'</span><span>],</span>
                <span>verbose</span><span>=</span><span>True</span><span>,</span>
                <span>tools</span><span>=</span><span>[</span><span>WebSearchTool</span><span>()]</span>
            <span>)</span>
    
        <span>@task</span>
        <span>def</span> <span>research_task</span><span>(</span><span>self</span><span>)</span> <span>-></span> <span>Task</span><span>:</span>
            <span>return</span> <span>Task</span><span>(</span>
                <span>config</span><span>=</span><span>self</span><span>.</span><span>tasks_config</span><span>[</span><span>'</span><span>research_task</span><span>'</span><span>],</span>
            <span>)</span>
    
        <span>@crew</span>
        <span>def</span> <span>crew</span><span>(</span><span>self</span><span>)</span> <span>-></span> <span>Crew</span><span>:</span>
            <span>"""</span><span>Creates the IndependentCrew crew</span><span>"""</span>
    
            <span>return</span> <span>Crew</span><span>(</span>
                <span>agents</span><span>=</span><span>self</span><span>.</span><span>agents</span><span>,</span> <span># Automatically created by the @agent decorator </span>            <span>tasks</span><span>=</span><span>self</span><span>.</span><span>tasks</span><span>,</span> <span># Automatically created by the @task decorator </span>            <span>process</span><span>=</span><span>Process</span><span>.</span><span>sequential</span><span>,</span>
                <span>verbose</span><span>=</span><span>True</span><span>,</span>
            <span>)</span>
    from crewai import Agent, Crew, Process, Task from crewai.project import CrewBase, agent, crew, task from .tools import WebSearchTool @CrewBase class IndependentCrew(): """IndependentCrew crew""" agents_config = 'config/agents.yaml' tasks_config = 'config/tasks.yaml' # If you would like to add tools to your agents, you can learn more about it here: # https://docs.crewai.com/concepts/agents#agent-tools @agent def researcher(self) -> Agent: return Agent( config=self.agents_config['researcher'], verbose=True, tools=[WebSearchTool()] ) @task def research_task(self) -> Task: return Task( config=self.tasks_config['research_task'], ) @crew def crew(self) -> Crew: """Creates the IndependentCrew crew""" return Crew( agents=self.agents, # Automatically created by the @agent decorator tasks=self.tasks, # Automatically created by the @task decorator process=Process.sequential, verbose=True, )
  4. Running the Agent Independently (run_agent.py):

    <span>from</span> <span>crewai</span> <span>import</span> <span>Agent</span><span>,</span> <span>Task</span>
    <span>from</span> <span>.crew</span> <span>import</span> <span>IndependentCrew</span>
    <span>from</span> <span>.tools</span> <span>import</span> <span>WebSearchTool</span>
    <span>import</span> <span>os</span>
    <span># Create an instance of the IndependentCrew class to access its configurations </span><span>crew_instance</span> <span>=</span> <span>IndependentCrew</span><span>()</span>
    <span># -- Option 1: Create agent from config and execute a custom task -- # Access the agents configuration </span><span>agent_config</span> <span>=</span> <span>crew_instance</span><span>.</span><span>agents_config</span><span>[</span><span>'</span><span>researcher</span><span>'</span><span>]</span>
    <span># Now you can create your agent using this configuration </span><span>researcher_agent</span> <span>=</span> <span>Agent</span><span>(</span>
    <span>**</span><span>agent_config</span><span>,</span>
    <span>tools</span><span>=</span><span>[</span><span>WebSearchTool</span><span>()],</span>
    <span>verbose</span><span>=</span><span>True</span>
    <span>)</span>
    <span># Create a Task object with description, expected_output, and agent </span><span>task</span> <span>=</span> <span>Task</span><span>(</span>
    <span>description</span><span>=</span><span>"</span><span>What are the latest advancements in AI?</span><span>"</span><span>,</span>
    <span>expected_output</span><span>=</span><span>"</span><span>A report summarizing the latest advancements in AI.</span><span>"</span><span>,</span>
    <span>agent</span><span>=</span><span>researcher_agent</span>
    <span>)</span>
    <span># Execute the task with the agent </span><span>result</span> <span>=</span> <span>researcher_agent</span><span>.</span><span>execute_task</span><span>(</span><span>task</span><span>)</span>
    <span>print</span><span>(</span><span>"</span><span>Result from custom task:</span><span>"</span><span>,</span> <span>result</span><span>)</span>
    <span># -- Option 2: Reuse agent and task from crew definition -- </span><span>researcher_agent</span> <span>=</span> <span>crew_instance</span><span>.</span><span>researcher</span><span>()</span> <span># Get agent from crew definition </span><span>research_task</span> <span>=</span> <span>crew_instance</span><span>.</span><span>research_task</span><span>()</span> <span># Get task from crew definition </span><span>research_result</span> <span>=</span> <span>researcher_agent</span><span>.</span><span>execute_task</span><span>(</span><span>research_task</span><span>)</span>
    <span>print</span><span>(</span><span>"</span><span>Result from crew-defined task:</span><span>"</span><span>,</span> <span>research_result</span><span>)</span>
    <span>from</span> <span>crewai</span> <span>import</span> <span>Agent</span><span>,</span> <span>Task</span>
    <span>from</span> <span>.crew</span> <span>import</span> <span>IndependentCrew</span>
    <span>from</span> <span>.tools</span> <span>import</span> <span>WebSearchTool</span>
    <span>import</span> <span>os</span>
    
    <span># Create an instance of the IndependentCrew class to access its configurations </span><span>crew_instance</span> <span>=</span> <span>IndependentCrew</span><span>()</span>
    
    <span># -- Option 1: Create agent from config and execute a custom task -- # Access the agents configuration </span><span>agent_config</span> <span>=</span> <span>crew_instance</span><span>.</span><span>agents_config</span><span>[</span><span>'</span><span>researcher</span><span>'</span><span>]</span>
    
    <span># Now you can create your agent using this configuration </span><span>researcher_agent</span> <span>=</span> <span>Agent</span><span>(</span>
        <span>**</span><span>agent_config</span><span>,</span>
        <span>tools</span><span>=</span><span>[</span><span>WebSearchTool</span><span>()],</span>
        <span>verbose</span><span>=</span><span>True</span>
    <span>)</span>
    
    <span># Create a Task object with description, expected_output, and agent </span><span>task</span> <span>=</span> <span>Task</span><span>(</span>
        <span>description</span><span>=</span><span>"</span><span>What are the latest advancements in AI?</span><span>"</span><span>,</span>
        <span>expected_output</span><span>=</span><span>"</span><span>A report summarizing the latest advancements in AI.</span><span>"</span><span>,</span>
        <span>agent</span><span>=</span><span>researcher_agent</span>
    <span>)</span>
    
    <span># Execute the task with the agent </span><span>result</span> <span>=</span> <span>researcher_agent</span><span>.</span><span>execute_task</span><span>(</span><span>task</span><span>)</span>
    <span>print</span><span>(</span><span>"</span><span>Result from custom task:</span><span>"</span><span>,</span> <span>result</span><span>)</span>
    
    <span># -- Option 2: Reuse agent and task from crew definition -- </span><span>researcher_agent</span> <span>=</span> <span>crew_instance</span><span>.</span><span>researcher</span><span>()</span>  <span># Get agent from crew definition </span><span>research_task</span> <span>=</span> <span>crew_instance</span><span>.</span><span>research_task</span><span>()</span>  <span># Get task from crew definition </span><span>research_result</span> <span>=</span> <span>researcher_agent</span><span>.</span><span>execute_task</span><span>(</span><span>research_task</span><span>)</span>
    <span>print</span><span>(</span><span>"</span><span>Result from crew-defined task:</span><span>"</span><span>,</span> <span>research_result</span><span>)</span>
    from crewai import Agent, Task from .crew import IndependentCrew from .tools import WebSearchTool import os # Create an instance of the IndependentCrew class to access its configurations crew_instance = IndependentCrew() # -- Option 1: Create agent from config and execute a custom task -- # Access the agents configuration agent_config = crew_instance.agents_config['researcher'] # Now you can create your agent using this configuration researcher_agent = Agent( **agent_config, tools=[WebSearchTool()], verbose=True ) # Create a Task object with description, expected_output, and agent task = Task( description="What are the latest advancements in AI?", expected_output="A report summarizing the latest advancements in AI.", agent=researcher_agent ) # Execute the task with the agent result = researcher_agent.execute_task(task) print("Result from custom task:", result) # -- Option 2: Reuse agent and task from crew definition -- researcher_agent = crew_instance.researcher() # Get agent from crew definition research_task = crew_instance.research_task() # Get task from crew definition research_result = researcher_agent.execute_task(research_task) print("Result from crew-defined task:", research_result)
  5. Running the Task Independently (run_task.py):

    <span>from</span> <span>crewai</span> <span>import</span> <span>Agent</span><span>,</span> <span>Task</span>
    <span>from</span> <span>.crew</span> <span>import</span> <span>IndependentCrew</span>
    <span>from</span> <span>.tools</span> <span>import</span> <span>WebSearchTool</span>
    <span>from</span> <span>concurrent.futures</span> <span>import</span> <span>Future</span>
    <span>import</span> <span>os</span>
    <span># Create an instance of the IndependentCrew class to access its configurations </span><span>crew_instance</span> <span>=</span> <span>IndependentCrew</span><span>()</span>
    <span># -- Option 1: Create task from config and execute with a created agent -- </span>
    <span># Access the agents configuration </span><span>agent_config</span> <span>=</span> <span>crew_instance</span><span>.</span><span>agents_config</span><span>[</span><span>'</span><span>researcher</span><span>'</span><span>]</span>
    <span># Now you can create your agent using this configuration </span><span>researcher_agent</span> <span>=</span> <span>Agent</span><span>(</span>
    <span>**</span><span>agent_config</span><span>,</span>
    <span>tools</span><span>=</span><span>[</span><span>WebSearchTool</span><span>()],</span>
    <span>verbose</span><span>=</span><span>True</span>
    <span>)</span>
    <span># Access the tasks configuration </span><span>research_task_config</span> <span>=</span> <span>crew_instance</span><span>.</span><span>tasks_config</span><span>[</span><span>'</span><span>research_task</span><span>'</span><span>]</span>
    <span># Create the task using its configuration </span><span>research_task</span> <span>=</span> <span>Task</span><span>(</span>
    <span>**</span><span>research_task_config</span><span>,</span>
    <span>verbose</span><span>=</span><span>True</span>
    <span>)</span>
    <span># Execute the task synchronously </span><span>output</span> <span>=</span> <span>research_task</span><span>.</span><span>execute_sync</span><span>(</span><span>agent</span><span>=</span><span>researcher_agent</span><span>)</span>
    <span>print</span><span>(</span><span>"</span><span>Synchronous Task Output:</span><span>"</span><span>,</span> <span>output</span><span>.</span><span>raw</span><span>)</span>
    <span># Execute the task asynchronously </span><span>future_output</span><span>:</span> <span>Future</span> <span>=</span> <span>research_task</span><span>.</span><span>execute_async</span><span>(</span><span>agent</span><span>=</span><span>researcher_agent</span><span>)</span>
    <span># Perform other operations... </span>
    <span># Retrieve the result </span><span>output</span> <span>=</span> <span>future_output</span><span>.</span><span>result</span><span>()</span>
    <span>print</span><span>(</span><span>"</span><span>Asynchronous Task Output:</span><span>"</span><span>,</span> <span>output</span><span>.</span><span>raw</span><span>)</span>
    <span>custom_context</span> <span>=</span> <span>"</span><span>Focus on AI in healthcare for the year 2023.</span><span>"</span>
    <span>custom_tools</span> <span>=</span> <span>[]</span> <span># You can add or remove tools here </span>
    <span>output</span> <span>=</span> <span>research_task</span><span>.</span><span>execute_sync</span><span>(</span>
    <span>agent</span><span>=</span><span>researcher_agent</span><span>,</span>
    <span>context</span><span>=</span><span>custom_context</span><span>,</span>
    <span>tools</span><span>=</span><span>custom_tools</span>
    <span>)</span>
    <span>print</span><span>(</span><span>"</span><span>Task Output with Custom Context:</span><span>"</span><span>,</span> <span>output</span><span>.</span><span>raw</span><span>)</span>
    <span># -- Option 2: Reuse task from crew definition and provide custom context -- </span><span>research_task</span> <span>=</span> <span>crew_instance</span><span>.</span><span>research_task</span><span>()</span>
    <span>result</span> <span>=</span> <span>research_task</span><span>.</span><span>execute_sync</span><span>(</span><span>context</span><span>=</span><span>"</span><span>What are the ethical implications of AI?</span><span>"</span><span>,</span> <span>agent</span><span>=</span><span>researcher_agent</span><span>)</span>
    <span>print</span><span>(</span><span>"</span><span>Task result with custom context:</span><span>"</span><span>,</span> <span>result</span><span>)</span>
    <span>from</span> <span>crewai</span> <span>import</span> <span>Agent</span><span>,</span> <span>Task</span>
    <span>from</span> <span>.crew</span> <span>import</span> <span>IndependentCrew</span>
    <span>from</span> <span>.tools</span> <span>import</span> <span>WebSearchTool</span>
    <span>from</span> <span>concurrent.futures</span> <span>import</span> <span>Future</span>
    <span>import</span> <span>os</span>
    
    <span># Create an instance of the IndependentCrew class to access its configurations </span><span>crew_instance</span> <span>=</span> <span>IndependentCrew</span><span>()</span>
    
    <span># -- Option 1: Create task from config and execute with a created agent -- </span>
    <span># Access the agents configuration </span><span>agent_config</span> <span>=</span> <span>crew_instance</span><span>.</span><span>agents_config</span><span>[</span><span>'</span><span>researcher</span><span>'</span><span>]</span>
    
    <span># Now you can create your agent using this configuration </span><span>researcher_agent</span> <span>=</span> <span>Agent</span><span>(</span>
        <span>**</span><span>agent_config</span><span>,</span>
        <span>tools</span><span>=</span><span>[</span><span>WebSearchTool</span><span>()],</span>
        <span>verbose</span><span>=</span><span>True</span>
    <span>)</span>
    
    <span># Access the tasks configuration </span><span>research_task_config</span> <span>=</span> <span>crew_instance</span><span>.</span><span>tasks_config</span><span>[</span><span>'</span><span>research_task</span><span>'</span><span>]</span>
    
    <span># Create the task using its configuration </span><span>research_task</span> <span>=</span> <span>Task</span><span>(</span>
        <span>**</span><span>research_task_config</span><span>,</span>
        <span>verbose</span><span>=</span><span>True</span>
    <span>)</span>
    
    <span># Execute the task synchronously </span><span>output</span> <span>=</span> <span>research_task</span><span>.</span><span>execute_sync</span><span>(</span><span>agent</span><span>=</span><span>researcher_agent</span><span>)</span>
    <span>print</span><span>(</span><span>"</span><span>Synchronous Task Output:</span><span>"</span><span>,</span> <span>output</span><span>.</span><span>raw</span><span>)</span>
    
    <span># Execute the task asynchronously </span><span>future_output</span><span>:</span> <span>Future</span> <span>=</span> <span>research_task</span><span>.</span><span>execute_async</span><span>(</span><span>agent</span><span>=</span><span>researcher_agent</span><span>)</span>
    <span># Perform other operations... </span>
    <span># Retrieve the result </span><span>output</span> <span>=</span> <span>future_output</span><span>.</span><span>result</span><span>()</span>
    <span>print</span><span>(</span><span>"</span><span>Asynchronous Task Output:</span><span>"</span><span>,</span> <span>output</span><span>.</span><span>raw</span><span>)</span>
    
    <span>custom_context</span> <span>=</span> <span>"</span><span>Focus on AI in healthcare for the year 2023.</span><span>"</span>
    <span>custom_tools</span> <span>=</span> <span>[]</span>  <span># You can add or remove tools here </span>
    <span>output</span> <span>=</span> <span>research_task</span><span>.</span><span>execute_sync</span><span>(</span>
        <span>agent</span><span>=</span><span>researcher_agent</span><span>,</span>
        <span>context</span><span>=</span><span>custom_context</span><span>,</span>
        <span>tools</span><span>=</span><span>custom_tools</span>
    <span>)</span>
    <span>print</span><span>(</span><span>"</span><span>Task Output with Custom Context:</span><span>"</span><span>,</span> <span>output</span><span>.</span><span>raw</span><span>)</span>
    
    <span># -- Option 2: Reuse task from crew definition and provide custom context -- </span><span>research_task</span> <span>=</span> <span>crew_instance</span><span>.</span><span>research_task</span><span>()</span>
    <span>result</span> <span>=</span> <span>research_task</span><span>.</span><span>execute_sync</span><span>(</span><span>context</span><span>=</span><span>"</span><span>What are the ethical implications of AI?</span><span>"</span><span>,</span> <span>agent</span><span>=</span><span>researcher_agent</span><span>)</span>
    <span>print</span><span>(</span><span>"</span><span>Task result with custom context:</span><span>"</span><span>,</span> <span>result</span><span>)</span>
    from crewai import Agent, Task from .crew import IndependentCrew from .tools import WebSearchTool from concurrent.futures import Future import os # Create an instance of the IndependentCrew class to access its configurations crew_instance = IndependentCrew() # -- Option 1: Create task from config and execute with a created agent -- # Access the agents configuration agent_config = crew_instance.agents_config['researcher'] # Now you can create your agent using this configuration researcher_agent = Agent( **agent_config, tools=[WebSearchTool()], verbose=True ) # Access the tasks configuration research_task_config = crew_instance.tasks_config['research_task'] # Create the task using its configuration research_task = Task( **research_task_config, verbose=True ) # Execute the task synchronously output = research_task.execute_sync(agent=researcher_agent) print("Synchronous Task Output:", output.raw) # Execute the task asynchronously future_output: Future = research_task.execute_async(agent=researcher_agent) # Perform other operations... # Retrieve the result output = future_output.result() print("Asynchronous Task Output:", output.raw) custom_context = "Focus on AI in healthcare for the year 2023." custom_tools = [] # You can add or remove tools here output = research_task.execute_sync( agent=researcher_agent, context=custom_context, tools=custom_tools ) print("Task Output with Custom Context:", output.raw) # -- Option 2: Reuse task from crew definition and provide custom context -- research_task = crew_instance.research_task() result = research_task.execute_sync(context="What are the ethical implications of AI?", agent=researcher_agent) print("Task result with custom context:", result)

Key Takeaways

  • Flexibility: You don’t always have to run the entire crew. Isolate and test specific agents or tasks as needed.
  • Control: You have fine-grained control over the inputs and context when testing individual components.
  • Efficiency: Develop and debug faster by focusing your efforts.

Wrapping Up

Running agents and tasks independently is a helpful technique to have in your CrewAI toolbox. I hope this example project gives you a clear idea of how to implement it in your own projects. Feel free to experiment, adapt the code, and see how it can improve your development process.

If you have any questions, thoughts, or suggestions, feel free to leave a comment below. Let’s keep building awesome AI crews!

Links:

原文链接:Debugging Your Crew: Isolating Agents and Tasks in CrewAI

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
Don't look back, you're not going that way.
别回头,你要走的不是那条路
评论 抢沙发

请登录后发表评论

    暂无评论内容