Skip to content

Conversation

@tonycdr-prog
Copy link

Summary

Implements PydanticAI agent runner as requested in #272, following the existing LangChain integration pattern.

What is PydanticAI?

PydanticAI is a type-safe, model-agnostic agent framework that provides:

  • Strong typing with Pydantic models
  • Dependency injection for tools
  • Streaming support
  • Built-in tool/function calling
  • Multiple model provider support

Changes

  • New PydanticAIAgentRunner class in src/openagents/agents/pydantic_ai_agent.py
  • Tool conversion utilities:
    • openagents_tool_to_pydantic() - convert OpenAgents tools to PydanticAI format
    • pydantic_tool_to_openagents() - convert PydanticAI tools to OpenAgents format
  • Full feature parity with LangChain integration:
    • Event filtering (event_names, event_filter)
    • Custom response handlers
    • Network tool injection
  • PydanticAI-specific: dependency injection support via deps parameter

Usage

from pydantic_ai import Agent
from openagents.agents import PydanticAIAgentRunner

# Create a type-safe PydanticAI agent
agent = Agent(
    'openai:gpt-4',
    system_prompt='You are a helpful assistant.'
)

# Connect to OpenAgents network
runner = PydanticAIAgentRunner(
    pydantic_agent=agent,
    agent_id='my-pydantic-agent'
)
runner.start(network_host='localhost', network_port=8600)
runner.wait_for_stop()

With Dependencies

from dataclasses import dataclass
from pydantic_ai import Agent, RunContext

@dataclass
class MyDeps:
    api_key: str
    user_id: str

agent = Agent('openai:gpt-4', deps_type=MyDeps)

@agent.tool
async def get_user_data(ctx: RunContext[MyDeps]) -> str:
    return f'Data for user {ctx.deps.user_id}'

runner = PydanticAIAgentRunner(
    pydantic_agent=agent,
    agent_id='my-agent',
    deps=MyDeps(api_key='...', user_id='123')
)

Reference

Follows the pattern established in src/openagents/agents/langchain_agent.py

Closes #272

Implements PydanticAI agent runner as requested in openagents-org#272.

## Changes
- Add `PydanticAIAgentRunner` class in `src/openagents/agents/pydantic_ai_agent.py`
- Support for PydanticAI's type-safe agents
- Tool conversion utilities:
  - `openagents_tool_to_pydantic()` - convert OpenAgents tools to PydanticAI
  - `pydantic_tool_to_openagents()` - convert PydanticAI tools to OpenAgents
- Event filtering support (event_names, event_filter)
- Dependency injection support via `deps` parameter
- Custom response handler support
- Export new classes from `openagents.agents`

## Usage
```python
from pydantic_ai import Agent
from openagents.agents import PydanticAIAgentRunner

agent = Agent('openai:gpt-4', system_prompt='You are helpful.')

runner = PydanticAIAgentRunner(
    pydantic_agent=agent,
    agent_id='my-pydantic-agent'
)
runner.start(network_host='localhost', network_port=8600)
```

Closes openagents-org#272
@vercel
Copy link

vercel bot commented Feb 3, 2026

@Bandit-AI is attempting to deploy a commit to the Raphael's projects Team on Vercel.

A member of the Team first needs to authorize it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Help Wanted: PydanticAI Agent Integration

2 participants