Usage ===== Basic Usage ---------- Create and use Agentle agents in your Python applications: .. code-block:: python from agentle.agents.agent import Agent from agentle.generations.providers.google.google_genai_generation_provider import GoogleGenaiGenerationProvider # Create a simple agent agent = Agent( name="Quick Start Agent", generation_provider=GoogleGenaiGenerationProvider(), model="gemini-2.0-flash", instructions="You are a helpful assistant who provides concise, accurate information." ) # Run the agent response = agent.run("What are the three laws of robotics?") # Print the response print(response.text) Core Concepts ----------- Agents ~~~~~~ The core building block of Agentle is the ``Agent`` class. Each agent: - Can process various input types (text, images, structured data) - Can call tools/functions to perform actions - Can generate structured outputs - Maintains context through conversations - Can incorporate static knowledge from documents, URLs, or text Static Knowledge Integration ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Enhance your agents with domain-specific knowledge from various sources: .. code-block:: python from agentle.agents.agent import Agent from agentle.agents.knowledge.static_knowledge import StaticKnowledge from agentle.generations.providers.google.google_genai_generation_provider import GoogleGenaiGenerationProvider # Create an agent with static knowledge travel_expert = Agent( name="Japan Travel Expert", generation_provider=GoogleGenaiGenerationProvider(), model="gemini-2.0-flash", instructions="You are a Japan travel expert who provides detailed information about Japanese destinations.", # Provide static knowledge from multiple sources static_knowledge=[ # Include knowledge from local documents - cache for 1 hour (3600 seconds) StaticKnowledge(content="data/japan_travel_guide.pdf", cache=3600), # Include knowledge from websites - cache indefinitely StaticKnowledge(content="https://www.japan-guide.com/", cache="infinite"), # Include direct text knowledge - no caching (default) "Tokyo is the capital of Japan and one of the most populous cities in the world." ] ) Tools (Function Calling) ~~~~~~~~~~~~~~~~~~~~~~ Extend your agents with custom tools to perform actions beyond text generation: .. code-block:: python def get_weather(location: str) -> str: """ Get the current weather for a location. Args: location: The city or location to get weather for Returns: A string describing the weather """ weather_data = { "New York": "Sunny, 75°F", "London": "Rainy, 60°F", "Tokyo": "Cloudy, 65°F", "Sydney": "Clear, 80°F", } return weather_data.get(location, f"Weather data not available for {location}") # Create an agent with a tool weather_agent = Agent( name="Weather Assistant", generation_provider=GoogleGenaiGenerationProvider(), model="gemini-2.0-flash", instructions="You are a helpful assistant that can answer questions about the weather.", tools=[get_weather] # Pass the function as a tool ) # The agent will automatically use the tool when appropriate response = weather_agent.run("What's the weather like in Tokyo?") print(response.text) Structured Outputs ~~~~~~~~~~~~~~~~ Get strongly-typed responses from your agents using Pydantic models: .. code-block:: python from pydantic import BaseModel from typing import List, Optional # Define your output schema class WeatherForecast(BaseModel): location: str current_temperature: float conditions: str forecast: List[str] humidity: Optional[int] = None # Create an agent with structured output structured_agent = Agent( name="Weather Agent", generation_provider=GoogleGenaiGenerationProvider(), model="gemini-2.0-flash", instructions="You are a weather forecasting assistant. Provide accurate forecasts.", response_schema=WeatherForecast # Define the expected response structure ) # Run the agent response = structured_agent.run("What's the weather like in San Francisco?") # Access structured data with type hints weather = response.parsed print(f"Weather for: {weather.location}") print(f"Temperature: {weather.current_temperature}°C") print(f"Conditions: {weather.conditions}") Agent Composition ---------------- Agent Pipelines ~~~~~~~~~~~~~ Connect agents in a sequence where the output of one becomes the input to the next: .. code-block:: python from agentle.agents.agent import Agent from agentle.agents.agent_pipeline import AgentPipeline # Create specialized agents research_agent = Agent( name="Research Agent", generation_provider=provider, model="gemini-2.0-flash", instructions="""You are a research agent focused on gathering information. Be thorough and prioritize accuracy over speculation.""" ) analysis_agent = Agent( name="Analysis Agent", generation_provider=provider, model="gemini-2.0-flash", instructions="""You are an analysis agent that identifies patterns. Highlight meaningful relationships and insights from the data.""" ) summary_agent = Agent( name="Summary Agent", generation_provider=provider, model="gemini-2.0-flash", instructions="""You are a summary agent that creates concise summaries. Present key findings in a logical order with accessible language.""" ) # Create a pipeline pipeline = AgentPipeline( agents=[research_agent, analysis_agent, summary_agent], debug_mode=True # Enable to see intermediate steps ) # Run the pipeline result = pipeline.run("Research the impact of artificial intelligence on healthcare") print(result.text) Agent Teams ~~~~~~~~~ Create teams of specialized agents with an orchestrator that dynamically selects the most appropriate agent for each task: .. code-block:: python from agentle.agents.agent import Agent from agentle.agents.agent_team import AgentTeam from agentle.agents.a2a.models.agent_skill import AgentSkill # Create specialized agents with different skills research_agent = Agent( name="Research Agent", description="Specialized in finding accurate information on various topics", generation_provider=provider, model="gemini-2.0-flash", instructions="You are a research agent focused on gathering accurate information.", skills=[ AgentSkill(name="search", description="Find information on any topic"), AgentSkill(name="fact-check", description="Verify factual claims"), ], ) coding_agent = Agent( name="Coding Agent", description="Specialized in writing and debugging code", generation_provider=provider, model="gemini-2.0-flash", instructions="You are a coding expert focused on writing clean, efficient code.", skills=[ AgentSkill(name="code-generation", description="Write code in various languages"), AgentSkill(name="debugging", description="Find and fix bugs in code"), ], ) # Create a team with these agents team = AgentTeam( agents=[research_agent, coding_agent], orchestrator_provider=provider, orchestrator_model="gemini-2.0-flash", ) # Run the team with different queries research_query = "What are the main challenges in quantum computing today?" research_result = team.run(research_query) Deployment Options ---------------- Web API with BlackSheep ~~~~~~~~~~~~~~~~~~~~ Expose your agent as a RESTful API: .. code-block:: python from agentle.agents.agent import Agent from agentle.agents.asgi.blacksheep.agent_to_blacksheep_application_adapter import AgentToBlackSheepApplicationAdapter from agentle.generations.providers.google.google_genai_generation_provider import GoogleGenaiGenerationProvider # Create your agent code_assistant = Agent( name="Code Assistant", description="An AI assistant specialized in helping with programming tasks.", generation_provider=GoogleGenaiGenerationProvider(), model="gemini-2.0-flash", instructions="""You are a helpful programming assistant. You can answer questions about programming languages, help debug code, explain programming concepts, and provide code examples.""", ) # Convert the agent to a BlackSheep ASGI application app = AgentToBlackSheepApplicationAdapter().adapt(code_assistant) # Run the API server if __name__ == "__main__": import uvicorn uvicorn.run(app, host="127.0.0.1", port=8000) Interactive UI with Streamlit ~~~~~~~~~~~~~~~~~~~~~~~~~~ Create a chat interface for your agent: .. code-block:: python from agentle.agents.agent import Agent from agentle.agents.ui.streamlit import AgentToStreamlit # Create your agent travel_agent = Agent( name="Travel Guide", description="A helpful travel guide that answers questions about destinations.", generation_provider=GoogleGenaiGenerationProvider(), model="gemini-2.0-flash", instructions="""You are a knowledgeable travel guide who helps users plan trips.""", ) # Convert the agent to a Streamlit app streamlit_app = AgentToStreamlit( title="Travel Assistant", description="Ask me anything about travel destinations and planning!", initial_mode="presentation", # Can be "dev" or "presentation" ).adapt(travel_agent) # Run the Streamlit app if __name__ == "__main__": streamlit_app() For more detailed examples, see the :doc:`examples` page.