> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://www.comet.com/docs/opik/llms.txt.

## Together AI Integration

Opik now has a native integration for the [Together AI](https://www.together.ai/) Python SDK. Wrap your client with `track_together` and every chat completion, from both `together.Together` and `together.AsyncTogether`, is logged with its messages, response, model and token usage. Streaming is supported, and calls nest correctly under `@track`-decorated functions, so Together models show up alongside the rest of your traces.

[Learn more in the Together AI integration docs](/integrations/together-ai).

## Open Spans from the Agent Graph

Nodes in the agent graph are now clickable. Selecting a node opens the matching span in the trace tree, and a node that ran several times opens the next run on each click, with the run number in its tooltip. The node of the selected span gets a highlighted border, and this works in both the side panel and the fullscreen graph view. Graphs from LangGraph map nodes to spans automatically, and the DSPy and Google ADK integrations now record a `graph_node_id` in span metadata so their nodes map correctly too, including modules that share a name.

## Bug Fixes & Improvements

* **Prompt saves don't duplicate versions** — Saving a prompt whose content is unchanged returns the latest version instead of creating an identical one.
* **Playground model pickers list runnable models** — Anthropic, Gemini and Vertex AI models that the Playground can't run are no longer offered.
* **Clearer provider errors** — When OpenRouter relays an upstream failure, the message now shows the provider's own reason. Gemini no longer receives a max output tokens value of 0.
* **Loading prompts with media** — Loading a prompt that contains images, video or audio into a system or assistant message keeps its text and shows a toast explaining that media wasn't loaded.
* **Project metrics default to time-based aggregation** — New project metrics widgets with a breakdown start in Time-based mode, and changing the group-by field keeps your chosen mode.
* **Consistent terminology** — Experiments and Optimizations pages name the item source as Test suite or Dataset, and say "Item source" where either applies.
* **More accurate span costs** — Spans are priced from each provider's own usage format, and providers in the LiteLLM price file are all priced.
* **Google ADK tracing** — Agent spans opened with `start_span` are tracked on google-adk 2.12.0.
* **Agent Insights first runs** — Automatic first runs that stop reporting time out and are retried.
* **Self-hosting** — The Helm chart has an opt-in `alerts.awsEventBridge` block for sending alerts to AWS EventBridge, ClickHouse force-merge settings are opt-in, and docker-compose re-owns root-owned MinIO volumes instead of asking you to delete data.
* **Documentation** — First-run snippets, doc examples and screenshots have been corrected and refreshed.

## Performance Improvements

* **Faster span reads** — Trace-keyed span reads are bounded by the `span_weeks` index, and span list, stream and stats queries run on the shard directly.
* **Faster prompt lookups** — A prompt's latest version is found via `MAX(id)`, served from the index.

---

And much more! 👉 [See full commit log on GitHub](https://github.com/comet-ml/opik/compare/2.2.96...2.2.103)

*Releases*: `2.2.97`, `2.2.98`, `2.2.99`, `2.2.100`, `2.2.101`, `2.2.102`, `2.2.103`