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.5.0.tar.gz (21.3 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.5.0-py3-none-any.whl (10.9 kB view details)

Uploaded Python 3

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

Hashes for neonloops-0.5.0.tar.gz
Algorithm Hash digest
SHA256 432b901f93376b384cd66bba96f03a516af81689ddd36ce60c08d7d401979d04
MD5 ec66647e80bc25bead9a041d11f50f54
BLAKE2b-256 fda0175e9bba9fc3ecc67b198ae02376270796f95b8d6d75a70a281506f2f0f1

See more details on using hashes here.

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

Hashes for neonloops-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a8f54751fbf105fb5cecf17d259405af915483d2dffc4aa22f6d1696c5f5416e
MD5 fc7b9341130cc1ead0cb77c8b756d7df
BLAKE2b-256 984f1cdb8826835121a6c370977a5a08f29c7b4a6c6b7373403c777709a2a6a1

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