Python SDK for Flame, a distributed system for Agentic AI
Project description
Flame Python SDK
Python SDK for the Flame, a distributed system for Agentic AI.
For the user guide, see Flame Python SDK. For the detailed API surface, see API.md.
Installation
pip install flamepy
Quick Start
import flamepy
def main():
# Create a session with the application, e.g. Agent
session = flamepy.create_session("flmping")
# Create and run a task
resp = session.invoke(b"task input data")
# Handle the output of task
print(resp)
# Close session
session.close()
if __name__ == "__main__":
main()
Verify A Runner Cluster
After configuring ~/.flame/flame.yaml for a running cluster with session manager, object cache, executor manager, and the flmrun template application, run:
python -m flamepy.runner.e2e
Installed wheels also provide:
flamepy-runner-e2e
The check packages a tiny temporary project and verifies Runner function calls, ObjectFuture chaining, and a stateful instance service. Use --json for machine-readable output and --python-version 3.12 to verify a specific executor Python runtime.
API Reference
Session
Represents a computing session with application, e.g. Agent, Tools.
# Create a session
session = flamepy.create_session("my-app")
# Close a session
session.close()
Task
Represents individual computing tasks within a session.
from concurrent.futures import wait
# Run a task synchronously (blocks until complete)
result = session.invoke(b"input data")
# Run a task asynchronously (returns Future immediately)
future = session.run(b"input data")
result = future.result() # Wait for completion
# Run multiple tasks in parallel
futures = [session.run(f"input {i}".encode()) for i in range(10)]
wait(futures) # Wait for all tasks to complete
results = [f.result() for f in futures]
# Create a task and get task object
task = session.create_task(b"input data")
# Get task status
task = session.get_task(task.id)
# Watch task progress
for update in session.watch_task(task.id):
print(f"Task state: {update.state}")
if update.is_completed():
break
Error Handling
The SDK provides custom exception types for different error scenarios:
from flamepy import FlameError, FlameErrorCode
try:
session = flamepy.create_session("flmping")
except FlameError as e:
if e.code == FlameErrorCode.INVALID_CONFIG:
print("Configuration error:", e.message)
elif e.code == FlameErrorCode.INVALID_STATE:
print("State error:", e.message)
Development
To set up the development environment:
# Clone the repository
git clone https://github.com/xflops/flame.git
cd flame/sdk/python
# Install in development mode
# Note: Use --no-build-isolation if you have setuptools>=61.0 installed
python3 -m pip install -e . --user --no-build-isolation
# Or build and install the wheel
python3 -m build --wheel --no-isolation
python3 -m pip install dist/flamepy-0.6.0-py3-none-any.whl --user
# Install development dependencies
pip install -e .[dev]
# Run tests
pytest
# Format code
ruff format
# Type checking
mypy flamepy/
Requirements
- Python >= 3.9
- setuptools >= 61.0 (for building from source)
Troubleshooting
If you encounter issues with the package name showing as "UNKNOWN":
-
Make sure you have
setuptools>=61.0installed:python3 -m pip install --user --upgrade "setuptools>=61.0"
-
Clean any stale build artifacts:
rm -rf dist build src/flamepy.egg-info *.egg-info
-
Use
--no-build-isolationflag when installing:python3 -m pip install . --user --no-build-isolation
Project details
Release history Release notifications | RSS feed
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 flamepy-0.6.0.tar.gz.
File metadata
- Download URL: flamepy-0.6.0.tar.gz
- Upload date:
- Size: 89.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.18 {"installer":{"name":"uv","version":"0.11.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
63c9b56bf4d499d78258cb715387322238e8ca437da8c05bbe3273a58d03c7a5
|
|
| MD5 |
3162644de4bb321513e13dbd87fbd5b5
|
|
| BLAKE2b-256 |
abf64afe55c0e0678ec05a9b47eed5d7303b2751b680cc5c5f4f8932b93cce96
|
File details
Details for the file flamepy-0.6.0-py3-none-any.whl.
File metadata
- Download URL: flamepy-0.6.0-py3-none-any.whl
- Upload date:
- Size: 80.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.18 {"installer":{"name":"uv","version":"0.11.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0b4b34152b1d27d14ba1313d3970379822967fbc26a0aa5cf096ef1163ec7c54
|
|
| MD5 |
4281e849a2285ee573da292f50fb2776
|
|
| BLAKE2b-256 |
00dd79d764fd37391f0be15a6675f353be595dce633f173ea1b5f91b0ee876f7
|