Optimizing Agent-Based Systems: Structuring Inputs and Outputs for Enhanced Performance
Want to boost the performance of your agent-based systems? A key strategy is meticulously structuring both inputs and intermediate outputs exchanged between agents. This article details how to organize inputs, utilize placeholders for data transfer, and structure outputs to ensure each agent delivers the expected results. By optimizing these elements, you'll achieve more consistent and reliable outcomes from your agentic systems. Agentic systems leverage multiple agents collaborating, communicating, and problem-solving—capabilities exceeding those of individual LLMs. This guide uses CrewAI, Pydantic models, and JSON to structure outputs (and inputs) in a multi-agent context.
Pydantic models, provided by the Pydantic library, are Python objects designed for data parsing and validation. They enable the creation of Python classes (models) that automatically validate data upon instantiation, ensuring input data matches expected types and constraints. This ensures reliable structured data handling.
Key Features:
Feature | Description |
---|---|
Data Validation | Verifies input data against expected types (e.g., int , str , list ) and custom rules. |
Automatic Type Conversion | Automatically converts compatible data types (e.g., "2024-10-27" to datetime.date ). |
Data Serialization | Serializes data into formats like JSON, simplifying API interactions. |
Default Values | Allows optional fields or default values for flexible input handling. |
Let's create a UserModel
inheriting from Pydantic's BaseModel
. The instantiated class requires an integer id
, a string name
, and an email address.
from pydantic import BaseModel class UserModel(BaseModel): id: int name: str email: str # Valid input valid_user = UserModel(id=1, name="Vidhya", email="vidhya@example.com") print(valid_user) # Invalid input (raises a validation error) try: invalid_user = UserModel(id="one", name="Vidhya", email="vidhya@example.com") except ValueError as e: print(f"Validation Error: {e}")
This demonstrates Pydantic's error handling when incorrect data types are provided.
Let's explore optional, date, and default value features:
from pydantic import BaseModel from typing import Optional from datetime import date class EventModel(BaseModel): event_name: Optional[str] = None # Optional field event_loc: str = "India" # Default value event_date: date # Automatic conversion event = EventModel(event_date="2024-10-27") print(event)
This showcases optional fields and automatic type conversion.
Install CrewAI:
pip install crewai
Inputs are formatted within curly braces {}
using variable names when defining Agents and Tasks. Setting human_input=True
prompts the user for output feedback. Here's an example of an agent and task for answering physics questions:
from crewai import Agent, Task, Crew import os os.environ['OPENAI_API_KEY'] = '' # Replace with your key os.environ['OPENAI_MODEL_NAME'] = 'gpt-4o-mini-2024-07-18' # Or your preferred model # ... (Agent and Task definitions as in the original example) ...
Inputs are passed via the inputs
parameter in crew.kickoff()
.
Let's create agents to collect user details (name, email, phone, job). Structuring outputs as Pydantic models or JSON defines the expected output format, ensuring subsequent agents receive structured data.
from pydantic import BaseModel from typing import List # ... (Pydantic model definitions as in the original example) ... # ... (Agent and Task definitions as in the original example, using output_pydantic and output_json) ...
The final agent combines all details, saving the output to a file using output_file
.
This article highlighted the importance of structuring inputs and outputs in multi-agent systems using Pydantic and CrewAI. Well-structured data enhances performance, reliability, and prevents errors. These strategies build more robust agentic systems for complex tasks.
Q1. What are agent-based systems? Agent-based systems use multiple agents collaborating to solve problems, exceeding the capabilities of single LLMs.
Q2. What is CrewAI? CrewAI is a framework for managing agentic systems, streamlining agent collaboration and data handling.
Q3. How to input images in CrewAI? One method is to provide the image URL as an input variable.
Q4. What are Pydantic models? Pydantic models validate and serialize data, ensuring data integrity in agent-based systems.
Q5. How to structure outputs using Pydantic? Define expected output fields within Pydantic models to ensure consistent data formatting for subsequent agents.
The above is the detailed content of Structuring Inputs & Outputs in Multi Agent systems Using CrewAI. For more information, please follow other related articles on the PHP Chinese website!