This release is a pre-release and may not be stable for production use.
Adeptiv GenAI Tracing SDK
Adeptiv GenAI is a lightweight, vendor-neutral OpenTelemetry tracing SDK for LLMs, agents, and AI workflows.
It captures latency, execution flow, hashes, and metadata for all AI use cases.
Key Features
- Trace-only observability (no response normalization)
- Works with any LLM (OpenAI, Anthropic, Gemini, local models)
- Supports chat, summarization, agents, tools, RAG
- Sync & async compatible
- Enterprise-safe (hashing, redaction, previews)
- OpenTelemetry compatible
This ensures zero lock-in and maximum compatibility.
Installation
pip install adeptiv-ai-evaluator-sdk
Adeptiv GenAI Tracing SDK
Tracing an LLM Call
SDK configuration
config.api_key = "" #project Key
config.project_name = "customer-support-bot" # Project Name
from adeptiv_evaluator_sdk import trace_llm
@trace_llm(model="gpt-4o", operation="chat", workflow_id="")
def chat(prompt):
return llm.invoke(prompt)
chat("Hello world")
# Adeptiv GenAI Tracing Agents SDK
from adeptiv_evaluator_sdk import trace_llm
@trace_agent("support_agent", model="gpt-4o",workflow_id="")
async def run_agent(query):
return await agent.run(query)
Containment
When a containment rule in Adeptiv acts on an agent (pause it, block a tool, allow only approved models, slow it down), the SDK enforces it inside your process. Only the agent the rule acted on is affected; every other agent keeps working.
The SDK keeps the use case's policy in memory and refreshes it in the background (every 15 s by default), so a check costs about a microsecond and never makes a network call. An action stays until someone resumes the agent in Adeptiv; if Adeptiv cannot be reached, the last policy stays in force. If the policy has never been fetched, nothing is enforced: an Adeptiv outage never stops your agents.
Only calls traced with contained=True are checked; @trace alone never is,
and an app with no contained call makes no policy requests. Name agents the
way they are named in Adeptiv:
from adeptiv_evaluator_sdk import trace, ContainmentError
@trace(operation="agent", agent_name="Refund Agent", contained=True)
def refund_agent(question): # pause, approved models, slow down
...
@trace(operation="tool", contained=True)
def issue_refund(order_id): # blocked for the current agent?
...
@trace(operation="chat", model="gpt-4.1", contained=True)
def ask_model(prompt): # outside the approved models?
...
try:
reply = refund_agent(question)
except ContainmentError as exc: # AgentPaused, ToolBlocked, ModelNotApproved, RateLimited
reply = exc.fallback_message # "A team member will reply to you shortly." or the rule's message
A refused call still shows on its span, marked with the action. A contained agent call makes its agent the current one, so contained tool and model calls inside it are checked for that agent.
For a tool dispatcher or a model call you cannot trace, check it before it runs; the agent is the one of the enclosing contained agent call:
from adeptiv_evaluator_sdk import guard_tool, guard_model
for call in response.tool_calls:
guard_tool(call.name) # raises ToolBlocked if this tool is blocked
run_tool(call)
guard_model("gpt-4.1") # raises ModelNotApproved outside the approved list
| Setting | Env var | Default |
|---|---|---|
containment_enabled |
ADEPTIV_CONTAINMENT |
true |
containment_poll_seconds |
ADEPTIV_CONTAINMENT_POLL_SECONDS |
15 (min 5) |
containment_initial_wait_seconds |
ADEPTIV_CONTAINMENT_INITIAL_WAIT |
1 (first call of a process only) |
containment_max_wait_seconds |
ADEPTIV_CONTAINMENT_MAX_WAIT |
10 (slow-down wait before RateLimited) |
containment_endpoint |
ADEPTIV_CONTAINMENT_ENDPOINT |
the policy API Gateway (/v1/containment is appended) |
Inside a @trace span, a refused or delayed call marks it with adeptiv.containment.action,
adeptiv.containment.outcome (blocked / delayed) and
adeptiv.containment.event_id, so Adeptiv can show the containment held.
Metadata
Release files for adeptiv-ai-evaluator-sdk 1.51.0.dev1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| adeptiv_ai_evaluator_sdk-1.51.0.dev1.tar.gz | 60.5 kB | Without provenance | Details for adeptiv_ai_evaluator_sdk-1.51.0.dev1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| adeptiv_ai_evaluator_sdk-1.51.0.dev1-py3-none-any.whl | Python 3 | none | any | Details for adeptiv_ai_evaluator_sdk-1.51.0.dev1-py3-none-any.whl |
Total release size: 132.5 kB
Release files / adeptiv_ai_evaluator_sdk-1.51.0.dev1.tar.gz
| Download URL | adeptiv_ai_evaluator_sdk-1.51.0.dev1.tar.gz |
|---|---|
| Size | 60.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
06ab8d511683918a4a222ce4950395afbb976b9a5dd06dc02321577367d37cdd
|
|
BLAKE2b-256 checksum How to use checksums |
45b7e37800e7c9a442487d469c46f18da528b706dd686a020bd5792568168a83
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.21
|
Release files / adeptiv_ai_evaluator_sdk-1.51.0.dev1-py3-none-any.whl
| Download URL | adeptiv_ai_evaluator_sdk-1.51.0.dev1-py3-none-any.whl |
|---|---|
| Size | 72.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
87e53cd02f2505729382798085c800b275d5d6b1da3a98673accee42aad6b019
|
|
BLAKE2b-256 checksum How to use checksums |
546d7a2a5bf426905387f775229110e9157d4b9b8008fb8438d1a2381c56b2ab
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.21
|
Security for adeptiv-ai-evaluator-sdk 1.51.0.dev1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.