Skip to main content

🚀🔗 Leveraging Pydantic-AI with Composio

Integrate Pydantic-AI agents with Composio to enable direct interaction with external applications, enhancing their capabilities through strongly-typed, validated tools.

Objective

  • Automate GitHub operations using type-safe instructions via Pydantic-AI's Tool system.
  • Demonstrate how to use Composio's tools with Pydantic-AI's strict type checking and validation.

Installation and Setup

Install the necessary packages and connect your GitHub account to enable agent interactions with GitHub:

# Install Composio Pydantic-AI package
pip install composio-pydanticai

# Connect your GitHub account
composio add github

# View available applications you can connect with
composio apps

Usage Steps

1. Import Required Packages

Set up your environment by importing the necessary components from Composio & Pydantic-AI:

from dotenv import load_dotenv
import os

from composio import Action
from composio_pydanticai import ComposioToolSet
from pydantic_ai import Agent

2. Initialize Tools with Composio

Configure and fetch GitHub tools provided by Composio:

# Initialize toolset
composio_toolset = ComposioToolSet()

# Configure max retries for specific tools
max_retries = {
    Action.GITHUB_STAR_A_REPOSITORY_FOR_THE_AUTHENTICATED_USER: 5,    # More retries for starring
    Action.GITHUB_CREATE_REPOSITORY: 2   # Fewer retries for creation
}

# Get GitHub tools with retry configuration
tools = composio_toolset.get_tools(
    actions=[Action.GITHUB_STAR_A_REPOSITORY_FOR_THE_AUTHENTICATED_USER],
    max_retries=max_retries,
    default_max_retries=3  # Default retries for tools not specified in max_retries
)

The max_retries parameter lets you configure retry attempts per tool, with a default fallback for unspecified tools.

3. Set Up the Pydantic-AI Agent

Create and configure a Pydantic-AI agent with the Composio tools:

# Create an agent with the tools
agent = Agent(
    model="openai:gpt-4-turbo",  # Using a known model name
    tools=tools,
    system_prompt="""You are an AI agent that helps users interact with GitHub.
    You can perform various GitHub operations using the available tools.
    When given a task, analyze it and use the appropriate tool to complete it.""",
)

4. Execute Tasks

Run your agent with specific tasks:

# Define task
task = "Star a repo composiohq/composio on GitHub"

# Run the agent synchronously
result = agent.run_sync(task)
print("Result:", result.data)
print("Trace:\n\n", result.all_messages())

Key Features

  1. Type Safety: Leverages Pydantic-AI's strong type system for parameter validation
  2. Async Support: Built-in support for asynchronous operations
  3. Error Handling: Proper validation error handling with detailed feedback
  4. Tool Context: Automatic context injection for tool execution
  5. Flexible Retry Configuration: Configure retries per tool with fallback defaults

Advanced Usage

The integration supports more complex scenarios:

# Using multiple tools
tools = composio_toolset.get_tools(
    actions=[
        Action.GITHUB_STAR_A_REPOSITORY_FOR_THE_AUTHENTICATED_USER,
        Action.GITHUB_CREATE_REPOSITORY
    ],
    max_retries={
        Action.GITHUB_STAR_A_REPOSITORY_FOR_THE_AUTHENTICATED_USER: 5,
        Action.GITHUB_CREATE_REPOSITORY: 2
    }
)

# Filtering tools by tags
tools = composio_toolset.get_tools(
    tags=["github", "repository"],
    default_max_retries=3
)

# Using app-specific tools
tools = composio_toolset.get_tools(
    apps=[App.GITHUB],
    max_retries={
        Action.GITHUB_STAR_A_REPOSITORY_FOR_THE_AUTHENTICATED_USER: 5
    }
)

Best Practices

  1. Always use proper type hints in your code
  2. Handle validation errors appropriately
  3. Use the latest version of both Pydantic-AI and Composio
  4. Leverage async operations for better performance
  5. Keep your API keys secure using environment variables
  6. Configure retries based on the specific needs of each tool

Release files for composio-pydanticai 0.7.20

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for composio-pydanticai 0.7.20
File Size Uploaded
composio_pydanticai-0.7.20.tar.gz 5.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for composio-pydanticai 0.7.20
File Interpreter ABI Platform
composio_pydanticai-0.7.20-py3-none-any.whl Python 3 none any Details

Total release size: 10.7 kB

Release files / composio_pydanticai-0.7.20.tar.gz

Download URL composio_pydanticai-0.7.20.tar.gz
Size 5.0 kB
Tags Source
SHA-256 checksum
How to use checksums
067222e8d0d47521d8ec39a340b7ae7d1fd9ad71840beeffe7e9a984f6524fea
BLAKE2b-256 checksum
How to use checksums
11526fc3c155b52ad653fabf08a5a9c1205df2bc0b26c5920dfac96c49500345
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / composio_pydanticai-0.7.20-py3-none-any.whl

Download URL composio_pydanticai-0.7.20-py3-none-any.whl
Size 5.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
831942c297f7b520bbc4f4a4719718b3ef3082b01dd0116456cdfd56772a9047
BLAKE2b-256 checksum
How to use checksums
60575964ee0efa698d99e6f36a73270d455ef7e77cc8c435f3ac8785de455901
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page