Basic Features
Releases & Versioning
12 min
you can track the effect of changes to your llm app on metrics in abv 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 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 sdks look for a release in the following order sdk initialization environment variable automatically on popular platforms sdk initialization environment variable the sdks will look for a abv release environment variable use it to configure the release e g in your ci/cd pipeline abv release = "\<release tag>" # < github sha or other identifier python sdk the python sdk allows you to set the release when initializing the client from abvdev import abv, get client \# set the release when initializing the client abv = abv(release="v2 1 24") client = get client() you can also update the trace's release after creation from abvdev import observe, get client @observe() def process data() \# get the client and update the current trace abv = get client() abv update current trace(release="v2 1 24") \# \# with context managers abv = get client() with abv start as current span(name="my operation") as span span update trace(release="v2 1 24") js/ts sdk the js/ts sdk will look for a abv release environment variable use it to configure the release e g in your ci/cd pipeline abv release = "\<release tag>" # < github sha or other identifier via environment variable the sdks will look for a abv release environment variable use it to configure the release e g in your ci/cd pipeline abv release = "\<release tag>" # < github sha or other identifier automatically on popular platforms if no other release is set, the abv 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 js/ts and python versions the version parameter can be added to traces and all observation types ( span , generation , event ) thereby, you can track the effect of a new version on the metrics of an object with a specific name using metrics overview docid\ zcjzsw5cyof b15rmjojl with python sdk when using the @observe() decorator from abvdev import observe, get client @observe() def process data() abv = get client() \# set version at trace level abv update current trace(version="1 0") \# set version at observation level abv update current span(version="1 0") when creating spans directly from abvdev import get client abv = get client() \# set version when creating a span with abv start as current span( name="process data", version="1 0" ) as span \# processing \# create a generation with version with span start as current generation( name="guess countries", model="gpt 4o", version="1 0" ) as generation \# generation code pass the version parameter can be included in both spans and generations, and can be set either during creation or updated later with js/ts sdk const generation = startobservation( "guess countries", { "version" "1 0" }, { astype "generation" } ); abv trace() , abv span() and abv event() also take an optional version parameter in ui version parameter in abv interface