Skip to main content

A Python library for agent orchestration with task scheduling, conditional routing, and memory management

Project description

orch-lib

A Python library for agent orchestration with task scheduling, conditional routing, and memory management.

Features

  • Agent Orchestration: Build complex multi-agent workflows with central coordination
  • Task Management: Define and execute tasks with memory scoping
  • Conditional Routing: Route task execution based on dynamic conditions
  • Memory Management: Isolated and shared memory across agents and graphs
  • Graph Execution: Coordinate multiple agents at the graph level
  • Expression Evaluation: Evaluate dynamic expressions with memory access

Installation

pip install orch-lib

Quick Start

Basic Agent Example

from orch_lib import Agent, Task, Memory

# Create an agent
agent = Agent(name="worker")

# Define a task
def process_data(scope=None):
    scope["private"]["result"] = "processed"
    return scope["private"]["result"]

task = Task("process", process_data)

# Add task to agent
agent.add_task("process", task)
agent.add_route("process", "on_start")

# Execute agent
agent()

Agent with Conditional Routing

from orch_lib import Agent, Task, Conditional, Memory

agent = Agent(memory=Memory())
agent.memory.store("should_run", True)

def task_fn(*args, scope=None):
    print("Task executed!")

agent.add_task("work", Task("work", task_fn))
agent.add_route("work", Conditional("private['should_run']"))

agent(max_passes=2)

Graph-Level Orchestration

from orch_lib import Graph, Agent, Task, Conditional

graph = Graph()

# Create agents
agent1 = Agent()
agent2 = Agent(parent=graph)

# Configure agents with tasks and routes
# ... (add tasks and routes as shown above)

# Add to graph
graph.add_agent("agent1", agent1)
graph.add_agent("agent2", agent2)

# Execute graph
graph()

Core Concepts

Memory

Agents and graphs maintain isolated memory spaces:

  • Private Memory: Agent-level memory not accessible to other agents
  • Public Memory: Graph-level memory accessible to all agents
  • Agent Memory: Per-agent memory in graph context

Tasks

Tasks are callable units of work:

task = Task(
    name="my_task",
    function=my_function,
    memories={"key": "value"}  # task-level memory
)

Conditionals

Routes can be conditional:

condition = Conditional("private['flag'] and public['enabled']")
agent.add_route("task_id", condition)

Expressions

Evaluate expressions with memory context:

from orch_lib import Expression

expr = Expression("count + 1")
result = expr(parent={"count": 5})

API Reference

Agent

Agent(
    tasks=None,           # dict of Task objects
    memory=None,          # Memory object
    routes=None,          # dict of routes
    name=None,            # agent name
    parent=None,          # parent memory reference
    max_passes=10         # max execution passes
)

Task

Task(
    name: str,
    function: Callable,
    memories: dict = None
)

Conditional

Conditional(
    condition: str,       # Python expression string
    parent=None           # parent memory reference
)

Memory

Memory(agents=None)

Methods: store(), retrieve(), delete(), clear(), clear_agent_memory()

Graph

Graph(
    agents=None,          # dict of Agent objects
    memory=None,          # Memory object
    routes=None,          # dict of conditional routes
    max_passes=10         # max execution passes
)

Development

Setup

pip install -e ".[dev]"

Running Tests

pytest

Code Quality

black src/
ruff check src/
mypy src/

License

MIT License - see LICENSE file for details

Contributing

Contributions are welcome! Please open an issue or submit a pull request.

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

orch_lib-2.2.1.tar.gz (19.1 kB view details)

Uploaded Source

Built Distribution

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

orch_lib-2.2.1-py3-none-any.whl (20.6 kB view details)

Uploaded Python 3

File details

Details for the file orch_lib-2.2.1.tar.gz.

File metadata

  • Download URL: orch_lib-2.2.1.tar.gz
  • Upload date:
  • Size: 19.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for orch_lib-2.2.1.tar.gz
Algorithm Hash digest
SHA256 38694b10c6547b08b11fe4920d1d248481616b6544f0f45cc348ff1194a664f0
MD5 fbb556156f3031ae42b3d24fabf59ef4
BLAKE2b-256 29248e07f76750b6af1ed704954fefaf78927ebc88d6640aff33430dc08dcdfd

See more details on using hashes here.

File details

Details for the file orch_lib-2.2.1-py3-none-any.whl.

File metadata

  • Download URL: orch_lib-2.2.1-py3-none-any.whl
  • Upload date:
  • Size: 20.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for orch_lib-2.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 acf34664983d0146b3eaa31244427127eae3dd5658d61e7df9a6ffc0bd479c88
MD5 1c2b1cc24a56f7b97eed3de6fa3a815d
BLAKE2b-256 96ba047e919df5d466c17b0a36a8072739f160c5d2e58391726560849b3d5a0d

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