Skip to main content

Python SDK for the Opper Task API

Project description

Opper Python SDK

Python client for the Opper API.

Install

pip install opperai

Quick Start

from opperai import Opper

opper = Opper()  # uses OPPER_API_KEY env var

result = opper.call("summarize", input={"text": "Long article..."})
print(result.data)

# Stream a function
for chunk in opper.stream("summarize", input={"text": "Long article..."}):
    if chunk.type == "content":
        print(chunk.delta, end="")
    if chunk.type == "complete":
        print(chunk.data)

Schema Support

Pass Pydantic models, dataclasses, TypedDicts, or raw JSON Schema dicts for input_schema and output_schema — the SDK resolves them to JSON Schema automatically.

from pydantic import BaseModel

class Summary(BaseModel):
    summary: str
    entities: list[str]

result = opper.call(
    "extract",
    input={"text": "Marie Curie was a physicist in Paris."},
    output_schema=Summary,
)
result.data.summary   # str — typed!
result.data.entities  # list[str]

Dataclasses, TypedDicts, and plain dicts also work. See 01a_using_schemas.py and 01b_using_other_schemas.py.

Observability

Use trace() as a decorator or context manager to group calls under a single trace span. Nesting works naturally.

@opper.trace("my-pipeline")
def run():
    a = opper.call("step-1", input="hello")
    b = opper.call("step-2", input=a.data)

# or as a context manager
with opper.trace("my-pipeline") as span:
    opper.call("step-1", input="hello")

Examples

# Example What it shows
00 First call Simplest possible call
01a Pydantic schemas Type-safe output with Pydantic
01b Other schemas Dataclass, TypedDict, raw dict
02 Streaming Stream deltas + complete event
03a Tools (call) Tool definitions with call()
03b Tools (stream) Tool call chunks in streaming
04a Generate image Image generation
04b Describe image Vision / image description
04c Edit image Image editing
05 Audio Text-to-speech + speech-to-text
06 Video Video generation
07 Embeddings Vector embeddings + similarity
08 Function mgmt List, get, revisions, delete
09 Observability Tracing with decorator + context manager
09b Manual tracing Manual span creation
09c Traces List, get, and inspect traces
10 Models List available models
12 Knowledge base Semantic search with knowledge bases
13 Web tools Web search and URL fetch (beta)

Run a single example:

export OPPER_API_KEY="your-key"
uv run python examples/getting-started/00_your_first_call.py

Run all examples:

uv run python examples/run_all.py

Configuration

Parameter Default Env Var
api_key OPPER_API_KEY
base_url https://api.opper.ai OPPER_BASE_URL
headers {}

Error Handling

from opperai import ApiError

try:
    opper.call("my-fn", input="hello")
except ApiError as e:
    print(e.status, e.body)

Async Support

All methods have _async variants:

result = await opper.call_async("summarize", input={"text": "..."})

async for chunk in opper.stream_async("summarize", input={"text": "..."}):
    print(chunk.delta, end="")

Requirements

  • Python 3.10+
  • Optional: pip install opperai[pydantic] for Pydantic schema support

License

MIT

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

opperai-2.0.0b6.tar.gz (2.0 MB view details)

Uploaded Source

Built Distribution

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

opperai-2.0.0b6-py3-none-any.whl (27.5 kB view details)

Uploaded Python 3

File details

Details for the file opperai-2.0.0b6.tar.gz.

File metadata

  • Download URL: opperai-2.0.0b6.tar.gz
  • Upload date:
  • Size: 2.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for opperai-2.0.0b6.tar.gz
Algorithm Hash digest
SHA256 291743c1e93510a64d5d07b4fe3a9d4d933062c50dd45a6d8dbb5550db477a81
MD5 462a5f9ba3b0e1eecec0864e1e5bc256
BLAKE2b-256 45d3c547dbe2d6d5a230abe86b9e1daf4e73abc7b7459fb14b0df72b538a62c0

See more details on using hashes here.

Provenance

The following attestation bundles were made for opperai-2.0.0b6.tar.gz:

Publisher: publish.yml on opper-ai/opper-sdks

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opperai-2.0.0b6-py3-none-any.whl.

File metadata

  • Download URL: opperai-2.0.0b6-py3-none-any.whl
  • Upload date:
  • Size: 27.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for opperai-2.0.0b6-py3-none-any.whl
Algorithm Hash digest
SHA256 1507773eed39e5a64f912a7bbd2acae587fccfea951570d7b1ec36e078df2b83
MD5 15ed3adbeebda43bf4f761ffae7060ed
BLAKE2b-256 6046d4a109d5890e3cb7e379d05437bdf74f014e07a7038d54457fd16cf10db5

See more details on using hashes here.

Provenance

The following attestation bundles were made for opperai-2.0.0b6-py3-none-any.whl:

Publisher: publish.yml on opper-ai/opper-sdks

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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