Metadata-Version: 2.5
Name: blazing_agents
Version: 0.2.0
Summary: Official Python SDK for Blazing Agents
Project-URL: Documentation, https://docs.blazingagents.com
Project-URL: Repository, https://github.com/blazingagents/python-sdk
License-Expression: MIT
License-File: LICENSE
Requires-Python: >=3.11
Requires-Dist: httpx<1,>=0.27
Requires-Dist: pydantic<3,>=2
Description-Content-Type: text/markdown

<div align="center">
  <a href="https://docs.blazingagents.com">
    <img src="https://raw.githubusercontent.com/blazingagents/docs/main/public/brand/icon.svg" alt="Blazing Agents logo" width="96">
  </a>
  <h1>Blazing Agents Python SDK</h1>
  <p>Build production agents in Python with a typed client for the Blazing Agents API.</p>
  <p>
    <a href="https://docs.blazingagents.com/sdk/python">Documentation</a> ·
    <a href="https://pypi.org/project/blazing-agents/">PyPI</a>
  </p>
</div>

The official Python SDK provides synchronous and asynchronous clients for the
Blazing Agents `/v1` API. It supports CPython 3.11 and newer.

## Features

- Typed Pydantic request and response models.
- Matching synchronous and asynchronous APIs.
- Agent, Workspace, Skill, Provider, Prompt, Memory, Session, Artifact, Task,
  usage, and Tenant management.
- Chat, text, and structured-object generation streams.
- Lazy pagination and binary transfers.
- Request correlation with configurable timeouts and observability.

## Installation

```console
pip install blazing-agents
```

## Quick start

Create a Tenant API key in the Blazing Agents dashboard, then pass it to the
client or set `BLAZING_AGENTS_API_KEY`.

```python
from blazing_agents import BlazingAgents


with BlazingAgents(api_key="ba_...") as client:
    result = client.completion(
        agent_id="ag_...",
        prompt="Write a friendly welcome message.",
    )
    print(str(result))
```

Use `AsyncBlazingAgents` for asynchronous applications; it exposes the same
resources and generation methods.

## Documentation

Read the [Python SDK documentation](https://docs.blazingagents.com/sdk/python)
for authentication, resource guides, generation and streaming, error handling,
and the complete API reference.

## Thinking levels

Configure `thinking_level` on Agent create or update. Omit it on update to
preserve the current selection; pass `None` for Provider default. Explicit
levels are strings, including custom values for Models with unknown capabilities.
Agent and Agent Version responses expose `thinking_level`, and restoring a
Version restores its level too. The async client provides the same methods.

```python
capabilities = client.providers.get_thinking_levels(provider_id, model="gpt-5")
# capabilities.known distinguishes unknown metadata from known choices.
agent = client.agents.create(
    name="Reasoner",
    provider_id=provider_id,
    model="openai/gpt-5",
    thinking_level="high",
)
client.agents.update(agent.id, thinking_level=None)
```

## Development

```console
uv sync --locked
uv run ruff check .
uv run ruff format --check .
uv run python scripts/run_typechecks.py
uv run python scripts/run_tests.py
```

## License

[MIT](LICENSE)

## Interactive resend

Successful interactive exchanges are saved together. Failed or canceled execution
leaves saved history unchanged, including the previous answer during regeneration;
executed usage and Tool effects remain. Retain submitted text/images until success
and resend edited or unchanged input through ordinary chat with a fresh message ID.
Stop requests cancellation; a lost response can hide a saved exchange. Reuse the
returned Session ID and load history normally on return. No outcome polling or
automatic generation retry is needed. See the [chatbot guide](https://docs.blazingagents.com/getting-started/chatbot)
and [working examples](https://github.com/blazingagents/examples).
