Skip to main content

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 key
  • SPYGLASS_DEPLOYMENT_ID: Unique identifier for your deployment
    • Note: Used for both service.name and deployment.id attributes

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 self and cls)
  • 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

spyglass_ai-0.1.8.tar.gz (149.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

spyglass_ai-0.1.8-py3-none-any.whl (23.4 kB view details)

Uploaded Python 3

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

Hashes for spyglass_ai-0.1.8.tar.gz
Algorithm Hash digest
SHA256 b16d9057b2aff7185bf46c5570f59870885e8ef23eb0093433639eeb341feccd
MD5 2c30102bee378fa723cf98f73b3ac6d5
BLAKE2b-256 e27a09b6bed077e41cdaf6300f6f2d4822ee1b3e80150c868b162092b6b5fdff

See more details on using hashes here.

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

Hashes for spyglass_ai-0.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 6a01b3dd595c9416a687d5be80d30cd1b5c224812cac6987327d96df72e41026
MD5 f3d5d5d22bcc7a5bee93045218b7278b
BLAKE2b-256 6e79ffab5507bb835fb0447972149d941fef69ca7f1dbfcf7d47a76e2cc4f652

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page