Documentation Index
Fetch the complete documentation index at: https://handbook.fiddler.ai/llms.txt
Use this file to discover all available pages before exploring further.
Deprecation notices
Re-exported fiddler-otel symbols
Importing core fiddler-otel symbols directly from fiddler_langgraph is deprecated and will be removed in a future major release. This affects the following imports:
fiddler_otel directly:
LangGraphInstrumentor, add_session_attributes, add_span_attributes, and set_llm_context remain in fiddler_langgraph and are not affected.
1.4
-
Breaking Changes
-
Module restructure —
fiddler_langgraph.tracingremoved and instrumentor class renamed: The internaltracingsub-package has been removed and the instrumentor class has been renamed fromFiddlerLangChainInstrumentortoLangGraphInstrumentor. All existing code using the old import path must be updated. Old import (1.4.1 and earlier):New import (1.4.2+):Migration: Update the import path and renameFiddlerLangChainInstrumentortoLangGraphInstrumentor. The constructor signature and all methods (instrument(),uninstrument()) are identical — no other code changes required. Impact: Upgrading to 1.4.2 without updating the import raisesModuleNotFoundError: No module named 'fiddler_langgraph.tracing'. If you cannot upgrade immediately, pin tofiddler-langgraph==1.4.1. -
Other functions relocated from
fiddler_langgraph.tracing.instrumentation: The following utility functions were also in the removedtracingsub-package. They are now importable directly fromfiddler_langgraph:Impact: Any of these imports using theFunction Old import (1.4.1 and earlier) New import (1.4.2+) add_session_attributesfrom fiddler_langgraph.tracing.instrumentation import add_session_attributesfrom fiddler_langgraph import add_session_attributesadd_span_attributesfrom fiddler_langgraph.tracing.instrumentation import add_span_attributesfrom fiddler_langgraph import add_span_attributesset_llm_contextfrom fiddler_langgraph.tracing.instrumentation import set_llm_contextfrom fiddler_langgraph import set_llm_contextset_conversation_idfrom fiddler_langgraph.tracing.instrumentation import set_conversation_idfrom fiddler_otel import set_conversation_idfiddler_langgraph.tracing.instrumentationpath will raiseModuleNotFoundError: No module named 'fiddler_langgraph.tracing'when upgrading to 1.4.2. -
is_fiddler_spanutility relocated tofiddler_otel.utils: Theis_fiddler_span()function has moved fromfiddler_langgraph.core.utilstofiddler_otel.utils. Update the import if you are using this utility directly. Old import (1.4.1 and earlier):New import (1.4.2+):Impact: Upgrading to 1.4.2 without updating the import raisesModuleNotFoundError: No module named 'fiddler_langgraph.core'.
-
Module restructure —
-
New features (via
fiddler-otel 1.1.0)-
Offline / S3 routing mode:
FiddlerClientnow accepts two new parameters for writing traces to local files instead of sending them directly to Fiddler. This enables deployments where security or network policies require data to pass through a controlled intermediary (such as Amazon S3) before reaching Fiddler.Parameter Type Default Description otlp_enabledboolTrueSet to Falseto disable direct OTLP export.api_keyandurlare not required whenFalse.otlp_json_capture_enabledboolFalseWhen True, writes traces to local.jsonfiles in standard OTLP JSON format (ExportTraceServiceRequestenvelope) compatible with the Fiddler S3 connector.otlp_json_output_dirstr'fiddler_traces'Output directory for OTLP JSON files. Created automatically if it does not exist. Each span batch is written to a separate timestamped file. See Offline / S3 Routing Mode in the integration guide for full details.
-
Offline / S3 routing mode:
-
Documentation
- Updated the LangGraph SDK integration guide to use
LangGraphInstrumentorthroughout — all code examples, quick start, configuration, and troubleshooting sections now reflect the new import path.
- Updated the LangGraph SDK integration guide to use
- Bug Fixes
- Fixed
set_conversation_id()ignored after first LangGraph invocation: When usingLangGraphInstrumentor, callingset_conversation_id()between agent invocations had no effect — every span after the first run carried the conversation ID from the initial call. The root cause was a@cached_propertyon the internal_CallbackHandlerthat read the conversation ID contextvar once on first access and froze that value for the lifetime of the_CallbackHandlerinstance. The cached property has been replaced with a direct contextvar read on every span, matching the behaviour ofFiddlerSpanProcessor.set_conversation_id()now takes effect immediately for all subsequent invocations.
- Fixed
- Added
- Decorator-based instrumentation: New
@trace()decorator for automatic function instrumentation.@trace()decorator for instrumenting any Python function with minimal boilerplate.get_current_span()to access the current span inside decorated functions.- Support for span types:
span,generation,chain,tool, with type-specific wrappers and helpers (e.g.set_user_prompt(),set_tool_input()). - Automatic parent-child relationship from call stack.
- Decorator arguments for metadata:
model,system,user_id,version. capture_inputandcapture_outputarguments for controlling automatic argument/return value capture.- Automatic async function detection —
@trace()works with both sync and async functions.
- Manual instrumentation: Context managers and explicit control.
client.start_as_current_span(name, as_type=...)for context-manager usage with automatic lifecycle and exception recording.client.start_span(name, as_type=...)for explicit control; caller must callspan.end().- Support for all span types with both patterns.
- Span wrapper classes: Typed wrappers with semantic convention helpers.
FiddlerSpan(base),FiddlerGeneration,FiddlerChain,FiddlerTool— returned bystart_as_current_span(),start_span(), andget_current_span().FiddlerGenerationhelpers:set_model(),set_system(),set_user_prompt(),set_completion(),set_usage(),set_messages(),set_output_messages(),set_tool_definitions().FiddlerToolhelpers:set_tool_name(),set_tool_input(),set_tool_output().- Common helpers on all wrappers:
set_input(),set_output(),set_attribute(),set_agent_name(),set_conversation_id().
- Global client accessor:
get_client()retrieves the activeFiddlerClientsingleton for use in decorators and utility functions. - Context isolation: Isolation from other OpenTelemetry tracers.
- Each
FiddlerClientuses its own isolatedContext. is_fiddler_span()utility to verify span ownership.
- Each
- Decorator-based instrumentation: New
- Enhancements
- Automatic Span Flush on Exit:
FiddlerClientnow registers anatexithandler to automatically flush and shut down the tracer provider when the process exits, reducing span loss from in-memory buffering. - Explicit Flush and Shutdown Methods: New
force_flush(timeout_millis)andshutdown()methods onFiddlerClientfor explicit control over span export.shutdown()is idempotent and safe to call multiple times. - Asyncio Support: New
aflush()andashutdown()async methods run flush and shutdown in a thread pool, avoiding event loop blocking in asyncio applications. - Context Manager Support:
FiddlerClientcan now be used as a context manager (with FiddlerClient(...) as client:) to ensure automatic shutdown on exit.
- Automatic Span Flush on Exit:
- Bug Fixes
- Fixed Pydantic Double-Encoding: Corrected JSON serialization of Pydantic models to use
model_dump()instead ofmodel_dump_json(), preventing double-encoded JSON strings in span attributes. - Deduplicated Retriever Span Attributes: Removed duplicate
TYPEandTOOL_NAMEattribute assignments in theon_retriever_startcallback. - Replaced
print()withlogging: Allprint()calls injsonl_capture.pynow use the standardloggingmodule for proper log management.
- Fixed Pydantic Double-Encoding: Corrected JSON serialization of Pydantic models to use
- Enhancements
- OpenTelemetry Version Upgrade: Updated OpenTelemetry dependencies to version 1.39.1/0.60b1 for improved performance and compatibility:
opentelemetry-api: now supports up to 1.39.1opentelemetry-sdk: now supports up to 1.39.1opentelemetry-instrumentation: now supports up to 0.60b1opentelemetry-exporter-otlp-proto-http: now supports up to 1.39.1
- OpenTelemetry Version Upgrade: Updated OpenTelemetry dependencies to version 1.39.1/0.60b1 for improved performance and compatibility:
- Enhancements
- Removed Hardcoded OpenTelemetry Limits: Removed hardcoded default values for span limits and batch span processor configuration. The SDK now relies on OpenTelemetry SDK’s built-in defaults, simplifying configuration and ensuring consistency with standard OpenTelemetry defaults.
- Enhanced LangGraph Tracing with Full Message History: Introduced comprehensive message lifecycle tracking with two new span attributes:
gen_ai.input.messages: Captures the complete message history provided as input to the LLM, including system, user, assistant, and tool messagesgen_ai.output.messages: Captures the output messages generated by the LLM, including tool calls and finish_reason when available- Both attributes are aligned with GenAI semantic conventions for standardized observability
- Extracted Message History from Strands Span Events: Added support for extracting
gen_ai.input.messagesandgen_ai.output.messagesfrom Strands span events (emitted as events rather than attributes) and storing them as span-level attributes in ClickHouse for unified querying and analysis.
- Breaking Changes
- Moved
add_session_attributesto Tracing Module: Theadd_session_attributes()method has been relocated from the Core module to the Tracing module to co-locate session management functions with related tracing utilities.- Old import:
from fiddler_langgraph.core.attributes import add_session_attributes - New import:
from fiddler_langgraph.tracing.instrumentation import add_session_attributes - Migration: Update import statements in your code. No functional changes—all behavior remains identical.
- Impact: Existing code using the old import path will fail with ImportError
- Old import:
- Moved
Initial release of Fiddler LangGraph SDK.