A client library for shipping telemetry to the Spyglass AI platform
Project description
Spyglass SDK
The Spyglass SDK provides client code for shipping telemetry data to the Spyglass AI platform
Installation
pip install spyglass-ai
Configuration
Set the following environment variables to configure the SDK:
Required
SPYGLASS_API_KEY: Your Spyglass API keySPYGLASS_DEPLOYMENT_ID: Unique identifier for your deployment- Note: Used for both
service.nameanddeployment.idattributes
- Note: Used for both
Optional
SPYGLASS_OTEL_EXPORTER_OTLP_ENDPOINT: Custom endpoint for development
Example Configuration
export SPYGLASS_API_KEY="your-api-key"
export SPYGLASS_DEPLOYMENT_ID="user-service-v1.2.0" # Required - used for both service.name and deployment.id
Note: SPYGLASS_DEPLOYMENT_ID is required and will be used for both the OpenTelemetry service.name and deployment.id resource attributes. This ensures consistency and simplifies dashboard queries.
Usage
Basic Function Tracing
Use the @spyglass_trace decorator to automatically trace function calls:
from spyglass_ai import spyglass_trace
@spyglass_trace()
def calculate_total(price, tax_rate):
return price * (1 + tax_rate)
# Usage
result = calculate_total(100, 0.08) # This call will be traced
You can also provide a custom span name:
@spyglass_trace(name="payment_processing")
def process_payment(amount, card_info):
# Payment processing logic
return {"status": "success", "transaction_id": "tx_123"}
OpenAI Integration
Wrap your OpenAI client to automatically trace API calls:
from openai import OpenAI
from spyglass_ai import spyglass_openai
# Create your OpenAI client
client = OpenAI(api_key="your-api-key")
# Wrap it with Spyglass tracing
client = spyglass_openai(client)
# Now all chat completions will be traced
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": "Hello!"}],
max_tokens=100
)
Complete Example
from openai import OpenAI
from spyglass_ai import spyglass_trace, spyglass_openai
# Set up OpenAI client with tracing
client = OpenAI(api_key="your-api-key")
client = spyglass_openai(client)
@spyglass_trace(name="ai_conversation")
def have_conversation(user_message):
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": user_message}],
max_tokens=150
)
return response.choices[0].message.content
# This will create traces for both the function and the OpenAI API call
answer = have_conversation("What is the capital of France?")
print(answer)
What Gets Traced
Function Tracing (@spyglass_trace)
- Function name, module, and qualified name
- Input arguments (excluding
selfandcls) - Return values
- Execution time
- Any exceptions that occur
OpenAI Integration (spyglass_openai)
- Model used
- Number of messages
- Request parameters (max_tokens, temperature, etc.)
- Token usage (prompt, completion, total)
- Response model
- Any API errors
Development
Install Dependencies
uv sync --extra test
Run All Tests
# Run all tests
uv run pytest
# Run with coverage
uv run pytest --cov=src --cov-report=term-missing
# Run specific test file
uv run pytest tests/test_trace.py -v
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file spyglass_ai-0.1.8.tar.gz.
File metadata
- Download URL: spyglass_ai-0.1.8.tar.gz
- Upload date:
- Size: 149.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b16d9057b2aff7185bf46c5570f59870885e8ef23eb0093433639eeb341feccd
|
|
| MD5 |
2c30102bee378fa723cf98f73b3ac6d5
|
|
| BLAKE2b-256 |
e27a09b6bed077e41cdaf6300f6f2d4822ee1b3e80150c868b162092b6b5fdff
|
File details
Details for the file spyglass_ai-0.1.8-py3-none-any.whl.
File metadata
- Download URL: spyglass_ai-0.1.8-py3-none-any.whl
- Upload date:
- Size: 23.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6a01b3dd595c9416a687d5be80d30cd1b5c224812cac6987327d96df72e41026
|
|
| MD5 |
f3d5d5d22bcc7a5bee93045218b7278b
|
|
| BLAKE2b-256 |
6e79ffab5507bb835fb0447972149d941fef69ca7f1dbfcf7d47a76e2cc4f652
|