Bridge Langchain agents with uAgents and register them on Agentverse
Project description
🦜️🔗 LangChain UAgents
This package contains the LangChain integration with uAgents, allowing you to convert Langchain agents into uAgents and register them on Agentverse.
Features
- Convert Langchain agents to uAgents
- Automatic port allocation with fallback options
- Register agents on Agentverse
- Support for AI agent message forwarding
- ASI1-agentic accessible agent
- Clean shutdown and resource management
Installation
pip install -U langchain-uagents
Credentials
We also need to set our Agentverse API key. You can get an API key by visiting this site, or follow the steps in the Agentverse documentation.
import os
from dotenv import load_dotenv
# Load environment variables
load_dotenv()
# Get API token for Agentverse
API_TOKEN = os.getenv("AV_API_KEY", "your_default_key_here")
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY", "your_default_openai_key_here")
UAgentRegisterTool
Here we show how to use the UAgentRegisterTool to convert a Langchain agent into a uAgent and register it on Agentverse.
Instantiation
from langchain_uagents import UAgentRegisterTool
tool = UAgentRegisterTool()
Basic Usage
The UAgentRegisterTool accepts the following parameters during invocation:
agent_obj(required): The Langchain agent object to convertname(required): Name for the uAgentport(optional, int): Port to run the agent on, defaults to 8000description(optional, str): Description of the agent's functionalityapi_token(required): Agentverse API token for registrationstart_range(optional, int): Start of port range for automatic allocationend_range(optional, int): End of port range for automatic allocation
agent_info = tool.invoke({
"agent_obj": agent,
"name": "my_agent",
"port": 8080,
"description": "A useful agent for my tasks",
"api_token": API_TOKEN
})
# Print agent info
print(f"Created uAgent '{agent_info['name']}' with address {agent_info['address']} on port {agent_info['port']}")
Complete Example
Here's a complete example showing how to create a calculator agent with Langchain and register it as a uAgent:
import os
import time
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain.agents import initialize_agent, AgentType, Tool
from langchain_uagents import UAgentRegisterTool, cleanup_uagent
# Load environment variables
load_dotenv()
# Get API token for Agentverse
API_TOKEN = os.getenv("AV_API_KEY")
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
# Define a simple calculator tool
def calculator_tool(expression: str) -> str:
"""Evaluates a basic math expression (e.g., '2 + 2 * 3')."""
try:
result = eval(expression)
return str(result)
except Exception as e:
return f"Error: {str(e)}"
# Create the langchain agent
tools = [
Tool(
name="Calculator",
func=calculator_tool,
description="Useful for evaluating math expressions"
)
]
llm = ChatOpenAI(temperature=0, api_key=OPENAI_API_KEY)
agent = initialize_agent(
tools=tools,
llm=llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True
)
# Create and register the uAgent
tool = UAgentRegisterTool()
agent_info = tool.invoke({
"agent_obj": agent,
"name": "calculator_agent",
"port": 8080,
"description": "A calculator agent for testing",
"api_token": API_TOKEN
})
# Print agent info
print(f"Created uAgent '{agent_info['name']}' with address {agent_info['address']} on port {agent_info['port']}")
# Keep the agent running
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
print("\nShutting down calculator agent...")
cleanup_uagent("calculator_agent")
print("Calculator agent stopped.")
Port Allocation
The tool automatically handles port allocation:
- First tries to use the specified port
- If the port is in use, searches for an available port in the range 8000-9000
- Raises a RuntimeError if no ports are available
You can customize the port range:
agent_info = tool.invoke({
"agent_obj": agent,
"name": "my_agent",
"port": 8080, # Preferred port
"start_range": 8000, # Start of port range
"end_range": 9000, # End of port range
"description": "A useful agent",
"api_token": API_TOKEN
})
Cleanup
Always clean up your uAgent when done:
from langchain_uagents import cleanup_uagent
# Clean up by agent name
cleanup_uagent("my_agent")
Environment Variables
The tool requires the following environment variables:
AV_API_KEY: Your Agentverse API key for registering agentsOPENAI_API_KEY: Your OpenAI API key for the Langchain agent
You can set these in a .env file or export them in your environment:
export AV_API_KEY="your_agentverse_api_key"
export OPENAI_API_KEY="your_openai_api_key"
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file langchain_uagents-0.1.0.tar.gz.
File metadata
- Download URL: langchain_uagents-0.1.0.tar.gz
- Upload date:
- Size: 10.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.1 CPython/3.13.1 Darwin/24.0.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6a7950c788c2ba00fd8186c98a9583eef7ed3d2fc090cd71f5abdebbf9ee18a0
|
|
| MD5 |
659b9894f3d8a29bd9c9116d712b8b8e
|
|
| BLAKE2b-256 |
5ddd1ffca9903ea427eb2801404b07002966994764048ecedc033422f3162d87
|
File details
Details for the file langchain_uagents-0.1.0-py3-none-any.whl.
File metadata
- Download URL: langchain_uagents-0.1.0-py3-none-any.whl
- Upload date:
- Size: 10.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.1 CPython/3.13.1 Darwin/24.0.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6d389ddb804b6e6354d33c329c93713214aa8a3db9cf38b5289bf6a0b7c12491
|
|
| MD5 |
6f1c79307ad1cde55390f1e9f0b605cf
|
|
| BLAKE2b-256 |
eecbaeceed3c850ec372bef3f5fa8ebaf98ed7e200b3bc64fe014bcfc1673cef
|