Sessions
Many interactions with LLM applications span multiple traces. Sessions
in Langfuse are a way to group these traces together and see a simple session replay of the entire interaction. Get started by adding a sessionId
when creating a trace.
Add a sessionId
when creating/updating a trace. This can be any string that you use to identify the session. All traces with the same sessionId
will be grouped together.
The v3 SDK is currently in beta. Please check out the SDK v3 for more details.
When using the @observe()
decorator:
from langfuse import observe, get_client
langfuse = get_client()
@observe()
def process_request():
# Add to the current trace
langfuse.update_current_trace(session_id="your-session-id")
# ...your processing logic...
return result
When creating spans directly:
from langfuse import Langfuse
langfuse = Langfuse()
# You can set the session_id when creating the root span
with langfuse.start_as_current_span(
name="process-chat-message"
) as root_span:
# Add session_id to the trace
root_span.update_trace(session_id="chat-session-123")
# All spans in this trace will belong to the same session
with root_span.start_as_current_generation(
name="generate-response",
model="gpt-4o"
) as gen:
# ...generate response...
pass
You can also update the session_id of the current trace without a direct reference to a span:
with langfuse.start_as_current_span(name="another-operation"):
# Add to the current trace
langfuse.update_current_trace(session_id="your-session-id")
Example
Try this feature using the public example project.
Example session spanning multiple traces
Other features
- Publish a session to share with others as a public link (example)
- Bookmark a session to easily find it later
- Annotate sessions by adding
scores
via the Langfuse UI to record human-in-the-loop evaluations