Add attributes to a span
Attributes are key/value pairs that provide more information about the operation being traced. They help paint a complete picture of what’s happening in your application. To avoid naming conflicts with semantic conventions, it’s recommended to prefix your custom attributes with your company name (e.g., mycompany.).Leveraging Semantic Convention Attributes
Semantic Conventions provides a structured schema to represent common LLM application attributes. These are well known names for items like messages, prompt templates, metadata, and more. We’ve built a set of semantic conventions as part of the traceAI package. Defining attributes is vital for comprehending the data and message flow within your LLM application and helps in debugging and analysis. By defining attributes likeOUTPUT_VALUE
and OUTPUT_MESSAGES
, you can capture essential output information and interaction messages within a span’s context. This enables you to log the response and systematically categorize and store messages exchanged by components.
To use traceAI Semantic Attributes, ensure you have the appropriate FI Instrumentation Package installed:
Adding attributes to multiple spans at once
Our tracing system allows you to set attributes at the OpenTelemetry Context level, which automatically propagates to child spans within a parent trace. In OpenTelemetry, this is often achieved using Baggage. Attributes set in Baggage can be picked up by instrumentation (like traceAI’s auto-instrumentation) and added to spans. Key Context Attributes include:- Metadata: Metadata associated with a span.
- Tags: List of tags to give the span a category.
- Session ID: Unique identifier for a session.
- User ID: Unique identifier for a user.
- Prompt Template:
- Template: Used to generate prompts as Python f-strings.
- Version: The version of the prompt template.
- Variables: key-value pairs applied to the prompt template.
fi_instrumentation
. The Typescript examples use standard OpenTelemetry JS API (context
and propagation
for Baggage).
using_metadata
This context manager enriches the current OpenTelemetry Context with metadata. Our auto-instrumentators will apply this metadata as span attributes following traceAI semantic conventions. The metadata must be provided as a string-keyed dictionary, which will be JSON-serialized in the context.
Python
using_tags
Enhance spans with categorical information using this context manager. It adds tags to the OpenTelemetry Context, which our auto-instrumentators will apply following traceAI conventions. Tags must be provided as a list of strings.
using_session
Set a session identifier for all spans within the context. This is useful for grouping related operations under a common session.
Python
using_user
Set a user identifier for all spans within the context. This helps in tracking operations performed by specific users.
Python
using_prompt_template
This context manager is used to enrich spans with prompt template information. It’s particularly useful when you want to track how prompts are constructed and which variables are used.
Python