Skip to main content

A multi-agent orchestration SDK for building intelligent workflows

Project description

Kiva SDK

⚠️ Important Notice: This project is currently in a rapid iteration/experimental phase, and the provided API may undergo disruptive changes at any time.

A multi-agent orchestration SDK for building intelligent workflows

Features

  • Three Workflow Patterns: Router (simple), Supervisor (parallel), and Parliament (deliberative)
  • Automatic Complexity Analysis: Intelligent workflow selection based on task complexity
  • Parallel Agent Instances: Spawn multiple instances of the same agent for parallel subtask execution
  • Modular Architecture: AgentRouter for organizing agents across multiple files
  • Rich Console Output: Beautiful terminal visualization (optional)
  • Error Recovery: Built-in error handling with recovery suggestions

Installation

uv add kiva-sdk

Setup & Configuration

Before running the SDK, you need to configure your API credentials using environment variables:

export KIVA_API_BASE="http://your-api-endpoint/v1"
export KIVA_API_KEY="your-api-key"
export KIVA_MODEL="your-model-name"

Quick Start

Basic Usage

from kiva import Kiva

kiva = Kiva(
    base_url="https://api.openai.com/v1",
    api_key="your-api-key",
    model="gpt-4o",
)

# Single-tool agent using decorator
@kiva.agent("weather", "Gets weather information")
def get_weather(city: str) -> str:
    """Get current weather for a city."""
    return f"Sunny, 25°C in {city}"

# Multi-tool agent using class decorator
@kiva.agent("math", "Performs calculations")
class MathTools:
    def add(self, a: int, b: int) -> int:
        """Add two numbers."""
        return a + b
    
    def multiply(self, a: int, b: int) -> int:
        """Multiply two numbers."""
        return a * b

# Run with rich console output
kiva.run("What's the weather in Tokyo? Also calculate 15 * 8")

# Silent mode - no console output
result = kiva.run("What's the weather in Beijing?", console=False)
print(result)

Modular Application with AgentRouter

For larger applications, use AgentRouter to organize agents across multiple files:

# agents/weather.py
from kiva import AgentRouter

router = AgentRouter(prefix="weather")

@router.agent("forecast", "Gets weather forecasts")
def get_forecast(city: str) -> str:
    """Get weather forecast for a city."""
    return f"Sunny, 25°C in {city}"
# agents/math.py
from kiva import AgentRouter

router = AgentRouter(prefix="math")

@router.agent("calculator", "Performs calculations")
class Calculator:
    def add(self, a: int, b: int) -> int:
        """Add two numbers."""
        return a + b
# main.py
from kiva import Kiva
from agents.weather import router as weather_router
from agents.math import router as math_router

kiva = Kiva(base_url="...", api_key="...", model="gpt-4o")

kiva.include_router(weather_router)
kiva.include_router(math_router)

kiva.run("What's the weather in Tokyo? Calculate 15 * 8")

See AgentRouter Documentation for more details.

Workflow Patterns

Router Workflow

Routes tasks to a single most appropriate agent. Best for simple, single-domain queries.

Supervisor Workflow

Coordinates multiple agents executing in parallel. Supports spawning multiple instances of the same agent for parallel subtask processing. Ideal for multi-faceted tasks that can be decomposed into independent subtasks.

Parliament Workflow

Implements iterative deliberation with conflict resolution. Designed for complex reasoning tasks requiring consensus or validation.

Parallel Agent Instances

Kiva can spawn multiple instances of the same agent definition for parallel execution:

# The planner automatically decides when to use parallel instances
# For example, this task might spawn 3 instances of a search agent:
kiva.run("Search for information about AI, blockchain, and quantum computing")

Each instance has:

  • Isolated context/scratchpad
  • Independent execution
  • Results aggregated automatically

See Parallel Instances Documentation for details.

Async Support

For async contexts, use run_async:

import asyncio
from kiva import Kiva

async def main():
    kiva = Kiva(base_url="...", api_key="...", model="gpt-4o")
    
    @kiva.agent("weather", "Gets weather")
    def get_weather(city: str) -> str:
        return f"{city}: Sunny"
    
    result = await kiva.run_async("Weather in Tokyo?", console=False)
    print(result)

asyncio.run(main())

Documentation

Testing

The SDK includes comprehensive unit and end-to-end tests:

# Unit tests (no API required)
uv run --dev pytest tests/ -v --ignore=tests/e2e/

# End-to-end tests (requires API configuration)
export KIVA_API_BASE="http://your-api-endpoint/v1"
export KIVA_API_KEY="your-api-key"
export KIVA_MODEL="your-model-name"

uv run --dev pytest tests/e2e/ -v

See E2E Testing Guide for more details.

License

MIT License

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

kiva_sdk-0.3.3.tar.gz (37.1 kB view details)

Uploaded Source

Built Distribution

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

kiva_sdk-0.3.3-py3-none-any.whl (46.0 kB view details)

Uploaded Python 3

File details

Details for the file kiva_sdk-0.3.3.tar.gz.

File metadata

  • Download URL: kiva_sdk-0.3.3.tar.gz
  • Upload date:
  • Size: 37.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.25 {"installer":{"name":"uv","version":"0.9.25","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for kiva_sdk-0.3.3.tar.gz
Algorithm Hash digest
SHA256 30fb7c0a841094504a668e60f256c714fbc4103dea39cc0b6485916dc1e19439
MD5 e0e51a04588a07c1f08d23890fc03e2c
BLAKE2b-256 20c75e47565f03f311372eb8ea5824bd889d5ae1af0f4b01d327d8b463c6e146

See more details on using hashes here.

File details

Details for the file kiva_sdk-0.3.3-py3-none-any.whl.

File metadata

  • Download URL: kiva_sdk-0.3.3-py3-none-any.whl
  • Upload date:
  • Size: 46.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.25 {"installer":{"name":"uv","version":"0.9.25","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for kiva_sdk-0.3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 cad4a6d6daec88a81d72d8bc14f038fdb6066780301c1da0d81b0ad169111c8f
MD5 75227719d5552a415ddeac6fdb45fd92
BLAKE2b-256 982a8208420f3641f65734ef757c859d12d05694256315b58d8899bf72e61eed

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