Files
comet-ml--opik/sdks/opik_optimizer/benchmarks/core/state.py
T
wehub-resource-sync 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
chore: import upstream snapshot with attribution
2026-07-13 13:25:44 +08:00

128 lines
4.1 KiB
Python

from __future__ import annotations
import json
import os
import time
from dataclasses import dataclass
from typing import Any, Literal
from benchmarks.core.types import TaskResult
from benchmarks.core.types import TaskSpec
from opik_optimizer import ChatPrompt
RunStatus = Literal["pending", "running", "succeeded", "failed"]
@dataclass
class TaskState:
task_id: str
status: RunStatus = "pending"
@dataclass
class RunState:
run_id: str
status: RunStatus = "pending"
completed: int = 0
failed: int = 0
total: int = 0
def mark_running(self) -> None:
self.status = "running"
def mark_task_success(self) -> None:
self.completed += 1
def mark_task_failure(self) -> None:
self.failed += 1
def finalize(self) -> None:
self.status = "failed" if self.failed > 0 else "succeeded"
class ChatPromptEncoder(json.JSONEncoder):
def default(self, obj: Any) -> Any:
if isinstance(obj, ChatPrompt):
return obj.to_dict()
return super().default(obj)
class BenchmarkCheckpointManager:
def __init__(
self,
checkpoint_folder: str,
run_id: str,
test_mode: bool,
demo_datasets: list[str],
optimizers: list[str],
models: list[str],
task_specs: list[TaskSpec],
):
self.checkpoint_timestamp = time.time()
self.checkpoint_folder = os.path.abspath(checkpoint_folder)
os.makedirs(self.checkpoint_folder, exist_ok=True)
self.run_id = run_id
self.checkpoint_file = os.path.join(self.checkpoint_folder, "checkpoint.json")
os.makedirs(os.path.dirname(self.checkpoint_file), exist_ok=True)
self.test_mode = test_mode
self.demo_datasets = demo_datasets
self.optimizers = optimizers
self.models = models
self.task_specs = task_specs
self.preflight_report: dict | None = None
self.task_results: list[TaskResult] = []
def save(self) -> None:
with open(self.checkpoint_file, "w") as f:
checkpoint_dict = {
"run_id": self.run_id,
"test_mode": self.test_mode,
"demo_datasets": self.demo_datasets,
"optimizers": self.optimizers,
"models": self.models,
"tasks": [spec.to_dict() for spec in self.task_specs],
"task_results": [x.model_dump() for x in self.task_results],
"preflight": self.preflight_report,
}
json.dump(checkpoint_dict, f, cls=ChatPromptEncoder, indent=3)
def load(self) -> None:
if not os.path.exists(self.checkpoint_file):
raise FileNotFoundError(
f"Checkpoint file {self.checkpoint_file} does not exist"
)
with open(self.checkpoint_file) as f:
checkpoint_data = json.load(f)
self.test_mode = checkpoint_data["test_mode"]
self.demo_datasets = checkpoint_data["demo_datasets"]
self.optimizers = checkpoint_data["optimizers"]
self.models = checkpoint_data["models"]
tasks_data = checkpoint_data.get("tasks")
if tasks_data:
self.task_specs = [TaskSpec.from_dict(task) for task in tasks_data]
else:
raise ValueError(
"Checkpoint file is missing the 'tasks' field. "
"This checkpoint format is not supported, please re-run the benchmark."
)
self.task_results = [
TaskResult.model_validate(x) for x in checkpoint_data["task_results"]
]
self.preflight_report = checkpoint_data.get("preflight")
def update_task_result(self, task_result: TaskResult) -> None:
if task_result.id in [x.id for x in self.task_results]:
self.task_results = [x for x in self.task_results if x.id != task_result.id]
self.task_results.append(task_result)
self.save()
def set_preflight_report(self, report: dict | None) -> None:
self.preflight_report = report
self.save()