Skip to main content

Core OpenTelemetry instrumentation library for Fiddler GenAI observability

Project description

fiddler-otel

Core OpenTelemetry instrumentation library for Fiddler GenAI observability. This is the foundation package used by all Fiddler framework integrations (fiddler-langgraph, fiddler-langchain).

Installation

pip install fiddler-otel

Quick Start

Using the @trace decorator

The simplest way to instrument any Python function — synchronous or async:

from fiddler_otel import FiddlerClient, trace

client = FiddlerClient(
    api_key="YOUR_API_KEY",
    application_id="YOUR_APPLICATION_ID",
    url="https://your-instance.fiddler.ai",
)

@trace(span_type="generation", name="my_llm_call")
def call_llm(prompt: str) -> str:
    # your LLM call here
    return response

@trace(span_type="chain")
async def run_pipeline(user_input: str) -> str:
    result = call_llm(user_input)
    return result

Using span wrappers manually

For fine-grained control over span attributes:

from fiddler_otel import FiddlerClient, FiddlerGeneration, FiddlerChain, FiddlerTool

client = FiddlerClient(
    api_key="YOUR_API_KEY",
    application_id="YOUR_APPLICATION_ID",
    url="https://your-instance.fiddler.ai",
)

with client.start_span("my_agent", span_type="chain") as chain_span:
    gen = FiddlerGeneration(client.start_span("llm_call"))
    with gen as span:
        span.set_input("What is the capital of France?")
        response = call_llm("What is the capital of France?")
        span.set_output(response)
        span.set_usage(input_tokens=10, output_tokens=5, total_tokens=15)

Multi-turn Conversations

Link multiple agent invocations into a single conversation:

from fiddler_otel import set_conversation_id
import uuid

set_conversation_id(str(uuid.uuid4()))

# All spans created after this call carry the same conversation_id
result = my_agent(user_message)

Local JSONL Capture

Capture all spans to a local file for debugging without sending to Fiddler:

client = FiddlerClient(
    api_key="...",
    application_id="...",
    url="...",
    jsonl_capture_enabled=True,
    jsonl_file_path="trace_data.jsonl",
)

Or via environment variables:

FIDDLER_JSONL_ENABLED=true \
FIDDLER_JSONL_FILE=trace_data.jsonl \
python my_agent.py

Console Tracing (Development)

Print all spans to stdout during development:

client = FiddlerClient(
    api_key="...",
    application_id="...",
    url="...",
    console_tracer=True,
)

Public API

Symbol Description
FiddlerClient Main client — configures the tracer and exports spans to Fiddler
FiddlerSpan Base span wrapper with set_input, set_output, set_attribute
FiddlerGeneration LLM span wrapper — adds set_usage, set_messages, set_context
FiddlerChain Chain/pipeline span wrapper
FiddlerTool Tool call span wrapper
trace Decorator for automatic span creation around any function
get_current_span Get the active Fiddler span inside a traced function
set_conversation_id Link multiple invocations into one conversation
get_client Return the global singleton FiddlerClient

Context Isolation

fiddler-otel uses its own isolated OpenTelemetry context that does not interfere with any existing global tracer in your application. If you already use OpenTelemetry for infrastructure tracing, Fiddler spans will not appear in your infrastructure traces and vice versa.

Framework Integrations

Package Framework Install
fiddler-langgraph LangGraph + LangChain v0.x pip install fiddler-langgraph
fiddler-langchain LangChain V1 (create_agent) pip install fiddler-langchain

Both integration packages depend on fiddler-otel and re-export its core symbols, so you typically only need to install the integration package for your framework.

Requirements

  • Python 3.10+
  • opentelemetry-api >= 1.27.0
  • opentelemetry-sdk >= 1.27.0
  • opentelemetry-exporter-otlp-proto-http >= 1.27.0
  • pydantic >= 2.0

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

fiddler_otel-0.1.1.tar.gz (17.6 kB view details)

Uploaded Source

Built Distribution

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

fiddler_otel-0.1.1-py3-none-any.whl (18.9 kB view details)

Uploaded Python 3

File details

Details for the file fiddler_otel-0.1.1.tar.gz.

File metadata

  • Download URL: fiddler_otel-0.1.1.tar.gz
  • Upload date:
  • Size: 17.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for fiddler_otel-0.1.1.tar.gz
Algorithm Hash digest
SHA256 e82a4a7188a2f19bec56bdba9a47076e452e84b464c88d11af2c3e9ede9131b0
MD5 4f18a5e26f8b6b9a423096d82cd5b631
BLAKE2b-256 563c5c5467338a1775333e8be494276f87eb4854ff07604d2af44553f61e708f

See more details on using hashes here.

Provenance

The following attestation bundles were made for fiddler_otel-0.1.1.tar.gz:

Publisher: publish.yml on fiddler-labs/fiddler-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fiddler_otel-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: fiddler_otel-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 18.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for fiddler_otel-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6d0e4557e6f9f17fd043d8d198ca3bd0a2988c1ff31a499fc838fbb865c2ffc6
MD5 0734380d2b5edd86741b506a79ee367d
BLAKE2b-256 ae5a87017545115c8c9e2c0453d7793f3d02d40f50049e0fa971c8e8481e12b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for fiddler_otel-0.1.1-py3-none-any.whl:

Publisher: publish.yml on fiddler-labs/fiddler-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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