Skip to main content

traceAI Python SDK

The Python SDK for traceAI provides OpenTelemetry-native instrumentation for AI applications.

Installation

Install the core instrumentation library and your framework of choice:

# Core library (required)
pip install fi-instrumentation

# Framework-specific instrumentation
pip install traceai-openai        # For OpenAI
pip install traceai-anthropic     # For Anthropic
pip install traceai-langchain     # For LangChain
pip install traceai-llamaindex    # For LlamaIndex
# ... see full list below

Quick Start

import os
from fi_instrumentation import register
from fi_instrumentation.fi_types import ProjectType
from traceai_openai import OpenAIInstrumentor
import openai

# Set environment variables
os.environ["FI_API_KEY"] = "<your-api-key>"
os.environ["FI_SECRET_KEY"] = "<your-secret-key>"

# Register tracer provider
trace_provider = register(
    project_type=ProjectType.OBSERVE,
    project_name="my_app"
)

# Instrument your framework
OpenAIInstrumentor().instrument(tracer_provider=trace_provider)

# Use as normal - tracing happens automatically
client = openai.OpenAI()
response = client.chat.completions.create(
    model="gpt-4",
    messages=[{"role": "user", "content": "Hello!"}]
)

Core Concepts

Project Types

  • ProjectType.OBSERVE: For production monitoring. Cannot use eval tags.
  • ProjectType.EXPERIMENT: For development/testing. Supports eval tags for AI evaluations.

TraceConfig (Privacy Controls)

Control what data gets captured:

from fi_instrumentation.instrumentation.config import TraceConfig

config = TraceConfig(
    hide_inputs=False,              # Hide all input values
    hide_outputs=False,             # Hide all output values
    hide_input_messages=False,      # Hide input messages only
    hide_output_messages=False,     # Hide output messages only
    hide_input_images=False,        # Hide images in inputs
    hide_embedding_vectors=False,   # Hide embedding vectors
    base64_image_max_length=32000,  # Truncate large images
)

Or use environment variables:

  • FI_HIDE_INPUTS=true
  • FI_HIDE_OUTPUTS=true
  • FI_HIDE_INPUT_MESSAGES=true
  • FI_HIDE_OUTPUT_MESSAGES=true
  • FI_HIDE_INPUT_IMAGES=true
  • FI_HIDE_EMBEDDING_VECTORS=true

Context Managers

Add metadata to spans:

from fi_instrumentation import using_attributes

with using_attributes(
    session_id="session-123",
    user_id="user-456",
    metadata={"environment": "production"},
    tags=["chat", "support"]
):
    response = client.chat.completions.create(...)

Available context managers:

  • using_session(session_id) - Track session
  • using_user(user_id) - Track user
  • using_metadata(dict) - Add custom metadata
  • using_tags(list) - Add categorical tags
  • using_prompt_template(template, version, variables) - Track prompt variants
  • using_attributes(...) - Combined context manager
  • suppress_tracing() - Temporarily disable tracing

Evaluation Tags (Experiments Only)

Run automated evaluations on spans:

from fi_instrumentation import register
from fi_instrumentation.fi_types import (
    ProjectType, EvalTag, EvalTagType,
    EvalSpanKind, EvalName, ModelChoices
)

eval_tags = [
    EvalTag(
        type=EvalTagType.OBSERVATION_SPAN,
        value=EvalSpanKind.LLM,
        eval_name=EvalName.CONTEXT_ADHERENCE,
        custom_eval_name="my_context_check",
        mapping={
            "context": "raw.input",
            "output": "raw.output"
        },
        model=ModelChoices.TURING_SMALL
    )
]

trace_provider = register(
    project_type=ProjectType.EXPERIMENT,
    project_name="my_experiment",
    eval_tags=eval_tags
)

Available Evaluations (60+):

Category Evaluations
Content Quality CONTEXT_ADHERENCE, COMPLETENESS, GROUNDEDNESS, SUMMARY_QUALITY
Safety TOXICITY, PII, CONTENT_MODERATION, PROMPT_INJECTION
Accuracy FACTUAL_ACCURACY, CONTEXT_RELEVANCE, DETECT_HALLUCINATION
Bias BIAS_DETECTION, NO_RACIAL_BIAS, NO_GENDER_BIAS
Format IS_JSON, IS_CODE, ONE_LINE, CONTAINS_VALID_LINK
Similarity BLEU_SCORE, ROUGE_SCORE, EMBEDDING_SIMILARITY

Supported Frameworks

LLM Providers

Package Framework
traceai-openai OpenAI
traceai-anthropic Anthropic
traceai-mistralai Mistral AI
traceai-groq Groq
traceai-vertexai Google Vertex AI
traceai-google-genai Google Generative AI
traceai-google-adk Google ADK
traceai-bedrock AWS Bedrock
traceai-litellm LiteLLM
traceai-portkey Portkey

