Metadata-Version: 2.4
Name: preval
Version: 0.1.0a1
Summary: AI Agent Observability — trace, evaluate, and debug LLM and voice AI agents in production.
Project-URL: Homepage, https://preval.dev
Project-URL: Documentation, https://docs.preval.dev
Project-URL: Repository, https://github.com/preval-dev/preval-python-sdk
Project-URL: Bug Tracker, https://github.com/preval-dev/preval-python-sdk/issues
Project-URL: Changelog, https://github.com/preval-dev/preval-python-sdk/blob/main/CHANGELOG.md
Author-email: Preval <hello@preval.dev>
License: MIT
License-File: LICENSE
Keywords: agents,ai,crewai,langchain,livekit,llm,observability,openai,tracing,vapi
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<1.0,>=0.24.0
Requires-Dist: opentelemetry-api<2.0,>=1.20.0
Requires-Dist: opentelemetry-sdk<2.0,>=1.20.0
Provides-Extra: all
Requires-Dist: crewai>=0.40.0; extra == 'all'
Requires-Dist: deepgram-sdk>=3.0.0; extra == 'all'
Requires-Dist: fastapi>=0.100.0; extra == 'all'
Requires-Dist: langchain-core>=0.1.0; extra == 'all'
Requires-Dist: livekit-agents>=0.8.0; extra == 'all'
Requires-Dist: openai>=1.0.0; extra == 'all'
Requires-Dist: traceloop-sdk>=0.30.0; extra == 'all'
Provides-Extra: crewai
Requires-Dist: crewai>=0.40.0; extra == 'crewai'
Provides-Extra: deepgram
Requires-Dist: deepgram-sdk>=3.0.0; extra == 'deepgram'
Provides-Extra: dev
Requires-Dist: build>=1.0; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.21; extra == 'dev'
Requires-Dist: pytest>=7.0; extra == 'dev'
Requires-Dist: readme-renderer>=42.0; extra == 'dev'
Requires-Dist: ruff>=0.1.0; extra == 'dev'
Requires-Dist: twine>=5.0; extra == 'dev'
Provides-Extra: langchain
Requires-Dist: langchain-core>=0.1.0; extra == 'langchain'
Provides-Extra: livekit
Requires-Dist: livekit-agents>=0.8.0; extra == 'livekit'
Provides-Extra: openai
Requires-Dist: openai>=1.0.0; extra == 'openai'
Provides-Extra: openai-assistants
Requires-Dist: openai>=1.0.0; extra == 'openai-assistants'
Provides-Extra: opentelemetry
Requires-Dist: traceloop-sdk>=0.30.0; extra == 'opentelemetry'
Provides-Extra: vapi
Requires-Dist: fastapi>=0.100.0; extra == 'vapi'
Description-Content-Type: text/markdown

# Preval Python SDK

**AI Agent Observability for production LLM and voice agents.**

Preval traces, evaluates, and debugs your AI agents in production. Drop the SDK
into your code and get a full waterfall view of every call, every span, every
token — with cost, latency, and quality scores per request.

## Install

```
pip install preval
```

For framework integrations, install an extra:

```
pip install preval[openai]
pip install preval[langchain]
pip install preval[crewai]
pip install preval[livekit]
pip install preval[vapi]
pip install preval[deepgram]
pip install preval[opentelemetry]   # auto-instrument 20+ providers
```

Or install everything at once:

```
pip install preval[all]
```

## Quickstart

```python
import preval

p = preval.init(
    api_key="your-api-key",
    project="my-project",
)
p.init_opentelemetry()

# All OpenAI / Anthropic / LangChain calls are now auto-traced
from openai import OpenAI

client = OpenAI()
response = client.chat.completions.create(
    model="gpt-4.1",
    messages=[{"role": "user", "content": "Hello!"}],
)
```

That's it. Open your dashboard at https://preval.dev and you'll see the trace
within seconds.

## Manual tracing

If you want full control over span boundaries:

```python
from preval import PrevalObserve

observe = PrevalObserve(api_key="your-api-key", project="my-project")

with observe.trace("call-123", modality="voice", agent_name="support-bot") as t:
    with t.span("transcribe", type="stt", provider="deepgram") as s:
        s.set_output("Hello, how can I help?", confidence=0.95)
    with t.span("generate", type="llm", provider="openai", model="gpt-4o") as s:
        s.set_output("I can help you with that.")
        s.set_tokens(input=120, output=45)

observe.shutdown()
```

## Integrations

| Framework         | Install                    | Usage                                              |
|-------------------|----------------------------|----------------------------------------------------|
| OpenAI            | `pip install preval[openai]`        | `p.instrument_openai()`                   |
| OpenAI Assistants | `pip install preval[openai-assistants]` | `p.wrap_openai_assistants(client)`    |
| LangChain         | `pip install preval[langchain]`     | `handler = p.langchain_handler()`         |
| CrewAI            | `pip install preval[crewai]`        | `from preval.integrations.crewai_wrapper import instrument_crew` |
| LiveKit           | `pip install preval[livekit]`       | `from preval.integrations.livekit import PrevalLiveKitPlugin` |
| Vapi              | `pip install preval[vapi]`          | `from preval.integrations.vapi import VapiWebhookHandler` |
| Deepgram          | `pip install preval[deepgram]`      | `p.instrument_deepgram()`                 |
| OpenTelemetry     | `pip install preval[opentelemetry]` | `p.init_opentelemetry()` (auto-instruments 20+ providers) |

## Links

- Dashboard: https://preval.dev
- Documentation: https://docs.preval.dev
- Issues: https://github.com/preval-dev/preval-python-sdk/issues
- Changelog: https://github.com/preval-dev/preval-python-sdk/blob/main/CHANGELOG.md

## License

MIT — see the [LICENSE](LICENSE) file for details.
