Skip to main content

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.3.0.tar.gz (20.9 kB view details)

Uploaded Source

Built Distribution

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

neonloops-0.3.0-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

File details

Details for the file neonloops-0.3.0.tar.gz.

File metadata

  • Download URL: neonloops-0.3.0.tar.gz
  • Upload date:
  • Size: 20.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.1

File hashes

Hashes for neonloops-0.3.0.tar.gz
Algorithm Hash digest
SHA256 8e0ebba913da9b24d085260bf7c79eb7e551641765b4a55ec4c79e91ba554524
MD5 f70072f37f97e571444ec0333a5e3af4
BLAKE2b-256 eb5100071d124489bfd2105d9ba7a74e9471514e942b624b3763349b2a9ba4f0

See more details on using hashes here.

File details

Details for the file neonloops-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: neonloops-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 10.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.1

File hashes

Hashes for neonloops-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 79866198f95a67b723702a489a254110d29ae8826f265f573e7e47de5c7a8d50
MD5 3b7475e81788ace7db844036643626d7
BLAKE2b-256 c5db3a084ab5ba9510f8f80dbb4a5914704f9a8b5cd794ca75b6d89c0730dac5

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