Python SDK for Neonloops — run AI workflows via API
Project description
neonloops
Python SDK for Neonloops — run AI workflows via API.
Installation
pip install neonloops
Quick Start
Async (recommended)
import asyncio
from neonloops import Runner, RunInput
runner = Runner(
api_key="nl_sk_...",
# base_url="https://neonloops.com", # optional, defaults to https://neonloops.com
)
async def main():
result = await runner.run(
workflow_id="wf_abc123",
input=[RunInput(role="user", content="Hello, run my workflow!")],
)
print(result.output)
print(result.metadata.tokens)
asyncio.run(main())
Sync
from neonloops import Runner, RunInput
runner = Runner(
api_key="nl_sk_...",
# base_url="https://neonloops.com", # optional, defaults to https://neonloops.com
)
result = runner.run_sync(
workflow_id="wf_abc123",
input=[RunInput(role="user", content="Hello!")],
)
print(result.output)
Configuration
| Parameter | Type | Default | Description |
|---|---|---|---|
api_key |
str |
— | Required. Your Neonloops API key (nl_sk_...) |
base_url |
str |
https://neonloops.com |
Base URL of your Neonloops instance |
project_id |
str |
None |
Default project ID to scope requests |
timeout |
float |
120.0 |
Request timeout in seconds |
max_retries |
int |
2 |
Max retries for 429/5xx errors |
Multi-Turn Conversations
# Create a session
session = await runner.create_session("wf_abc123")
# First turn
r1 = await runner.run(
workflow_id="wf_abc123",
input=[RunInput(role="user", content="Hello!")],
session_id=session.id,
)
# Follow-up — server loads previous messages automatically
r2 = await runner.run(
workflow_id="wf_abc123",
input=[RunInput(role="user", content="Tell me more")],
session_id=session.id,
)
# Retrieve message history
messages = await runner.get_session_messages(session.id)
Error Handling
from neonloops import Runner, NeonloopsApiError, NeonloopsTimeoutError
try:
result = await runner.run(
workflow_id="wf_abc123",
input=[RunInput(role="user", content="Hello")],
)
except NeonloopsApiError as e:
print(f"API error {e.status}: {e}")
except NeonloopsTimeoutError as e:
print(f"Timeout: {e}")
License
MIT
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
neonloops-0.5.0.tar.gz
(21.3 kB
view details)
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
neonloops-0.5.0-py3-none-any.whl
(10.9 kB
view details)
File details
Details for the file neonloops-0.5.0.tar.gz.
File metadata
- Download URL: neonloops-0.5.0.tar.gz
- Upload date:
- Size: 21.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
432b901f93376b384cd66bba96f03a516af81689ddd36ce60c08d7d401979d04
|
|
| MD5 |
ec66647e80bc25bead9a041d11f50f54
|
|
| BLAKE2b-256 |
fda0175e9bba9fc3ecc67b198ae02376270796f95b8d6d75a70a281506f2f0f1
|
File details
Details for the file neonloops-0.5.0-py3-none-any.whl.
File metadata
- Download URL: neonloops-0.5.0-py3-none-any.whl
- Upload date:
- Size: 10.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a8f54751fbf105fb5cecf17d259405af915483d2dffc4aa22f6d1696c5f5416e
|
|
| MD5 |
fc7b9341130cc1ead0cb77c8b756d7df
|
|
| BLAKE2b-256 |
984f1cdb8826835121a6c370977a5a08f29c7b4a6c6b7373403c777709a2a6a1
|