Skip to main content

Ergonomic LLM Agent Augmented with Tools

Project description

Agentia: Ergonomic LLM Agents

Getting Started

Run agents with tools.

from agentia import Agent
from typing import Annotated

# Define a tool as a python function
def get_weather(location: Annotated[str, "The city name"]):
    """Get the current weather in a given location"""
    return { "temperature": 72 }

# Create an agent
agent = Agent(tools=[get_weather])

# Run the agent with the tool
response = await agent.run("What is the weather like in boston?")

print(response)

# Output: The current temperature in Boston is 72°F.

The Magic Decorator

Create agent-powered magic functions.

Support both plain types and pydantic models as input and output.

from agentia import magic
from pydantic import BaseModel

class Forcast(BaseModel):
    location: str
    temperature_degree: int

@magic
async def get_weather(weather_forcast: str) -> Forcast:
    """Create weather forcase object based on the input string"""
    ...

forcast = await get_weather("The current temperature in Boston is 72°F")

print(forcast.location) # Output: Boston
print(forcast.temperature_degree) # Output: 22

Supported Parameter and Result Types

  • Any types that can be passed to pydantic.TypeAdaptor:
    • Builtin types: int, float, str, bool, tuple[_], list[_], dict[_, _]
    • Enums: Literal['A', 'B', ...], StrEnum, IntEnum, and Enum
    • dataclasses
  • pydantic.BaseModel subclasses

Agent Config File

Agentia supports creating agents from config files:

  1. Create a config file at ./alice.toml
[agent]
name = "Alice" # This is the only required field
icon = "👩"
instructions = "You are a helpful assistant"
model = "openai/o3-mini"
plugins = ["calc", "clock", "web"]
  1. In your python code:
agent = Agent.load_from_config("./alice.toml")
  1. Alternatively, start a REPL:
uvx agentia alice

Multi-Agent Orchestration (Experimental)

Multi-agent orchestration is achieved by making leader/parent agents dispatching sub-tasks to their sub-agents.

from agentia import Agent, CommunicationEvent, AssistantMessage

coder = Agent(
    model="openai/gpt-4o-mini",
    name="Coder",
    description="programmar",
)
reviewer = Agent(
    model="openai/gpt-4o-mini",
    name="Code Reviewer",
    description="code reviewer",
)
leader = Agent(
    model="openai/gpt-4o-mini",
    name="Leader",
    description="Leader agent",
    subagents=[
        coder,
        reviewer,
    ],
)

run = leader.run(
    "Ask your subagents to write a quicksort algorithm in python, review and improve it until it is perfect."
    events=True,
)

async for e in run:
    if isinstance(e, CommunicationEvent):
        subagent_name = coder.name if e.child == coder.id else reviewer.name
        if e.response is None:
            print(f"[DISPATCH -> {subagent_name}]")
            print(e.message)
            print("[DISPATCH END]")
            print()
        else:
            print(f"[RESPONSE <- {subagent_name}]")
            print(e.response)
            print("[RESPONSE END]")
            print()

    if isinstance(e, AssistantMessage):
        print(e.content)
        print()

Multi-agent orchestration in agent config files:

[agent]
name = "Leader"
# ... other fields
# Create two subagent config files in the same directory: coder.toml and reviewer.toml
subagents = ["coder", "reviewer"]

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

agentia-0.0.16.tar.gz (40.3 kB view details)

Uploaded Source

Built Distribution

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

agentia-0.0.16-py3-none-any.whl (51.5 kB view details)

Uploaded Python 3

File details

Details for the file agentia-0.0.16.tar.gz.

File metadata

  • Download URL: agentia-0.0.16.tar.gz
  • Upload date:
  • Size: 40.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.14

File hashes

Hashes for agentia-0.0.16.tar.gz
Algorithm Hash digest
SHA256 57b8d67030b5d851a010d2b00f4522a530a8c586b5cc6e0babad2eaa89d30ff0
MD5 a9234d4194c8c116fb59166803b360de
BLAKE2b-256 381767a7fe3f5d77bb9daa977eadafbe5564e052d21b7d230eb2b9cc79c7f1c2

See more details on using hashes here.

File details

Details for the file agentia-0.0.16-py3-none-any.whl.

File metadata

  • Download URL: agentia-0.0.16-py3-none-any.whl
  • Upload date:
  • Size: 51.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.14

File hashes

Hashes for agentia-0.0.16-py3-none-any.whl
Algorithm Hash digest
SHA256 2516bceb434ea98f1f24cd2832e7adfc59e8991917d705c74b855195d11cde0f
MD5 573a7777d1ced95134550db651504ad4
BLAKE2b-256 676c61ec26bbc659e785e1151c039ce4d2cba7e965816956dbf5dd1894e57c14

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