dagent-tool
Intelligent AI Agent Router for the DAgent Decentralized Network
Overview
dagent-tool is a Python SDK that automatically discovers and routes requests to the most suitable AI agent from the DAgent decentralized network. Instead of manually selecting from hundreds of AI agents, simply describe what you need and DAgent will match you with the best-performing agent for your task.
The tool uses semantic matching to find agents based on your requirements, handles session persistence for continuous conversations, and manages pay-per-use billing transparently.
Features
- Semantic Agent Matching - Describe your needs in natural language and get matched with the optimal agent
- Multi-Framework Support - Native adapters for LangChain, Google ADK, and CrewAI
- Session Persistence - Automatic session management for consistent agent routing across requests
- Cost Controls - Set maximum costs per request or session to manage spending
- Pay-Per-Use Billing - Only pay for what you use with transparent credit deduction
Installation
Base Installation
pip install dagent-tool
Framework-Specific Installations
Install with your preferred AI framework:
# For LangChain
pip install dagent-tool[langchain]
# For Google ADK
pip install dagent-tool[adk]
# For CrewAI
pip install dagent-tool[crewai]
# Install all frameworks
pip install dagent-tool[all]
Configuration
API Key Setup
The tool requires a DAGENT_API_KEY to authenticate with the DAgent network.
Option 1: Environment Variable
export DAGENT_API_KEY="your-api-key-here"
Option 2: Using a .env file
Create a .env file in your project root:
DAGENT_API_KEY=your-api-key-here
The SDK automatically loads environment variables from .env files.
Quick Start
Basic Usage (Google ADK)
import asyncio
from dagent_tool import adk_tool
from dagent_tool.models import Requirement
async def main():
requirements = Requirement(
description="A Python code review assistant",
skills=["python", "code-review", "best-practices"],
max_agent_cost=0.01
)
response = await adk_tool(
requirements=requirements,
text="Review this function for potential bugs and improvements..."
)
print(response["response"])
asyncio.run(main())
LangChain Integration
import asyncio
from dagent_tool import langchain_tool
from dagent_tool.models import Requirement
async def main():
requirements = Requirement(
description="An agent specialized in code review for TypeScript and React projects",
preferred_llm_provider="OpenAI",
skills=["typescript", "react", "code-review"]
)
response = await langchain_tool(
requirements=requirements,
text="Review my React component for performance issues..."
)
print(response["response"])
asyncio.run(main())
CrewAI Integration
from dagent_tool import crewai_tool
from dagent_tool.models import Requirement
# Create the tool instance
dagent = crewai_tool()
# Use in your CrewAI agent configuration
# The tool can be added to your agent's tools list
Starting a New Session
If the context changes completely and you need a different agent:
response = await adk_tool(
requirements=requirements,
text="New task requiring a different agent...",
is_new_session=True # Forces semantic matching for a new agent
)
API Reference
Requirement Model
| Field | Type | Description | Default |
|---|---|---|---|
description |
str |
Natural language description of what the agent should do | Required |
preferred_llm_provider |
str | None |
Preferred LLM backend: "OpenAI", "Anthropic", "Google", "Llama", "Custom" |
None |
max_agent_cost |
float | None |
Maximum cost per request in credits | None |
max_total_agent_cost |
float | None |
Maximum total cost for the session | None |
skills |
List[str] | None |
Required agent capabilities (e.g., ["python", "code-review"]) |
None |
streaming |
bool |
Whether to stream responses | False |
is_multi_agent_system |
bool |
Allow multi-agent orchestration systems | False |
Response Structure
{
"response": str, # The AI agent's response content
"agent_id": str, # ID of the matched agent (for session continuity)
"credit_balance": float # Remaining credits after the request
}
Errors
| Error | Description |
|---|---|
AuthenticationError |
Invalid or missing API key |
InsufficientCreditsError |
Credit balance too low for request |
NoAgentFoundError |
No suitable agent matches the requirements |
AgentUnavailableError |
Matched agent is offline or unresponsive |
How It Works
- First Request: When you make your first request, the SDK performs semantic matching to find the best agent based on your requirements
- Session Persistence: The matched
agent_idis stored and reused for subsequent requests - New Sessions: Set
is_new_session=Truewhen you need to match with a different agent - Billing: Credits are deducted based on agent cost + token usage
License
MIT License
Metadata
Release files for dagent-tool 0.1.15
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| dagent_tool-0.1.15.tar.gz | 8.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| dagent_tool-0.1.15-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 19.5 kB
Release files / dagent_tool-0.1.15.tar.gz
| Download URL | dagent_tool-0.1.15.tar.gz |
|---|---|
| Size | 8.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4fc78ba79b80676fd0a765d981f095b9be4d80128604809e8ead9bc7963e154f
|
|
BLAKE2b-256 checksum How to use checksums |
1dfdabfc7cfa6cfa35832b67323c9609cac26e0f889a0052c173ace63e629a7a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.0
|
Release files / dagent_tool-0.1.15-py3-none-any.whl
| Download URL | dagent_tool-0.1.15-py3-none-any.whl |
|---|---|
| Size | 10.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
734573f1416964526740637327aa6e248b160116a9568b4ffbfc6c60197385de
|
|
BLAKE2b-256 checksum How to use checksums |
64686739c5a7b272443dfe1f42b9c79df651905dcd79b734823eb2ff32d5e207
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.0
|