pypi / opik
opik
What changed in opik 1 to 2, from its official release notes, upgrade guides and advisories. Sources checked 2026-11-12.
7 breaking1 security21 new APIs and options2 performance16 behavior and defaults43 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli initopik 284 changes
Breaking changes 7
ChatPrompt() now uses the default project.
Free-form SQL bytes read are capped, and ClickHouse TOO_MANY_BYTES errors are mapped to a clean 400 response.
Prompt() now uses the default project.
A non-object LLMJudge verdict is now treated as a parse failure.
Project names over 150 characters are now rejected.
Gemini 4 Argon's maximum output tokens are capped at Google's limit of 32,768.
The process now exits with a non-zero status when a database migration fails.
Security 1
Provider header values are kept out of logs.
New APIs and options 17
Experiments can now be filtered by evaluation method.
Online-eval Decision rules can be scored with gpt-6-luna through OpenAI's Decisions API.
An organization context with a default organization is added.
Service account token authentication is added, with tokens returned in plain text.
Any LLM span can now be opened in the playground.
Experiment items can be queried across all experiments belonging to a dataset.
Gemini and Vertex AI are available on the catalog settings panel.
Bedrock providers can call Claude through Anthropic Messages and Nova through Converse.
Traces and threads can be filtered by comments.
Search is available within a thread in the thread side panel.
Adds session analysis item tables for two-lane analysis.
The playground adds a blank prompt variant.
The playground supports loading and saving Text/Chat prompts.
Opt-in network isolation is added for the executor.
A PostHog-driven announcement banner was added for Comet Cloud.
EvaluationSuiteResult gains toDict() to convert results to a dictionary.
EvaluationSuiteResult gains toReportDict() to convert results to a report dictionary.
Performance 2
Default-sorted experiment item compare pages are late-materialized for improved performance.
Thread reads limit trace loads to the weeks containing their traces.
Behavior and default changes 15
Recursive fsGroup chown is skipped on ClickHouse volumes.
Online-evaluation monitoring traces are now always persisted.
The agentic judge submits its verdict through a tool.
evaluate_threads can evaluate more than 1000 threads.
Organizations with an expired Pro trial are shown a banner.
The model prices file was updated, which may affect pricing information used by Opik.
The annotator view card and preview are simplified.
LLM clients can fail over to the next address without replaying requests.
The same Ollie chat can be continued.
Online-eval rules can pick the OpenAI and OpenRouter reasoning effort.
Pricing now covers 1-hour cache writes on every provider.
Streams can wait for headers up to the stream read timeout.
Users who must verify their email are sent to Comet's verification page.
The shared Responses API transport stays open.
The playground lets users duplicate any prompt variant.
Fixes and other changes 42
Skipped llm_unit tests are no longer logged as failed by the pytest plugin.
The SDK reports traces it drops at shutdown, on 429 responses, and on queue overflow.
A thread page's messages are read from its first and last traces only.
The dedup cache is re-synced after a dataset insert fails.
Keeps "<<" quoted in YAML output.
Normalizes drifted judge verdicts and escapes quotes in the evaluate_threads filter.
The export CLI reports failed trace exports.
Upper-case model names are priced like lower-case names, so model pricing no longer depends on letter casing.
An OTel batch is kept when its top-level spans belong to an existing trace.
Equals compares dictionaries, lists, and sets by content.
Failed judge scores are rejected in jury consensus.
Judges on gpt-6 and Claude 4.7+/5.x stop sending refused sampling parameters.
Removing an Ollie iframe no longer crashes the page while reading setItem.
Tool calls are retained in LiteLLM traces when streamed.
Readability scoring restores textstat's language after calculating scores.
A dataset run with several prompts into a new project no longer fails with “Project already exists”.
Deadlocks are retried when creating a dataset's first version.
User fields named end_time remain unchanged on replay.
A zero flush timeout is treated as an expired budget.
User fields named last_updated_at remain unchanged on replay.
Traces from run_simulation are logged to the given project_name.
Support for span cost breakdowns is fixed.
User fields named start_time remain unchanged on replay.
Task-span metrics that re-scoring cannot score are reported.
The TypeScript LLM-judge parser accepts repeated identical JSON objects.
Thread search picks threads and keeps all their traces.
On google-adk 2.13.0, the root ADK agent is kept as the trace.
The live check skips retired and unpickable models.
Responses-only OpenAI models are supported.
Thread attachments now scroll together with messages in the thread sidebar.
ClickHouse backup imagePullSecrets are now placed on the pod spec.
The SDK safely handles unsupported numeric LLMJudge assertions.
A blank OPIK_API_KEY is treated as unconfigured.
A model switch now reads the effort levels shown in the panel.
Pricing now covers every prompt-size tier.
Provider error bodies are kept out of retry and error logs.
Retries are limited to transient provider failures.
OpenAI errors with extra fields are parsed.
Optimizations are paginated before aggregation.
Provider custom headers are validated like they are on the backend.
Span retries no longer pin span payloads.
Studio LLM calls are pinned to the gateway.
opik 16 changes
New APIs and options 4
The traces table gains CSV export.
Custom field filters are supported, allowing developers to filter using custom fields.
Experiment comparison gains a feedback scores tab.
Opik adds a watsonx integration, allowing developers to use watsonx with Opik.
Behavior and default changes 1
Datasets support a flexible items format, allowing developers to provide dataset items in more than one format.
Fixes and other changes 1
The columns field now always returns all dataset data columns.