Agent Frameworks

Package Framework
traceai-langchain LangChain
traceai-llamaindex LlamaIndex
traceai-crewai CrewAI
traceai-autogen AutoGen
traceai-openai-agents OpenAI Agents
traceai-smolagents Smol Agents
traceai-dspy DSPy
traceai-haystack Haystack

Tools & Integrations

Package Framework
traceai-instructor Instructor
traceai-guardrails Guardrails AI
traceai-mcp Model Context Protocol
traceai-pipecat Pipecat
traceai-livekit LiveKit

Vector Databases

Package Database
traceai-pinecone Pinecone
traceai-chromadb ChromaDB
traceai-qdrant Qdrant
traceai-weaviate Weaviate
traceai-milvus Milvus
traceai-lancedb LanceDB
traceai-mongodb MongoDB Atlas Vector
traceai-pgvector pgvector
traceai-redis Redis Vector

Environment Variables

Authentication

  • FI_API_KEY - API key for Future AGI
  • FI_SECRET_KEY - Secret key for Future AGI

Endpoints

  • FI_BASE_URL - HTTP collector endpoint (default: https://api.futureagi.com)
  • FI_GRPC_URL - gRPC collector endpoint (default: https://grpc.futureagi.com)

Project

  • FI_PROJECT_NAME - Default project name
  • FI_PROJECT_VERSION_NAME - Default version name

Performance

  • OTEL_BSP_SCHEDULE_DELAY - Batch export delay (ms)
  • OTEL_BSP_MAX_QUEUE_SIZE - Max queue size
  • OTEL_BSP_MAX_EXPORT_BATCH_SIZE - Max batch size
  • OTEL_BSP_EXPORT_TIMEOUT - Export timeout (ms)

Advanced Usage

Custom TracerProvider

from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
from traceai_openai import OpenAIInstrumentor

# Create custom provider
provider = TracerProvider()
trace.set_tracer_provider(provider)

# Add custom exporter
exporter = OTLPSpanExporter(
    endpoint="https://your-collector.com/v1/traces",
    headers={"Authorization": "Bearer your-token"}
)
provider.add_span_processor(BatchSpanProcessor(exporter))

# Instrument
OpenAIInstrumentor().instrument(tracer_provider=provider)

Semantic Conventions

traceAI supports multiple semantic conventions:

from fi_instrumentation import register
from fi_instrumentation.fi_types import SemanticConvention

trace_provider = register(
    project_name="my_app",
    semantic_convention=SemanticConvention.FI  # Default
    # Or: SemanticConvention.OTEL_GENAI
    # Or: SemanticConvention.OPENINFERENCE
    # Or: SemanticConvention.OPENLLMETRY
)

Transport Options

from fi_instrumentation import register
from fi_instrumentation.fi_types import Transport

# HTTP (default)
trace_provider = register(
    project_name="my_app",
    transport=Transport.HTTP
)

# gRPC (requires grpc extras)
trace_provider = register(
    project_name="my_app",
    transport=Transport.GRPC
)

Examples

See framework-specific examples in each package:

Documentation

License

GPL-3.0 License

Release files for fi-instrumentation-otel 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fi-instrumentation-otel 1.1.0
File Size Uploaded
fi_instrumentation_otel-1.1.0.tar.gz 45.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fi-instrumentation-otel 1.1.0
File Interpreter ABI Platform
fi_instrumentation_otel-1.1.0-py3-none-any.whl Python 3 none any Details

Total release size:95.3 kB

Release files / fi_instrumentation_otel-1.1.0.tar.gz

Download URL fi_instrumentation_otel-1.1.0.tar.gz
Size 45.1 kB
Tags Source
SHA-256 checksum
How to use checksums
7ec324c3c9242aa87a88cf23a21c11919b8736c6451c5fb50917f592a853b059
BLAKE2b-256 checksum
How to use checksums
c4fdf88c73228722ceff16efb7552cbebeadb75e666c2f447686fb2025cda22a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.0.0 CPython/3.13.0 Darwin/25.1.0

Release files / fi_instrumentation_otel-1.1.0-py3-none-any.whl

Download URL fi_instrumentation_otel-1.1.0-py3-none-any.whl
Size 50.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4fa2bf663e0ce09447aca92ae798cd7b0dee35c5c92c2e033f1d89d158a9e62c
BLAKE2b-256 checksum
How to use checksums
2aecbb3534e0245c6ba1e454ab676356d7387c658094fd9e51556a70e98562c5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.0.0 CPython/3.13.0 Darwin/25.1.0

Release history Release notifications | RSS feed

This release

1.1.0 This release

2 release files

1.0.0

2 release files

0.1.16

2 release files

0.1.14

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page