Skip to main content

ANT AI

Project description

ANT AI

Python License Coverage main Docs

A lightweight Python framework for building tool-driven AI agents and multi-agent systems.


ANT AI provides a composable set of primitives for building production-ready AI agents: a ReAct reasoning loop, a flexible tool system with MCP support, a graph-based workflow engine, and first-class agent-to-agent (A2A) communication via the A2A protocol.

Features

  • ReAct agent — built-in Reason→Act loop with streaming, structured output, and configurable retry logic
  • Flexible tools — define tools as decorated functions, class namespaces, or load them directly from any MCP server
  • Workflow engine — graph-based orchestration with static and conditional edges to sequence agent behaviour predictably
  • Multi-agent colony — wire agents together with the A2A protocol; each agent becomes a callable tool to its peers
  • LLM-agnostic — ships with LiteLLM and native OpenAI backends; any ChatLLM-conforming implementation works
  • Observability — structured lifecycle events with Langfuse, OpenTelemetry, and log sinks
  • Lifecycle hooks — intercept and control every LLM call: pass, block, retry, or substitute results; ships with a GuardrailsAI adapter

Installation

Requires Python 3.14+. Install with uv:

uv add ant-ai

Or clone and sync for local development:

git clone <repo-url>
cd ant-ai
uv sync --all-extras

Quickstart

Single agent

from ant_ai import Agent, Message, State, tool
from ant_ai.llm.integrations import LiteLLMChat

@tool
def get_weather(city: str) -> str:
    """Return the current weather for a city."""
    return f"Sunny, 22°C in {city}"

llm = LiteLLMChat(model="gpt-4o-mini")

agent = Agent(
    name="WeatherAgent",
    system_prompt="You are a helpful weather assistant.",
    llm=llm,
    tools=[get_weather],
)

state = State(messages=[Message(role="user", content="What's the weather in Lugano?")])
answer = agent.invoke(state)
print(answer)

Streaming events

from ant_ai.core import FinalAnswerEvent

async for event in agent.stream(state):
    if isinstance(event, FinalAnswerEvent):
        print(event.content)

Structured output

from pydantic import BaseModel

class WeatherReport(BaseModel):
    city: str
    temperature: int
    condition: str

answer = agent.invoke(state, response_schema=WeatherReport)
# answer is a JSON string matching WeatherReport

Development

# Install dev dependencies and pre-commit hooks
uv sync --all-extras
uv run pre-commit install

# Run tests
uv run pytest

# Serve docs locally
uv run mkdocs serve

See CONTRIBUTING.md for the full contributing guide, branching model, and review process.

License

This software is licensed under the MIT license. See the LICENSE file for details.

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

ant_ai-1.0.0.tar.gz (46.7 kB view details)

Uploaded Source

Built Distribution

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

ant_ai-1.0.0-py3-none-any.whl (70.9 kB view details)

Uploaded Python 3

File details

Details for the file ant_ai-1.0.0.tar.gz.

File metadata

  • Download URL: ant_ai-1.0.0.tar.gz
  • Upload date:
  • Size: 46.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ant_ai-1.0.0.tar.gz
Algorithm Hash digest
SHA256 09825dd4d39ca154aae60dd31117082f76ea889559aaf97bcfabf608cc016a98
MD5 6126216812e90fdeb2ad0cdced53cb6d
BLAKE2b-256 860fa269b29c1950032e2d6d97c7b9f455a2810fe2118d615ecefe30bd789f45

See more details on using hashes here.

Provenance

The following attestation bundles were made for ant_ai-1.0.0.tar.gz:

Publisher: publish.yml on idea-idsia/ant-ai

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ant_ai-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: ant_ai-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 70.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ant_ai-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6a41e1d5f21c1f7e5d2b9baf260ebf2e4c91e62412ef548f2213db433b97b4b4
MD5 572731b122cf07153c3d091d67577ec3
BLAKE2b-256 cfb7479f429adea28ba3818b4fa109eb357b3432e84debde455d859893bfeff9

See more details on using hashes here.

Provenance

The following attestation bundles were made for ant_ai-1.0.0-py3-none-any.whl:

Publisher: publish.yml on idea-idsia/ant-ai

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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