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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file orch_lib-3.0.1.tar.gz.
File metadata
- Download URL: orch_lib-3.0.1.tar.gz
- Upload date:
- Size: 20.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
74d7fe26b16b9c94c58de58140bb28cc584afad5979c487500efe5f198b94517
|
|
| MD5 |
d58524afb0469efb30bcb0ee4bde024e
|
|
| BLAKE2b-256 |
b294f6b2237f33329790ad7e554ee1a648900d5d72dd1a1c79bae7651a6a6845
|
File details
Details for the file orch_lib-3.0.1-py3-none-any.whl.
File metadata
- Download URL: orch_lib-3.0.1-py3-none-any.whl
- Upload date:
- Size: 22.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5015fe51ee7fd7a243014fc4c28b9c727d7080bb70c0727f125d5f94e868afed
|
|
| MD5 |
6aa69084fd35e5596ffa3ef242ee922c
|
|
| BLAKE2b-256 |
f5fbd8109b4d5a2e9dfd178ea1d45d245693c6d95c8bd0d33ba0cb6c7ca10ea5
|