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=trueFI_HIDE_OUTPUTS=trueFI_HIDE_INPUT_MESSAGES=trueFI_HIDE_OUTPUT_MESSAGES=trueFI_HIDE_INPUT_IMAGES=trueFI_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 sessionusing_user(user_id)- Track userusing_metadata(dict)- Add custom metadatausing_tags(list)- Add categorical tagsusing_prompt_template(template, version, variables)- Track prompt variantsusing_attributes(...)- Combined context managersuppress_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 AGIFI_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 nameFI_PROJECT_VERSION_NAME- Default version name
Performance
OTEL_BSP_SCHEDULE_DELAY- Batch export delay (ms)OTEL_BSP_MAX_QUEUE_SIZE- Max queue sizeOTEL_BSP_MAX_EXPORT_BATCH_SIZE- Max batch sizeOTEL_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)
| File | Size | Uploaded | |
|---|---|---|---|
| fi_instrumentation_otel-1.1.0.tar.gz | 45.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|