Decorators
With only a few lines of code, builders can easily deploy custom AI agents to the Naptha hub or their own local node.
Context
Naptha supports a web of multi-agent systems that grow and evolve. This walkthrough explains how to decorate functions in order to quickly publish existing agents, allowing them to interact with others.
Prerequisites
- Python
>= 3.10, <= 3.13
- Poetry package manager
- Naptha username & password
Need help installing? Check out our detailed installation guide.
Step-by-step Walkthrough
1. Setup
Configure your .env
file:
HUB_USERNAME=<your_naptha_username>
HUB_PASSWORD=<your_naptha_password>
HUB_URL=wss://hub.naptha.ai/rpc
NODE_URL=https://node.naptha.ai
These variables are used to connect to the Naptha network.
2. Add Naptha SDK
Update your pyproject.toml
file:
[tool.poetry.dependencies]
naptha-sdk = {git = "https://github.com/NapthaAI/naptha-sdk"}
If not using poetry, you can just add naptha-sdk
to your requirements.txt
file, then run:
pip install -r requirements.txt
3. Install dependencies:
Execute via CLI:
poetry install
4. Import Naptha SDK
Put this in your main Python file: <agent>.py
from naptha_sdk.client.naptha import agent as naptha_agent
We recommend importing as naptha_agent
to avoid naming conflicts.
5. Decorate
Label agent functions:
@naptha_agent("<agent_name>")
def <agent_function>(...):
# agent logic goes here
return <agent_output>
Replace <agent_name>
with a unique identifier for your agent. Keep <agent_function>
and <agent_output>
the same, however you named them.
6. Convert (automatically)
Process and package decorated functions:
poetry run python <agent>.py
This creates a folder named agent_pkgs
, which contains your "Napthafied" agent functions. The SDK translates your code into a format compatible with other agents on Naptha.
7. Test
cd agent_pkgs/<agent_name>
poetry install
poetry run python <agent_name>/run.py
If you're using an agent framework other than CrewAI, you will likely need to change the inputs dict, where tool_name
is the name of the agent method that you would like to call, tool_input_type
is the type (e.g. pydantic schema name) of the input for that call, and tool_input_value
is a dict of the schema parameters and values.
8. Publish
Enter this command:
naptha publish
This command publishes all agents in the agent_pkgs
folder to the Naptha node specified in your .env
file.
Verify the agent is working properly:
naptha run <agent_name>
Check for your expected output.
How does this work?
Let's break it down:
-
@naptha_agent("<agent_name>")
with a unique name for the agent. Below that line, agent functionality can be defined normally using various frameworks. -
By running Python code that includes our decorator, agent functions are automatically processed and converted into Naptha-compatible packages.
-
Later, when you enter
naptha publish
via the CLI, those agent packages will be added to the Naptha node specified in your.env
file.
Usage Examples
Other Frameworks
Support for additional agent frameworks is coming soon! Stay tuned for updates.
Feedback
We welcome your feedback and contributions! Here's how you can help:
- Report bugs and request features by creating issues on GitHub.
- Share your example implementations and use cases on Discord.
- Ask questions and join discussions on Discord.
Your input helps make Naptha better for everyone. We're actively expanding our examples and documentation based on community feedback.