Metadata-Version: 2.4
Name: niitaka-sdk
Version: 0.1.4
Summary: AI agent observability and control plane SDK
Project-URL: Homepage, https://niitaka.ai
Project-URL: Docs, https://docs.niitaka.ai
Project-URL: Repository, https://github.com/amigotomodachiami/Niitaka
Author-email: Niitaka <hello@niitaka.ai>
License: MIT
Keywords: agents,ai,anthropic,gemini,groq,langchain,llm,observability,openai,tracing
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.9
Requires-Dist: httpx>=0.24
Requires-Dist: requests>=2.28
Provides-Extra: all
Requires-Dist: anthropic>=0.20; extra == 'all'
Requires-Dist: google-generativeai>=0.4; extra == 'all'
Requires-Dist: groq>=0.4; extra == 'all'
Requires-Dist: langchain-core>=0.1; extra == 'all'
Requires-Dist: openai>=1.0; extra == 'all'
Provides-Extra: anthropic
Requires-Dist: anthropic>=0.20; extra == 'anthropic'
Provides-Extra: gemini
Requires-Dist: google-generativeai>=0.4; extra == 'gemini'
Provides-Extra: groq
Requires-Dist: groq>=0.4; extra == 'groq'
Provides-Extra: langchain
Requires-Dist: langchain-core>=0.1; extra == 'langchain'
Provides-Extra: openai
Requires-Dist: openai>=1.0; extra == 'openai'
Description-Content-Type: text/markdown

# Niitaka SDK

**AI agent observability and control plane — one import away.**

Niitaka instruments your AI agents to capture every LLM call, tool invocation, and decision trace. Connect to the [Niitaka dashboard](https://niitaka.ai) to run experiments, enforce guardrails, and version your agents — without changing your agent code.

## Install

```bash
pip install niitaka-sdk                    # core
pip install "niitaka-sdk[openai]"          # + OpenAI
pip install "niitaka-sdk[anthropic]"       # + Anthropic
pip install "niitaka-sdk[all]"             # all providers
```

## Quick start

```python
import niitaka
import os

niitaka.configure(
    api_key=os.getenv("NIITAKA_API_KEY"),
    api_url="https://api.niitaka.ai",      # or your self-hosted URL
)

# Instrument your LLM provider (pick one or more)
niitaka.instrument_openai()
niitaka.instrument_anthropic()
niitaka.instrument_gemini()
niitaka.instrument_groq()

# Wrap your agent run in a session
with niitaka.start_session(goal="Summarise this document", agent_id="my-agent"):
    response = client.chat.completions.create(...)  # auto-logged
```

Every call inside `start_session` is automatically traced — latency, token usage, cost, errors, and tool calls.

## Providers

| Provider | Extra | Import |
|---|---|---|
| OpenAI | `niitaka-sdk[openai]` | `niitaka.instrument_openai()` |
| Anthropic | `niitaka-sdk[anthropic]` | `niitaka.instrument_anthropic()` |
| Google Gemini | `niitaka-sdk[gemini]` | `niitaka.instrument_gemini()` |
| Groq | `niitaka-sdk[groq]` | `niitaka.instrument_groq()` |
| LangChain | `niitaka-sdk[langchain]` | `from niitaka import NiitakaCallbackHandler` |

## LangChain

```python
from niitaka import NiitakaCallbackHandler
import niitaka

with niitaka.start_session(goal="...", agent_id="lc-agent"):
    chain.invoke({"input": "..."}, config={"callbacks": [NiitakaCallbackHandler()]})
```

## Runtime config

Niitaka can push model, temperature, and guardrail config to your agent at runtime — no redeploy needed:

```python
config = niitaka.get_runtime_config(agent_id="my-agent")
# config["llm"]["model"], config["guardrails"]["cost_limit_usd"], ...
```

## Links

- **Dashboard**: [niitaka.ai](https://niitaka.ai)
- **Docs**: [docs.niitaka.ai](https://docs.niitaka.ai)
- **Support**: hello@niitaka.ai
