Okay, so we just built an amazing crew. By now, you're probably getting excited and I am as well. But we can take a step further in this lesson, we are going to build a multi-agent system that's going to be able to help us plan an event. Think about a meetup or a conference, whatever it might be. These agents are going to help us to find a venue, do the planning, planning around the catering, everything that comes with that. So let's jump into it and see what that looks like. Welcome to our next lesson. And in this lesson we're going to be talking about tasks. I'm super excited about this one. We talked about so many things already and this is another great topic for us to dig into because at the end of the day, if you think about your agents, they are performing tasks. So, tasks are a cornerstone on multiple agent systems as well. So when you talk about tasks, I want to bring back something that we talked about a few lessons ago. The manager analogy. You might remember that we discussed that this manager/mentor framework to create agents where you put yourself in your manager's shoes and you think about what would be the people that you would hire in order to do a series of tasks or the job that you're trying to accomplish. And then you kind of use that as a starting point to define what will be the roles, the goals, and the backstory of your agents. So, you need to have a very good understanding of what is the goal that you're trying to accomplish. And you also need to have a very clear understanding of the process through how to achieve this goal. So with that in mind, you're going to have a clear understanding of the people that it would hire and those would be our agents. But now I want to build on top of this analogy. I want to expand this mental model to how you think about your tasks. Because whenever you hire someone to do something, you also need to think about how you're going to delegate work to them, especially if it's more of a junior person. You want to make sure that you're very explicit about why do you expect that they do and what is the expected result. So I would say for you to build great agents, you should add data to your mental model as well. So once that you think about what are the people that you would hire to get the job done, think about what processes and tasks I expect individuals on my team to do, and you can use that to create the tasks. And whenever you're creating a task again, you need to have at least two things top of mind. One: a clear description of what is the task. And two: set a clear and concise expectation. Again, to go back to your analogy, let's think that you just hired a junior engineer to work on your team, and your tasked with coaching this person. It's their first day on the job. You basically want to give them a specific task to work on. You want to give them a specific task to work on. You want to explain their task very truthfully, and then you want to make sure that you say, why do you expect them to do. So crewAI kind of forces you to think that way, because crewAI makes sure that it's mandatory for you to share at least two attributes on every task that you create. The description and the expected outcome. And that is used to build better internal prompts. But then also apply to any other framework out there. You will get better results if you go the extra mile on explaining what is a task and what you expect your agent to do. Other than that, there is a bunch of other things that you can set on the task. crewAI offers a bunch of hyperparameters that you could use, like setting a context, or setting a callback, or overriding the agent tools with a specific task, force human input, kind of like making sure that before the agent finishes the work, it stops and asks you how you feel about it so you can give further instructions. Also, we can talk about execution. This tasks are synchronous or outputting their results as pedantic objects or json object, or even outputting them as a file or running these tasks in parallel. So you can see how there is a bunch of options when you're talking about tasks in here. And you're going to need to take all that into account depending on how complex your multi-agent system is. crewAI offers all these options, and you're going to find a bunch of them in other frameworks as well. Maybe not all of them, and maybe in a different shapes and forms, but in the end of the day, it's all about how you can set up your agents for success to perform their tasks super efficiently. So with that in mind, let's jump into code real quick,