5a558eb09e
TypeScript SDK Compatibility V1.x E2E Tests / Select Node version matrix (push) Has been cancelled
TypeScript SDK Compatibility V1.x E2E Tests / TypeScript SDK Compatibility V1.x E2E Tests Node ${{matrix.node_version}} (push) Has been cancelled
TypeScript SDK E2E Tests / TypeScript SDK E2E Tests Node ${{matrix.node_version}} (push) Has been cancelled
Opik Optimizer - E2E Tests / build-opik (push) Has been cancelled
TypeScript SDK Compatibility V1.x E2E Tests / build-opik (push) Has been cancelled
Python SDK E2E Tests / Select Python version matrix (push) Has been cancelled
Python SDK E2E Tests / Python SDK E2E Tests ${{matrix.python_version}} (push) Has been cancelled
Python SDK E2E Tests / build-opik (push) Has been cancelled
Python SDK Compatibility V1.x E2E Tests / Select Python version matrix (push) Has been cancelled
Python SDK Compatibility V1.x E2E Tests / Python SDK Compatibility V1.x E2E Tests ${{matrix.python_version}} (push) Has been cancelled
Python SDK Compatibility V1.x E2E Tests / build-opik (push) Has been cancelled
TypeScript SDK E2E Tests / Select Node version matrix (push) Has been cancelled
TypeScript SDK E2E Tests / build-opik (push) Has been cancelled
Opik Optimizer - E2E Tests / Opik Optimizer E2E Tests Python ${{matrix.python_version}} (push) Has been cancelled
Opik Optimizer - E2E Tests / Opik Optimizer Integration Smoke Tests (push) Has been cancelled
🐙 Code Quality / detect (push) Has been cancelled
🐙 Code Quality / lint (${{ matrix.leg.name }}) (push) Has been cancelled
🐙 Code Quality / summary (push) Has been cancelled
TypeScript SDK Library Integration Tests / Check Secrets (push) Has been cancelled
TypeScript SDK Library Integration Tests / opik-vercel (Vercel AI SDK / eve) (push) Has been cancelled
SDK Library Integration Tests Runner / Check Secrets (push) Has been cancelled
SDK Library Integration Tests Runner / Missed OpenAI API Key Warning (push) Has been cancelled
SDK Library Integration Tests Runner / Build (push) Has been cancelled
SDK Library Integration Tests Runner / openai_tests (push) Has been cancelled
SDK Library Integration Tests Runner / langchain_tests (push) Has been cancelled
SDK Library Integration Tests Runner / langchain_legacy_tests (push) Has been cancelled
SDK Library Integration Tests Runner / llama_index_tests (push) Has been cancelled
SDK Library Integration Tests Runner / anthropic_tests (push) Has been cancelled
SDK Library Integration Tests Runner / mistral_tests (push) Has been cancelled
SDK Library Integration Tests Runner / groq_tests (push) Has been cancelled
SDK Library Integration Tests Runner / aisuite_tests (push) Has been cancelled
SDK Library Integration Tests Runner / haystack_tests (push) Has been cancelled
SDK Library Integration Tests Runner / dspy_tests (push) Has been cancelled
SDK Library Integration Tests Runner / crewai_v0_tests (push) Has been cancelled
SDK Library Integration Tests Runner / crewai_v1_tests (push) Has been cancelled
SDK Library Integration Tests Runner / genai_tests (push) Has been cancelled
SDK Library Integration Tests Runner / adk_tests (push) Has been cancelled
SDK Library Integration Tests Runner / adk_legacy_1_3_0_tests (push) Has been cancelled
SDK Library Integration Tests Runner / evaluation_metrics_tests (push) Has been cancelled
SDK Library Integration Tests Runner / bedrock_tests (push) Has been cancelled
SDK Library Integration Tests Runner / litellm_tests (push) Has been cancelled
SDK Library Integration Tests Runner / harbor_tests (push) Has been cancelled
SDK Library Integration Tests Runner / Slack Notification (push) Has been cancelled
Lint Opik Helm Chart / render-equality (push) Has been cancelled
Opik Optimizer - Unit Tests / Opik Optimizer Unit Tests Python ${{matrix.python_version}} (push) Has been cancelled
Python BE E2E Tests / Python BE E2E (push) Has been cancelled
Python Backend Tests / run-python-backend-tests (push) Has been cancelled
Python SDK Unit Tests / Python SDK Unit Tests ${{matrix.python_version}} (push) Has been cancelled
Release Drafter / update_release_draft (push) Has been cancelled
SDK E2E Libraries Integration Tests / Check Secrets (push) Has been cancelled
SDK E2E Libraries Integration Tests / Missed OpenAI API Key Warning (push) Has been cancelled
SDK E2E Libraries Integration Tests / build-opik (push) Has been cancelled
SDK E2E Libraries Integration Tests / E2E Lib Integration Python ${{matrix.python_version}} (push) Has been cancelled
TypeScript SDK Integration Build & Publish / build-and-publish (opik-gemini) (push) Has been cancelled
TypeScript SDK Integration Build & Publish / build-and-publish (opik-langchain) (push) Has been cancelled
TypeScript SDK Integration Build & Publish / build-and-publish (opik-openai) (push) Has been cancelled
TypeScript SDK Integration Build & Publish / build-and-publish (opik-otel) (push) Has been cancelled
TypeScript SDK Integration Build & Publish / build-and-publish (opik-vercel) (push) Has been cancelled
TypeScript SDK Build & Publish / build-and-publish (push) Has been cancelled
TypeScript SDK Unit Tests / Test on Node ${{ matrix.node-version }} (push) Has been cancelled
Backend Tests / discover-tests (push) Has been cancelled
Backend Tests / ${{ matrix.name }} (push) Has been cancelled
Build and Publish SDK / build-and-publish (push) Has been cancelled
Build Opik Docker Images / set-version (push) Has been cancelled
Build Opik Docker Images / build-backend (push) Has been cancelled
Build Opik Docker Images / build-sandbox-executor-python (push) Has been cancelled
Build Opik Docker Images / build-python-backend (push) Has been cancelled
Build Opik Docker Images / build-frontend (push) Has been cancelled
Build Opik Docker Images / create-git-tag (push) Has been cancelled
ClickHouse Migration Cluster Check / validate-clickhouse-migrations (push) Has been cancelled
Docs - Publish / run (push) Has been cancelled
E2E Tests - Post Merge (v2) / 🧪 E2E v2 Tests (${{ github.event.inputs.tier || 't1' }}) (push) Has been cancelled
E2E Tests - Post Merge (v2) / 📢 Slack Notification (push) Has been cancelled
Frontend Unit Tests / Test on Node 20 (push) Has been cancelled
Guardrails E2E Tests / Select Python version matrix (push) Has been cancelled
Guardrails E2E Tests / Guardrails E2E Tests ${{matrix.python_version}} (push) Has been cancelled
Guardrails E2E Tests / 📢 Slack Notification (push) Has been cancelled
Guardrails Backend Unit Tests / Guardrails Backend Unit Tests (push) Has been cancelled
Guardrails Backend Unit Tests / 📢 Slack Notification (push) Has been cancelled
Lint Opik Helm Chart / lint-helm-chart (Helm v3.21.0) (push) Has been cancelled
Lint Opik Helm Chart / lint-helm-chart (Helm v4.2.0) (push) Has been cancelled
Lint Opik Helm Chart / unittest-helm-chart (push) Has been cancelled
148 lines
3.9 KiB
ReStructuredText
148 lines
3.9 KiB
ReStructuredText
REST API Overview
|
|
=================
|
|
|
|
The Opik SDK provides direct access to the underlying REST API client through the ``rest_client`` property.
|
|
This allows advanced users to make direct API calls when needed, providing full access to all Opik platform functionality.
|
|
|
|
.. warning::
|
|
The REST client is not guaranteed to be backward compatible with future SDK versions.
|
|
While it provides a convenient way to use the current REST API of Opik,
|
|
it's not considered safe to heavily rely on its API as Opik's REST API contracts may change.
|
|
|
|
When to Use the REST API
|
|
------------------------
|
|
|
|
The REST API is useful when you need to:
|
|
|
|
* Perform operations not available in the high-level SDK
|
|
* Build custom integrations or tools
|
|
* Access advanced filtering or querying capabilities
|
|
* Implement batch operations for performance
|
|
* Work with raw API responses for specific use cases
|
|
|
|
Getting Started
|
|
---------------
|
|
|
|
To access the REST client, first create an Opik instance and then use the ``rest_client`` property:
|
|
|
|
.. code-block:: python
|
|
|
|
import opik
|
|
|
|
# Initialize Opik client
|
|
client = opik.Opik()
|
|
|
|
# Access REST API through the rest_client property
|
|
rest_client = client.rest_client
|
|
|
|
Basic Examples
|
|
--------------
|
|
|
|
Here are some common patterns for using the REST API:
|
|
|
|
**Working with Traces**
|
|
|
|
.. code-block:: python
|
|
|
|
# Get a specific trace
|
|
trace = client.rest_client.traces.get_trace_by_id("trace-id")
|
|
|
|
# Search for traces with filters
|
|
traces = client.rest_client.traces.search_traces(
|
|
project_name="my-project",
|
|
filters=[{
|
|
"field": "name",
|
|
"operator": "contains",
|
|
"value": "important"
|
|
}],
|
|
max_results=100
|
|
)
|
|
|
|
**Managing Datasets**
|
|
|
|
.. code-block:: python
|
|
|
|
# List all datasets
|
|
datasets = client.rest_client.datasets.find_datasets(
|
|
page=0,
|
|
size=20
|
|
)
|
|
|
|
# Create a new dataset
|
|
dataset = client.rest_client.datasets.create_dataset(
|
|
name="my-dataset",
|
|
description="A test dataset"
|
|
)
|
|
|
|
# Add items to the dataset
|
|
items = [
|
|
{
|
|
"input": {"question": "What is AI?"},
|
|
"expected_output": {"answer": "Artificial Intelligence"}
|
|
}
|
|
]
|
|
client.rest_client.datasets.create_or_update_dataset_items(
|
|
dataset_id=dataset.id,
|
|
items=items
|
|
)
|
|
|
|
**Running Experiments**
|
|
|
|
.. code-block:: python
|
|
|
|
# Create an experiment
|
|
experiment = client.rest_client.experiments.create_experiment(
|
|
name="my-experiment",
|
|
dataset_name="my-dataset"
|
|
)
|
|
|
|
# Add experiment results
|
|
client.rest_client.experiments.create_experiment_items(
|
|
experiment_id=experiment.id,
|
|
items=[{
|
|
"dataset_item_id": "item-id",
|
|
"trace_id": "trace-id",
|
|
"output": {"result": "success"}
|
|
}]
|
|
)
|
|
|
|
Response Types and Pagination
|
|
------------------------------
|
|
|
|
Most list operations return paginated results with a consistent structure:
|
|
|
|
.. code-block:: python
|
|
|
|
# Example paginated response structure
|
|
response = client.rest_client.datasets.find_datasets(page=0, size=10)
|
|
|
|
# Access the data
|
|
datasets = response.content # List of dataset objects
|
|
total_count = response.total # Total number of items
|
|
current_page = response.page # Current page number
|
|
page_size = response.size # Items per page
|
|
|
|
Error Handling
|
|
--------------
|
|
|
|
The REST API raises specific exceptions for different error conditions:
|
|
|
|
.. code-block:: python
|
|
|
|
from opik.rest_api.core.api_error import ApiError
|
|
|
|
try:
|
|
trace = client.rest_client.traces.get_trace_by_id("invalid-id")
|
|
except ApiError as e:
|
|
if e.status_code == 404:
|
|
print("Trace not found")
|
|
else:
|
|
print(f"API error: {e.status_code} - {e.body}")
|
|
|
|
Next Steps
|
|
----------
|
|
|
|
* Browse the :doc:`clients/index` for detailed API reference
|
|
* See :doc:`objects` for data type documentation
|
|
* Check the main SDK documentation for higher-level operations
|