Metadata-Version: 2.4
Name: evoke-sdk
Version: 0.2.0
Summary: AI Detection & Response SDK - OpenTelemetry-based observability for LLM applications
License: Other/Proprietary License
Keywords: ai,llm,observability,security,opentelemetry,openai,anthropic,langchain,agents
Author: Evoke Security
Author-email: support@evokesecurity.com
Requires-Python: >=3.10,<4.0
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: Other/Proprietary License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Security
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: System :: Monitoring
Provides-Extra: agno
Provides-Extra: alephalpha
Provides-Extra: all
Provides-Extra: anthropic
Provides-Extra: bedrock
Provides-Extra: chromadb
Provides-Extra: cohere
Provides-Extra: crewai
Provides-Extra: google-generativeai
Provides-Extra: groq
Provides-Extra: haystack
Provides-Extra: lancedb
Provides-Extra: langchain
Provides-Extra: llamaindex
Provides-Extra: marqo
Provides-Extra: mcp
Provides-Extra: milvus
Provides-Extra: mistralai
Provides-Extra: ollama
Provides-Extra: openai
Provides-Extra: openai-agents
Provides-Extra: pinecone
Provides-Extra: qdrant
Provides-Extra: replicate
Provides-Extra: sagemaker
Provides-Extra: together
Provides-Extra: transformers
Provides-Extra: vertexai
Provides-Extra: watsonx
Provides-Extra: weaviate
Provides-Extra: writer
Requires-Dist: opentelemetry-api (>=1.20.0,<2.0.0)
Requires-Dist: opentelemetry-exporter-otlp-proto-http (>=1.20.0,<2.0.0)
Requires-Dist: opentelemetry-instrumentation-agno (>=0.34.0) ; extra == "agno" or extra == "all"
Requires-Dist: opentelemetry-instrumentation-alephalpha (>=0.34.0) ; extra == "alephalpha" or extra == "all"
Requires-Dist: opentelemetry-instrumentation-anthropic (>=0.34.0) ; extra == "anthropic" or extra == "all"
Requires-Dist: opentelemetry-instrumentation-bedrock (>=0.34.0) ; extra == "bedrock" or extra == "all"
Requires-Dist: opentelemetry-instrumentation-chromadb (>=0.34.0) ; extra == "chromadb" or extra == "all"
Requires-Dist: opentelemetry-instrumentation-cohere (>=0.34.0) ; extra == "cohere" or extra == "all"
Requires-Dist: opentelemetry-instrumentation-crewai (>=0.34.0) ; extra == "crewai" or extra == "all"
Requires-Dist: opentelemetry-instrumentation-google-generativeai (>=0.34.0) ; extra == "google-generativeai" or extra == "all"
Requires-Dist: opentelemetry-instrumentation-groq (>=0.34.0) ; extra == "groq" or extra == "all"
Requires-Dist: opentelemetry-instrumentation-haystack (>=0.34.0) ; extra == "haystack" or extra == "all"
Requires-Dist: opentelemetry-instrumentation-lancedb (>=0.34.0) ; extra == "lancedb" or extra == "all"
Requires-Dist: opentelemetry-instrumentation-langchain (>=0.34.0) ; extra == "langchain" or extra == "all"
Requires-Dist: opentelemetry-instrumentation-llamaindex (>=0.34.0) ; extra == "llamaindex" or extra == "all"
Requires-Dist: opentelemetry-instrumentation-marqo (>=0.34.0) ; extra == "marqo" or extra == "all"
Requires-Dist: opentelemetry-instrumentation-mcp (>=0.34.0) ; extra == "mcp" or extra == "all"
Requires-Dist: opentelemetry-instrumentation-milvus (>=0.34.0) ; extra == "milvus" or extra == "all"
Requires-Dist: opentelemetry-instrumentation-mistralai (>=0.34.0) ; extra == "mistralai" or extra == "all"
Requires-Dist: opentelemetry-instrumentation-ollama (>=0.34.0) ; extra == "ollama" or extra == "all"
Requires-Dist: opentelemetry-instrumentation-openai (>=0.34.0) ; extra == "openai" or extra == "all"
Requires-Dist: opentelemetry-instrumentation-openai-agents (>=0.34.0) ; extra == "openai-agents" or extra == "all"
Requires-Dist: opentelemetry-instrumentation-pinecone (>=0.34.0) ; extra == "pinecone" or extra == "all"
Requires-Dist: opentelemetry-instrumentation-qdrant (>=0.34.0) ; extra == "qdrant" or extra == "all"
Requires-Dist: opentelemetry-instrumentation-replicate (>=0.34.0) ; extra == "replicate" or extra == "all"
Requires-Dist: opentelemetry-instrumentation-sagemaker (>=0.34.0) ; extra == "sagemaker" or extra == "all"
Requires-Dist: opentelemetry-instrumentation-together (>=0.34.0) ; extra == "together" or extra == "all"
Requires-Dist: opentelemetry-instrumentation-transformers (>=0.34.0) ; extra == "transformers" or extra == "all"
Requires-Dist: opentelemetry-instrumentation-vertexai (>=0.34.0) ; extra == "vertexai" or extra == "all"
Requires-Dist: opentelemetry-instrumentation-watsonx (>=0.34.0) ; extra == "watsonx" or extra == "all"
Requires-Dist: opentelemetry-instrumentation-weaviate (>=0.34.0) ; extra == "weaviate" or extra == "all"
Requires-Dist: opentelemetry-instrumentation-writer (>=0.34.0) ; extra == "writer" or extra == "all"
Requires-Dist: opentelemetry-sdk (>=1.20.0,<2.0.0)
Requires-Dist: opentelemetry-semantic-conventions (>=0.50b0)
Requires-Dist: pydantic (>=2.0.0,<3.0.0)
Project-URL: Documentation, https://app.evokesecurity.com/docs
Project-URL: Homepage, https://www.evokesecurity.com
Project-URL: Repository, https://github.com/evoke-security/evoke-sdk
Description-Content-Type: text/markdown

