Skip to main content

UnisonAI Multi-Agent Framework provides a flexible, light-weight experience and extensible environment for creating and coordinating multiple AI agents.

Project description

UnisonAI Banner

Table of Contents

UnisonAI

Orchestrate the Future of Multi-Agent AI

Stars

License

Python Version


Overview

UnisonAI is a lightweight Python framework for building single-agent and multi-agent AI systems.

  • Agent — standalone or part of a clan, with tool integration and conversation history.

  • Clan — coordinate multiple agents on a shared goal with built-in A2A messaging.

  • Tool System — create tools with @tool decorator or BaseTool class; type-validated, standardized results.

Supports Gemini, OpenAI, Anthropic, Cohere, Groq, Mixtral, xAI, Cerebras, and any custom model (extend BaseLLM).


Quick Start

pip install unisonai-sdk
from unisonai import Agent

from unisonai.llms import Gemini



agent = Agent(

    llm=Gemini(model="gemini-2.0-flash"),

    identity="Assistant",

    description="A helpful AI assistant",

)



print(agent.unleash(task="Explain quantum computing in 3 sentences"))

What Makes UnisonAI Special

Agent-to-Agent (A2A) communication — agents talk to each other as if they were teammates collaborating on complex tasks.

Example

Perfect For

  • Complex Research — multiple agents gathering, analyzing, and synthesizing information

  • Workflow Automation — coordinated agents handling multi-step processes

  • Content Creation — specialized agents for research, writing, and editing

  • Data Analysis — distributed agents processing data with different expertise


Core Components

| Component | Purpose | Key Features |

|-----------|---------|--------------|

| Agent | Standalone or clan member | Tool integration, history, inter-agent messaging |

| Clan | Multi-agent orchestration | Automatic planning, task distribution, A2A communication |

| Tool System | Extensible capabilities | @tool decorator, BaseTool class, type validation |


Usage Examples

Individual Agent

from unisonai import Agent

from unisonai.llms import Gemini



agent = Agent(

    llm=Gemini(model="gemini-2.0-flash"),

    identity="Research Assistant",

    description="An AI assistant for research tasks",

)



agent.unleash(task="Summarize the key benefits of renewable energy")

Agent with Tools

from unisonai import Agent

from unisonai.llms import Gemini

from unisonai.tools.tool import tool



@tool(name="calculator", description="Arithmetic on two numbers")

def calculator(operation: str, a: float, b: float) -> str:

    ops = {"add": a + b, "subtract": a - b, "multiply": a * b, "divide": a / b if b else "err"}

    return str(ops.get(operation, "unknown op"))



agent = Agent(

    llm=Gemini(model="gemini-2.0-flash"),

    identity="Math Helper",

    description="An assistant with a calculator tool",

    tools=[calculator()],

)



agent.unleash(task="What is 1500 * 32?")

Multi-Agent Clan

from unisonai import Agent, Clan

from unisonai.llms import Gemini



researcher = Agent(

    llm=Gemini(model="gemini-2.0-flash"),

    identity="Researcher",

    description="Gathers information on topics",

    task="Research assigned topics",

)



writer = Agent(

    llm=Gemini(model="gemini-2.0-flash"),

    identity="Writer",

    description="Writes clear reports from research",

    task="Write polished reports",

)



clan = Clan(

    clan_name="Research Team",

    manager=researcher,

    members=[researcher, writer],

    shared_instruction="Researcher gathers info, Writer produces the report.",

    goal="Write a brief report on AI in healthcare",

    output_file="report.txt",

)



clan.unleash()

Custom Tools

UnisonAI supports two ways to create tools:

1. Decorator-based (Recommended)

from unisonai.tools.tool import tool



@tool(name="calculator", description="Math operations")

def calculator(operation: str, a: float, b: float) -> str:

    if operation == "add":

        return str(a + b)

    elif operation == "multiply":

        return str(a * b)

    return "Unknown operation"

2. Class-based (For complex/stateful tools)

from unisonai.tools.tool import BaseTool, Field

from unisonai.tools.types import ToolParameterType



class Calculator(BaseTool):

    def __init__(self):

        self.name = "calculator"

        self.description = "Math operations"

        self.params = [

            Field(name="operation", description="add or multiply",

                  field_type=ToolParameterType.STRING, required=True),

            Field(name="a", description="First number",

                  field_type=ToolParameterType.FLOAT, required=True),

            Field(name="b", description="Second number",

                  field_type=ToolParameterType.FLOAT, required=True),

        ]

        super().__init__()



    def _run(self, operation: str, a: float, b: float) -> float:

        return a + b if operation == "add" else a * b

API Key Configuration

  1. Environment Variables:

    export GEMINI_API_KEY="your-key"
    
    export OPENAI_API_KEY="your-key"
    
  2. Direct Initialization:

    llm = Gemini(api_key="your-key")
    

Documentation Hub

Getting Started

Core Documentation

Advanced Features

Examples


FAQ

What is UnisonAI?

Python framework for building and orchestrating AI agents with A2A communication.

When should I use a Clan?

For complex, multi-step tasks requiring specialized agents working together.

Can I add custom LLMs?

Yes! Extend BaseLLM to integrate any model provider.

What are tools?

Reusable components that extend agent capabilities. Create them with the @tool decorator or the BaseTool class.

How do I manage API keys?

Use environment variables or pass directly to the LLM constructor.


Contributing

Author: Anant Sharma (E5Anant)

PRs and issues welcome!

Open Issues

Submit PRs

Suggest Features


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

unisonai_sdk-1.4.tar.gz (32.6 kB view details)

Uploaded Source

Built Distribution

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

unisonai_sdk-1.4-py3-none-any.whl (42.6 kB view details)

Uploaded Python 3

File details

Details for the file unisonai_sdk-1.4.tar.gz.

File metadata

  • Download URL: unisonai_sdk-1.4.tar.gz
  • Upload date:
  • Size: 32.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for unisonai_sdk-1.4.tar.gz
Algorithm Hash digest
SHA256 fd0e072e66def553b5b6554b06d063e89863c4a4252c47c44d44fce3bb962399
MD5 71d78951e1dc9935b3b2001356924f3a
BLAKE2b-256 234c7ada3f8a44b76b0ac0e74bbae6156bc94096a358018865ef82145694cba6

See more details on using hashes here.

File details

Details for the file unisonai_sdk-1.4-py3-none-any.whl.

File metadata

  • Download URL: unisonai_sdk-1.4-py3-none-any.whl
  • Upload date:
  • Size: 42.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for unisonai_sdk-1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 906c9c01df5752911a5dc087cec808333fa5fd64a813c832c6f93346cd47ef8a
MD5 13401f4500560396de4213538ed8fd7e
BLAKE2b-256 5909cf6ca92db0b5e475d4b799b0d046b7ab954f020cf82417d14c3da6d95585

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