Skip to main content

Releases & Versioning

还没翻译译自英文(langfuse.com)本页 43 段都还没译

You can track the effect of changes to your LLM app on metrics in Langfuse. This allows you to:

  • Run experiments (A/B tests) in production and measure the impact on costs, latencies and quality.
    • Example: "What is the impact of switching to a new model?"
  • Explain changes to metrics over time.
    • Example: "Why did latency in this chain increase?"

Releases vs versions

A release tracks the overall version of your application. Commonly it is set to the semantic version or git commit hash of your application.

The version parameter can be added to all observation types (e.g., span, generation, event, and other observation types). Thereby, you can track the effect of a new version on the metrics of an object with a specific name using Langfuse analytics.

ReleaseVersion
ScopeEntire applicationIndividual observations with a given name
Typical valueSemantic version or git commit hashComponent version, for example 1.0
When to useYou deployed a new application buildYou changed a specific prompt, chain, or generation
flowchart LR

    A1[LLM application<br/>release:v2.1.23]
    A2[LLM application<br/>release:v2.1.24]

    A1 --> A2
flowchart LR

    A1[Generation<br/>name:guess-countries<br/>version:1.0]
    A2[Generation<br/>name:guess-countries<br/>version:1.1]

    A1 --> A2

In Langfuse

Both values appear on traces and observations in Langfuse. Filter by them to isolate a deployment or a component change, compare costs, latencies, and quality across them in analytics, or use them to explain why a metric shifted after a change.

Release in Langfuse interface

Picture release in traces
table

Version parameter in Langfuse interface

Version on single generation

Set a release

The SDKs look for a release in the following order:

  1. SDK initialization
  2. Environment variable
  3. Automatically set release identifiers on popular deployment platforms

Initialization

Python SDKJS/TS SDKEnvironment variable

The Python SDK allows you to set the release when initializing the client:

from langfuse import Langfuse

# Set the release when initializing the client
langfuse = Langfuse(release="v2.1.24")

Automatically on popular platforms

If no other release is set, the Langfuse SDKs default to a set of known release environment variables.

Supported platforms include: Vercel, Heroku, Netlify. See the full list of support environment variables for JS/TS and Python.

Set a version

Python SDKJS/TS SDKLangchain (Python)Langchain (JS)

Set Version on all observations within a context:

from langfuse import observe, propagate_attributes

@observe()
def process_data():
    # Propagate version to all child observations
    with propagate_attributes(version="1.0"):
        # All nested operations automatically inherit version
        result = perform_processing()

        return result

When creating observations directly:

from langfuse import get_client, propagate_attributes

langfuse = get_client()

with langfuse.start_as_current_observation(as_type="span", name="process-data") as span:
    # Propagate version to all child observations
    with propagate_attributes(version="1.0"):
        # All observations created here automatically have version="1.0"
        with span.start_as_current_observation(
            as_type="generation",
            name="guess-countries",
            model="gpt-4o"
        ) as generation:
            # This generation automatically has version="1.0"
            pass

Version on a specific observation:

from langfuse import get_client

langfuse = get_client()

with langfuse.start_as_current_observation(as_type="span", name="process-data", version="1.0") as span:
    # This span has version="1.0"
    pass

Note on Attribute Propagation

We use Attribute Propagation to propagate version across all observations of a trace. We will use all observations with version to create version-level metrics. Please consider the following when using Attribute Propagation:

  • Values must be strings ≤200 characters
  • Call early in your trace to ensure all observations are covered. This way you make sure that all Metrics in Langfuse are accurate.
  • Invalid values are dropped with a warning

Learn more: Python SDK | TypeScript SDK