AI Detection & Response Python-based SDK for monitoring agent workflows, language model execution, tool calls, and relevant data sources.

## Features

- **Automatic tracing**: Works with any language model provider (OpenAI, Anthropic, custom)
- **Zero code changes**: Just initialize and go
- **Comprehensive telemetry**: Tracks tools, models, prompts, reasoning
- **Simple API**: 2 lines of code

## Supported Frameworks

- OpenAI SDK
- Anthropic SDK
- Google (Gemini) SDK
- AWS Bedrock SDK
- Azure Foundry SDK
- LiteLLM SDK
- LangChain

## Installation

```bash
pip install evoke-sdk
```

## Quick Start

```python
import evoke

# Initialize once at startup
evoke.init(api_key="evoke_pk_your_api_key")

# All LLM calls are now automatically traced!
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
    model="gpt-4",
    messages=[{"role": "user", "content": "Hello!"}]
)
```

## What Gets Tracked

- **Models**: Which models were used (gpt-4, claude-3, etc.)
- **Prompts & Responses**: Full input and output data
- **Tools**: Which tools/functions were called
- **Data Sources**: Which vector stores/retrievers were accessed
- **Tokens**: Input/output/cached token counts
- **Timing**: Duration and timestamps
- **Errors**: Exceptions and stack traces

## Optional: Explicit Tracing

Use the `@guard` decorator for high-level workflows:

```python
@evoke.guard(name="customer_support_agent")
def handle_customer_query(query: str):
    # Your agent logic
    return agent.run(query)
```

## Optional: Add Custom Context

Link custom business values to track custom events and create custom detections:

```python
@evoke.guard(name="process_order")
def process_order(order_id: str, user_id: str):
    evoke.add_context(
        user_id=user_id,
        order_id=order_id,
        environment="production"
    )
    return process()
```

## Flush Before Exit

Ensure all data is sent before your app exits:

```python
# At the end of your script
evoke.flush()
```
