UnisonAI is a flexible and extensible Python framework built on agent to agent (a2a) for building, coordinating, and scaling multiple AI agents—each powered by the LLM of your choice, unisonai helps in making individual agents on focused tasks as well as clan-based agent for extensive and complex tasks.
- Overview
- Why UnisonAI?
- Installation
- Core Components
- Parameter Reference Tables
- Usage Examples
- Faq?
- Contributing And License
UnisonAI is a flexible and extensible Python framework for building, coordinating, and scaling multiple AI agents—each powered by the LLM of your choice.
- Single_Agent: For solo, focused tasks.
- Agent (as part of a Clan): For teamwork, coordination, and distributed problem-solving.
- Tool System: Easily augment agents with custom, pluggable tools (web search, time, APIs, your own logic).
Supports Cohere, Mixtral, Groq, Gemini, Grok, OpenAI, Anthropic, and any custom model (just extend BaseLLM
). UnisonAI is designed for real-world, production-grade multi-agent AI applications.
🔗 Multi-LLM Support Mix and match LLM providers with ease. |
🧩 Modular & Extensible Add your own tools, LLMs, and logic. |
🤖 Single or Multi-Agent Solo agents or collaborative Clans—your call. With Agent to Agent communication on your supervision |
🛡️ Robust Error Handling Built-in JSON/YAML repair & retries. |
📚 Clear Docs & Examples Well-documented APIs and quick starts. |
⚡ Production-Ready Designed for real-world automation & chatbots. |
Requires Python >=3.10, <3.13
pip install unisonai
# or
pip3 install unisonai
Component | Purpose | Highlights |
---|---|---|
Single_Agent | Standalone agent for independent tasks |
|
Agent | Works with others in a Clan (team) |
|
Clan | Manages a team of Agents (including a leader/manager) |
|
Tool System | Extend agent capabilities with custom logic |
|
Parameter | Type | Description | Default |
---|---|---|---|
llm |
BaseLLM/any LLM | LLM for the agent | Required |
identity |
String | Agent's unique name | Required |
description |
String | Agent’s purpose | Required |
verbose |
Boolean | Verbose/debug mode | True |
tools |
List | Usable tools | [] |
output_file |
String | Output file path | None |
history_folder |
String | Directory for logs/history | "history" |
Parameter | Type | Description | Default |
---|---|---|---|
llm |
Gemini/any LLM | LLM for the agent | Required |
identity |
String | Agent's unique name | Required |
description |
String | Responsibilities overview | Required |
task |
String | Agent’s core goal/task | Required |
verbose |
Boolean | Verbose/debug mode | True |
tools |
List | Usable tools | [] |
Parameter | Type | Description | Default |
---|---|---|---|
clan_name |
String | Name of the clan | Required |
manager |
Agent | Clan manager/leader | Required |
members |
List | List of Agent instances | Required |
shared_instruction |
String | Instructions for all agents | Required |
goal |
String | Unified clan objective | Required |
history_folder |
String | Log/history folder | "history" |
output_file |
String | Final output file | None |
BaseTool
Attribute/Method | Description |
---|---|
name |
Tool name |
description |
Tool function summary |
params |
List of Field objects (inputs) |
_run(**kwargs) |
Tool logic implementation |
Field
Attribute | Description | Default |
---|---|---|
name |
Parameter name | Required |
description |
Parameter purpose | Required |
default_value |
Default value | None |
required |
Is parameter mandatory? | True |
This is the code from main.py
FILE.
from unisonai import Single_Agent
from unisonai.llms import Gemini
from unisonai.tools.websearch import WebSearchTool
web_agent = Single_Agent(
llm=Gemini(model="gemini-2.0-flash"),
identity="Web Explorer",
description="Web Searcher for multiple queries",
tools=[WebSearchTool],
history_folder="history",
output_file="output.txt"
)
web_agent.unleash(task="Find out what is the age of Trump")
"This is a refernce from main2.py
FILE, check the file for the full complex example."
from unisonai import Agent, Clan
from unisonai.llms import Gemini
from unisonai.tools.websearch import WebSearchTool
time_agent = Agent(
llm=Gemini(model="gemini-2.0-flash"),
identity="Time Keeper",
description="Handles scheduling",
task="Track time-related info for the trip",
tools=[TimeTool]
)
web_agent = Agent(
llm=Gemini(model="gemini-2.0-flash"),
identity="Web Explorer",
description="Searches for travel info",
task="Gather travel info, cultural activities, and costs",
tools=[WebSearchTool]
)
clan = Clan(
clan_name="Ultimate Trip Expert Clan",
manager=planner_agent, # Your clan leader agent
members=[time_agent, web_agent /*, ...other agents*/],
shared_instruction="Collaborate to plan a budget-friendly 7-day trip in India.",
goal="Plan a 7-day itinerary across multiple cities with a budget of 10,000 INR",
history_folder="trip_history",
output_file="trip_plan.txt"
)
clan.unleash()
What is UnisonAI?
A Python framework for orchestrating multiple AI agents—each powered by your choice of LLMs, working solo or in teams. Specifically with A2A communication.
Why use a Clan?
For complex, multi-step, or specialized tasks: divide and conquer with specialized agents, coordinated by a manager.
Can I add my own LLM?
Yes! Just extend the BaseLLM
class and plug in your model.
What are tools?
Reusable logic/components, built on BaseTool
, that agents can call for specialized tasks (e.g., web search, APIs).
How is agent history logged?
Each agent maintains its own logs/history in the specified directory (default: history/
).
What can I build with UnisonAI?
Chatbots, collaborative planners, research assistants, workflow automation, and more!
Founder: @E5Anant
PRs and issues welcome! The project is under the Apache 2.0 License.
Open issues • Submit PRs • Suggest improvements