Skip to main content

Adapters for uAgents to integrate with LangChain and CrewAI

Project description

uAgents Adapter

This package provides adapters for integrating uAgents with popular AI libraries:

  • LangChain Adapter: Convert LangChain agents to uAgents
  • CrewAI Adapter: Convert CrewAI crews to uAgents

Installation

# Install the base package
pip install uagents-adapter

# Install with LangChain support
pip install "uagents-adapter[langchain]"

# Install with CrewAI support
pip install "uagents-adapter[crewai]"

# Install with all extras
pip install "uagents-adapter[langchain,crewai]"

LangChain Adapter

The LangChain adapter allows you to convert any LangChain agent into a uAgent that can interact with other agents in the Agentverse ecosystem.

from langchain_core.agents import AgentExecutor, create_react_agent
from langchain_core.tools import BaseTool
from langchain_openai import ChatOpenAI

from uagents_adapter import LangchainRegisterTool

# Create your LangChain agent
llm = ChatOpenAI(model_name="gpt-4")
tools = [...]  # Your tools here
agent = create_react_agent(llm, tools)
agent_executor = AgentExecutor(agent=agent, tools=tools)

# Create uAgent register tool
register_tool = LangchainRegisterTool()

# Register the agent as a uAgent
result = register_tool.invoke({
    "agent_obj": agent_executor,
    "name": "my_langchain_agent",
    "port": 8000,
    "description": "My LangChain agent as a uAgent",
    "mailbox": True,  # Use Agentverse mailbox service
    "api_token": "YOUR_AGENTVERSE_API_TOKEN",  # Optional: for Agentverse registration
    "return_dict": True  # Return a dictionary instead of a string
})

print(f"Created uAgent '{result['agent_name']}' with address {result['agent_address']} on port {result['agent_port']}")

CrewAI Adapter

The CrewAI adapter allows you to convert any CrewAI crew into a uAgent.

from crewai import Crew, Agent, Task
from uagents_adapter import CrewaiRegisterTool

# Define your CrewAI crew
agent1 = Agent(
    role="Researcher",
    goal="Research thoroughly",
    backstory="You are a skilled researcher",
    verbose=True,
    allow_delegation=False
)

task1 = Task(
    description="Research about a topic",
    agent=agent1
)

crew = Crew(
    agents=[agent1],
    tasks=[task1],
    verbose=True
)

# Create CrewAI register tool
register_tool = CrewaiRegisterTool()

# Register the crew as a uAgent
result = register_tool.invoke({
    "crew_obj": crew,
    "name": "my_crew_agent",
    "port": 8001,
    "description": "My CrewAI crew as a uAgent",
    "mailbox": True,  # Use Agentverse mailbox service
    "api_token": "YOUR_AGENTVERSE_API_TOKEN",  # Optional: for Agentverse registration
    "query_params": {
        "topic": {
            "type": "string",
            "description": "The topic to research",
            "required": True
        }
    },
    "example_query": "Research about artificial intelligence",
    "return_dict": True  # Return a dictionary instead of a string
})

print(f"Created uAgent '{result['agent_name']}' with address {result['agent_address']} on port {result['agent_port']}")

Agentverse Integration

Mailbox Service

By default, agents are created with mailbox=True, which enables the agent to use the Agentverse mailbox service. This allows agents to communicate with other agents without requiring a publicly accessible endpoint.

When mailbox is enabled:

  • Agents can be reached by their agent address (e.g., agent1q...)
  • No port forwarding or public IP is required
  • Messages are securely handled through the Agentverse infrastructure

Agentverse Registration

You can optionally register your agent with the Agentverse API, which makes it discoverable and usable by other users in the Agentverse ecosystem:

  1. Obtain an API token from Agentverse.ai
  2. Include the token when registering your agent:
    result = register_tool.invoke({
        # ... other parameters
        "api_token": "YOUR_AGENTVERSE_API_TOKEN"
    })
    

When an agent is registered with Agentverse:

  • It connects to the mailbox service automatically
  • It appears in the Agentverse directory
  • A README with input/output models is automatically generated
  • The agent gets an "innovationlab" badge
  • Other users can discover and interact with it
  • You can monitor its usage and performance through the Agentverse dashboard

Example of auto-generated README for LangChain agents:

# Agent Name
Agent Description
![tag:innovationlab](https://img.shields.io/badge/innovationlab-3D8BD3)

**Input Data Model**
```python
class QueryMessage(Model):
    query: str

Output Data Model

class ResponseMessage(Model):
    response: str

Example of auto-generated README for CrewAI agents with parameters:
```markdown
# Agent Name
Agent Description
![tag:innovationlab](https://img.shields.io/badge/innovationlab-3D8BD3)

**Input Data Model**
```python
class ParameterMessage(Model):
    topic: str
    max_results: int | None = None

Output Data Model

class ResponseMessage(Model):
    response: str

Example Query

Research about artificial intelligence

## License

Apache 2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

uagents_adapter-0.2.0.tar.gz (14.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

uagents_adapter-0.2.0-py3-none-any.whl (19.2 kB view details)

Uploaded Python 3

File details

Details for the file uagents_adapter-0.2.0.tar.gz.

File metadata

  • Download URL: uagents_adapter-0.2.0.tar.gz
  • Upload date:
  • Size: 14.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.11.12 Linux/6.11.0-1013-azure

File hashes

Hashes for uagents_adapter-0.2.0.tar.gz
Algorithm Hash digest
SHA256 11a75e2c8c14f7a752879bfcd1432ade2dcc0de0c64747d2c690553a92f14c2a
MD5 4030a7b6f109fb6a138a0e244f0d8868
BLAKE2b-256 259d87bd75f70fbff47d931dcac19fa476299e0c51ec9cba5b91eaa66c73826e

See more details on using hashes here.

File details

Details for the file uagents_adapter-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: uagents_adapter-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 19.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.11.12 Linux/6.11.0-1013-azure

File hashes

Hashes for uagents_adapter-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1c0c3acd2347ba21b5f76cc7159e03f0e549988ae7914a6c7835fdd2f1489eff
MD5 4f9f00c72546ef5e65f3c1a29d746d91
BLAKE2b-256 ccb0148ba1016018a69113f8b48bae8c83c1dcc1bd988ff49bebc83d301b1064

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page