Skip to content

Release Notes v0.5.0

Release Date: January 3, 2026

Overview

This release refactors the provider architecture so that LLM observability SDKs (Opik, Phoenix) own their own llmops adapters, rather than omniobserve importing them. This simplifies dependency management and allows each SDK to be updated independently.

Breaking Changes

Opik and Phoenix Adapters Moved to Standalone SDKs

The llmops adapters for Opik and Phoenix have been removed from omniobserve and moved to their respective SDK repositories:

Before (omniobserve v0.4.x) After (v0.5.0+)
import _ "github.com/plexusone/omniobserve/llmops/opik" import _ "github.com/agentplexus/go-opik/llmops"
import _ "github.com/plexusone/omniobserve/llmops/phoenix" import _ "github.com/agentplexus/go-phoenix/llmops"

The API remains identical - only the import paths change.

Phoenix SDK Removed

The embedded Phoenix SDK (sdk/phoenix/) has been removed. Use the standalone SDK instead:

// Before
import "github.com/plexusone/omniobserve/sdk/phoenix"

// After
import "github.com/agentplexus/go-phoenix"

New Features

AnnotationManager Interface

Added new AnnotationManager interface to the Provider for span/trace annotations:

  • CreateAnnotation(ctx, annotation) - Add annotations to spans or traces
  • ListAnnotations(ctx, opts) - Query annotations by span or trace IDs

Enhanced DatasetManager Interface

Added new methods to DatasetManager:

  • GetDatasetByID(ctx, id) - Retrieve datasets by ID (in addition to by name)
  • DeleteDataset(ctx, datasetID) - Delete datasets

Prompt Model/Provider Options

Added support for associating LLM model and provider with prompts:

  • WithPromptModel(model) - Set the LLM model name (e.g., "gpt-4")
  • WithPromptProvider(provider) - Set the LLM provider (e.g., "openai")
  • Prompt.ModelName and Prompt.ModelProvider fields

OmniLLM Hook Auto-Create Traces

The OmniLLM observability hook now automatically creates a trace when none exists in context. This ensures LLM calls are always properly traced even when called outside an existing trace context.

  • BeforeRequest creates a trace if TraceFromContext returns false
  • AfterResponse ends the trace (if created by the hook)
  • Streaming responses also properly end traces

Trace Context Helpers

Added trace context tracking functions to integrations/omnillm/:

  • contextWithTrace() - Store a trace in context
  • traceFromContext() - Retrieve a trace from context

These complement the existing span context functions.

Evaluation Metrics Package

Added new llmops/metrics package with common evaluation metrics:

LLM-based metrics (require omnillm client):

  • HallucinationMetric - Detects unsupported claims in responses
  • RelevanceMetric - Evaluates document relevance to queries
  • QACorrectnessMetric - Checks answer correctness against references
  • ToxicityMetric - Detects harmful content

Code-based metrics (run locally):

  • ExactMatchMetric - Exact string comparison with options for case sensitivity and whitespace trimming
  • RegexMetric - Regex pattern matching
  • ContainsMetric - Substring presence check

See examples/evaluation/ for a complete usage example.

Example usage:

import "github.com/plexusone/omniobserve/llmops/metrics"

// LLM-based metric
llm := metrics.NewLLM(omnillmClient, "gpt-4o")
hallucination := metrics.NewHallucinationMetric(llm)

// Code-based metric
exactMatch := metrics.NewExactMatchMetric()

Dependencies

Removed dependencies:

  • github.com/agentplexus/go-comet-ml-opik - No longer needed (adapter moved to go-opik)

Migration Guide

For Opik Users

Update your import:

// Before
import _ "github.com/plexusone/omniobserve/llmops/opik"

// After
import _ "github.com/agentplexus/go-opik/llmops"

For Phoenix Users

Update your imports:

// Before
import _ "github.com/plexusone/omniobserve/llmops/phoenix"
import "github.com/plexusone/omniobserve/sdk/phoenix"

// After
import _ "github.com/agentplexus/go-phoenix/llmops"
import "github.com/agentplexus/go-phoenix"

For Langfuse Users

No changes required. Langfuse adapter remains in omniobserve:

import _ "github.com/plexusone/omniobserve/llmops/langfuse"

Files Removed

  • llmops/opik/opik.go
  • llmops/opik/trace.go
  • llmops/phoenix/phoenix.go
  • llmops/phoenix/trace.go
  • sdk/phoenix/client.go
  • sdk/phoenix/context.go
  • sdk/phoenix/errors.go
  • sdk/phoenix/options.go
  • sdk/phoenix/span.go
  • sdk/phoenix/trace.go
  • sdk/phoenix/types.go

Files Modified

  • go.mod - Removed go-comet-ml-opik dependency
  • omniobserve.go - Updated documentation with new import paths
  • integrations/omnillm/context.go - Added trace context helpers