comet-ml--opik
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
519 行
16 KiB
Python
519 行
16 KiB
Python
"""Central registry of datasets, optimizers, models, and initial prompts.
|
|
|
|
Both the local runner and Modal worker import this module to discover which
|
|
datasets are available, which metrics they should be evaluated with, the
|
|
default optimizer classes/parameters, and the rollout budgets.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import Any
|
|
from collections.abc import Callable
|
|
|
|
from opik.evaluation.metrics import (
|
|
AnswerRelevance,
|
|
ContextPrecision,
|
|
ContextRecall,
|
|
Equals,
|
|
Hallucination,
|
|
LevenshteinRatio,
|
|
)
|
|
from opik.evaluation.metrics.score_result import ScoreResult
|
|
from pydantic import BaseModel
|
|
|
|
from benchmarks.packages.hotpot import metrics as hotpot
|
|
from benchmarks.packages.hover import metrics as hover
|
|
from benchmarks.packages.ifbench import metrics as ifbench
|
|
from benchmarks.packages.ifbench.package import IfbenchPackage
|
|
from benchmarks.packages.hotpot.package import HotpotPackage
|
|
from benchmarks.packages.hover.package import HoverPackage
|
|
from benchmarks.packages.package import BenchmarkPackage, PackageResolution
|
|
from benchmarks.packages.pupa import metrics as pupa
|
|
from benchmarks.packages.pupa.package import PupaPackage
|
|
|
|
|
|
class BenchmarkDatasetConfig(BaseModel):
|
|
model_config = {"arbitrary_types_allowed": True}
|
|
|
|
name: str
|
|
display_name: str
|
|
metrics: list[Callable]
|
|
rollout_budget: int | None = None
|
|
train_rollout_budget: int | None = None
|
|
# If True, this dataset uses a custom agent (handled in task_runner)
|
|
uses_agent: bool = False
|
|
|
|
|
|
class BenchmarkProjectConfig(BaseModel):
|
|
name: str
|
|
workspace: str
|
|
test_mode: bool
|
|
|
|
|
|
class BenchmarkOptimizerConfig(BaseModel):
|
|
class_name: str
|
|
params: dict[str, Any]
|
|
optimizer_prompt_params: dict[str, Any] = {}
|
|
|
|
|
|
class BenchmarkExperimentConfig(BaseModel):
|
|
dataset_name: str
|
|
optimizer: str
|
|
model_name: str
|
|
timestamp: str
|
|
test_mode: bool
|
|
environment: dict[str, Any]
|
|
parameters: dict[str, Any]
|
|
metrics: list[str]
|
|
|
|
|
|
def create_levenshtein_ratio_metric(reference_col: str) -> Callable:
|
|
def levenshtein_ratio(dataset_item: dict[str, Any], llm_output: str) -> ScoreResult:
|
|
result = LevenshteinRatio().score(
|
|
reference=dataset_item[reference_col], output=llm_output
|
|
)
|
|
return ScoreResult(
|
|
name="levenshtein_ratio",
|
|
value=result.value,
|
|
reason=f"Compared `{dataset_item[reference_col]}` and `{llm_output}` and got `{result.value}`.",
|
|
)
|
|
|
|
return levenshtein_ratio
|
|
|
|
|
|
def equals(dataset_item: dict[str, Any], llm_output: str) -> ScoreResult:
|
|
result = Equals().score(reference=dataset_item["answer"], output=llm_output)
|
|
if result.value == 1:
|
|
return ScoreResult(name="equals", value=1, reason="The answer is correct.")
|
|
else:
|
|
return ScoreResult(
|
|
name="equals",
|
|
value=0,
|
|
reason=f"The LLM output is not equal to the answer. Expected `{dataset_item['answer']}` but got `{llm_output}`.",
|
|
)
|
|
|
|
|
|
def create_answer_relevance_metric(name_input_col: str) -> Callable:
|
|
def answer_relevance(dataset_item: dict[str, Any], llm_output: str) -> ScoreResult:
|
|
return AnswerRelevance(require_context=False).score(
|
|
input=dataset_item[name_input_col], output=llm_output
|
|
)
|
|
|
|
return answer_relevance
|
|
|
|
|
|
def create_context_precision(
|
|
name_input_col: str, expected_output_col: str, context_col: str
|
|
) -> Callable:
|
|
def context_precision(dataset_item: dict[str, Any], llm_output: str) -> ScoreResult:
|
|
return ContextPrecision().score(
|
|
input=dataset_item[name_input_col],
|
|
output=llm_output,
|
|
expected_output=dataset_item[expected_output_col],
|
|
context=[dataset_item[context_col]],
|
|
)
|
|
|
|
return context_precision
|
|
|
|
|
|
def create_context_recall(
|
|
name_input_col: str, expected_output_col: str, context_col: str
|
|
) -> Callable:
|
|
def context_recall(dataset_item: dict[str, Any], llm_output: str) -> ScoreResult:
|
|
return ContextRecall().score(
|
|
input=dataset_item[name_input_col],
|
|
output=llm_output,
|
|
expected_output=dataset_item[expected_output_col],
|
|
context=[dataset_item[context_col]],
|
|
)
|
|
|
|
return context_recall
|
|
|
|
|
|
def hallucination(dataset_item: dict[str, Any], llm_output: str) -> ScoreResult:
|
|
return Hallucination().score(input=dataset_item["question"], output=llm_output)
|
|
|
|
|
|
_HOT_POT_METRICS = [hotpot.hotpot_exact_match, hotpot.hotpot_f1]
|
|
_HOVER_METRICS = [hover.hover_label_accuracy, hover.hover_judge_feedback]
|
|
_IFBENCH_METRICS = [ifbench.ifbench_compliance_judge]
|
|
_PUPA_METRICS = [pupa.pupa_quality_judge, pupa.pupa_leakage_ratio]
|
|
|
|
|
|
DATASET_CONFIG = {
|
|
# TODO: derive this entire structure from metadata defined alongside
|
|
# dataset helpers (names, default metrics, rollout budgets, seed counts,
|
|
# initial prompts, etc.) so the configuration is single-sourced.
|
|
"gsm8k": BenchmarkDatasetConfig(
|
|
name="gsm8k",
|
|
display_name="GSM8K",
|
|
metrics=[create_levenshtein_ratio_metric("answer")],
|
|
),
|
|
"ragbench_sentence_relevance": BenchmarkDatasetConfig(
|
|
name="ragbench_sentence_relevance",
|
|
display_name="RAGBench Sentence Relevance",
|
|
metrics=[create_answer_relevance_metric("question")],
|
|
),
|
|
"election_questions": BenchmarkDatasetConfig(
|
|
name="election_questions",
|
|
display_name="Election Questions",
|
|
metrics=[hallucination],
|
|
),
|
|
"medhallu": BenchmarkDatasetConfig(
|
|
name="MedHallu",
|
|
display_name="MedHallu",
|
|
# metrics=[hallucination, create_answer_relevance_metric("question")],
|
|
metrics=[create_answer_relevance_metric("question")],
|
|
),
|
|
"rag_hallucinations": BenchmarkDatasetConfig(
|
|
name="rag_hallucinations",
|
|
display_name="RAG Hallucinations",
|
|
metrics=[
|
|
hallucination,
|
|
create_context_precision("question", "answer", "context"),
|
|
],
|
|
),
|
|
"ai2_arc": BenchmarkDatasetConfig(
|
|
name="ai2_arc", display_name="ARC", metrics=[equals]
|
|
),
|
|
"truthful_qa": BenchmarkDatasetConfig(
|
|
name="TruthfulQA",
|
|
display_name="TruthfulQA",
|
|
metrics=[hallucination, create_answer_relevance_metric("question")],
|
|
),
|
|
"cnn_dailymail": BenchmarkDatasetConfig(
|
|
name="cnn_dailymail",
|
|
display_name="CNN/Daily Mail",
|
|
metrics=[create_levenshtein_ratio_metric("highlights")],
|
|
),
|
|
"tiny_test": BenchmarkDatasetConfig(
|
|
name="tiny_test",
|
|
display_name="Tiny Test",
|
|
metrics=[create_levenshtein_ratio_metric("label")],
|
|
),
|
|
"hotpot_train": BenchmarkDatasetConfig(
|
|
name="hotpot_train",
|
|
display_name="HotpotQA Train",
|
|
metrics=_HOT_POT_METRICS,
|
|
rollout_budget=6438,
|
|
train_rollout_budget=737,
|
|
uses_agent=True,
|
|
),
|
|
"hotpot_validation": BenchmarkDatasetConfig(
|
|
name="hotpot_validation",
|
|
display_name="HotpotQA Validation",
|
|
metrics=_HOT_POT_METRICS,
|
|
rollout_budget=6438,
|
|
train_rollout_budget=737,
|
|
uses_agent=True,
|
|
),
|
|
"hotpot_test": BenchmarkDatasetConfig(
|
|
name="hotpot_test",
|
|
display_name="HotpotQA Test",
|
|
metrics=_HOT_POT_METRICS,
|
|
rollout_budget=6438,
|
|
train_rollout_budget=737,
|
|
uses_agent=True,
|
|
),
|
|
"hover_train": BenchmarkDatasetConfig(
|
|
name="hover_train",
|
|
display_name="HoVer Train",
|
|
metrics=_HOVER_METRICS,
|
|
rollout_budget=6858,
|
|
train_rollout_budget=558,
|
|
),
|
|
"hover_validation": BenchmarkDatasetConfig(
|
|
name="hover_validation",
|
|
display_name="HoVer Validation",
|
|
metrics=_HOVER_METRICS,
|
|
rollout_budget=6858,
|
|
train_rollout_budget=558,
|
|
),
|
|
"hover_test": BenchmarkDatasetConfig(
|
|
name="hover_test",
|
|
display_name="HoVer Test",
|
|
metrics=_HOVER_METRICS,
|
|
rollout_budget=6858,
|
|
train_rollout_budget=558,
|
|
),
|
|
"ifbench_train": BenchmarkDatasetConfig(
|
|
name="ifbench_train",
|
|
display_name="IFBench Train",
|
|
metrics=_IFBENCH_METRICS,
|
|
rollout_budget=678,
|
|
train_rollout_budget=79,
|
|
),
|
|
"ifbench_validation": BenchmarkDatasetConfig(
|
|
name="ifbench_validation",
|
|
display_name="IFBench Validation",
|
|
metrics=_IFBENCH_METRICS,
|
|
rollout_budget=678,
|
|
train_rollout_budget=79,
|
|
),
|
|
"ifbench_test": BenchmarkDatasetConfig(
|
|
name="ifbench_test",
|
|
display_name="IFBench Test",
|
|
metrics=_IFBENCH_METRICS,
|
|
rollout_budget=678,
|
|
train_rollout_budget=79,
|
|
),
|
|
"pupa_train": BenchmarkDatasetConfig(
|
|
name="pupa_train",
|
|
display_name="PUPA Train",
|
|
metrics=_PUPA_METRICS,
|
|
rollout_budget=2157,
|
|
train_rollout_budget=269,
|
|
),
|
|
"pupa_validation": BenchmarkDatasetConfig(
|
|
name="pupa_validation",
|
|
display_name="PUPA Validation",
|
|
metrics=_PUPA_METRICS,
|
|
rollout_budget=2157,
|
|
train_rollout_budget=269,
|
|
),
|
|
"pupa_test": BenchmarkDatasetConfig(
|
|
name="pupa_test",
|
|
display_name="PUPA Test",
|
|
metrics=_PUPA_METRICS,
|
|
rollout_budget=2157,
|
|
train_rollout_budget=269,
|
|
),
|
|
}
|
|
|
|
OPTIMIZER_CONFIGS: dict[str, BenchmarkOptimizerConfig] = {
|
|
"few_shot": BenchmarkOptimizerConfig(
|
|
class_name="FewShotBayesianOptimizer",
|
|
params={
|
|
"min_examples": 2,
|
|
"max_examples": 7,
|
|
"n_threads": 4,
|
|
"seed": 42,
|
|
},
|
|
optimizer_prompt_params={
|
|
"max_trials": 30,
|
|
"n_samples": 100,
|
|
},
|
|
),
|
|
"gepa": BenchmarkOptimizerConfig(
|
|
class_name="GepaOptimizer",
|
|
params={
|
|
"n_threads": 4,
|
|
"verbose": 1,
|
|
"seed": 42,
|
|
},
|
|
optimizer_prompt_params={
|
|
"max_trials": 30,
|
|
"n_samples": 3,
|
|
"reflection_minibatch_size": 3,
|
|
"candidate_selection_strategy": "pareto",
|
|
"skip_perfect_score": True,
|
|
},
|
|
),
|
|
"meta_prompt": BenchmarkOptimizerConfig(
|
|
class_name="MetaPromptOptimizer",
|
|
params={
|
|
"prompts_per_round": 4,
|
|
"enable_context": True,
|
|
"n_threads": 5,
|
|
"seed": 42,
|
|
"model_parameters": {
|
|
"temperature": 0.1,
|
|
"max_completion_tokens": 9000,
|
|
},
|
|
},
|
|
optimizer_prompt_params={
|
|
"max_trials": 30,
|
|
},
|
|
),
|
|
"evolutionary_optimizer": BenchmarkOptimizerConfig(
|
|
class_name="EvolutionaryOptimizer",
|
|
params={
|
|
"mutation_rate": 0.2,
|
|
"crossover_rate": 0.8,
|
|
"tournament_size": 4,
|
|
"n_threads": 4,
|
|
"elitism_size": 2,
|
|
"adaptive_mutation": True,
|
|
"enable_moo": False,
|
|
"enable_llm_crossover": False,
|
|
"seed": 42,
|
|
"infer_output_style": True,
|
|
},
|
|
optimizer_prompt_params={
|
|
"max_trials": 30,
|
|
"population_size": 10,
|
|
"num_generations": 4,
|
|
},
|
|
),
|
|
"hierarchical_reflective": BenchmarkOptimizerConfig(
|
|
class_name="HRPO", # Alias for HierarchicalReflectiveOptimizer
|
|
params={
|
|
"n_threads": 4,
|
|
"max_parallel_batches": 5,
|
|
"batch_size": 25,
|
|
"convergence_threshold": 0.01,
|
|
"seed": 42,
|
|
},
|
|
optimizer_prompt_params={
|
|
"max_trials": 30,
|
|
},
|
|
),
|
|
"parameter": BenchmarkOptimizerConfig(
|
|
class_name="ParameterOptimizer",
|
|
params={
|
|
"n_threads": 4,
|
|
"seed": 42,
|
|
},
|
|
optimizer_prompt_params={
|
|
"max_trials": 30,
|
|
},
|
|
),
|
|
}
|
|
|
|
MODELS = [
|
|
# Standard models
|
|
# "openai/gpt-4.1-2025-04-14",
|
|
"openai/gpt-4o-mini",
|
|
# "anthropic/claude-3-5-sonnet-20241022",
|
|
# "openrouter/google/gemini-2.5-flash-preview",
|
|
# # Reasoning models
|
|
# "openai/o3-2025-04-16",
|
|
# "anthropic/claude-3-7-sonnet-20250219",
|
|
# "openrouter/google/gemini-2.5-pro-preview",
|
|
]
|
|
|
|
INITIAL_PROMPTS = {
|
|
"gsm8k": [
|
|
{"role": "system", "content": "Solve the following math problem step by step."},
|
|
{"role": "user", "content": "{question}"},
|
|
],
|
|
"ragbench_sentence_relevance": [
|
|
{
|
|
"role": "system",
|
|
"content": "Evaluate whether the given sentence is relevant to answering the question.",
|
|
},
|
|
{"role": "user", "content": "Question: {question}\nSentence: {sentence}"},
|
|
],
|
|
"election_questions": [
|
|
{
|
|
"role": "system",
|
|
"content": "Classify whether the following question about US elections is harmful or harmless.",
|
|
},
|
|
{"role": "user", "content": "{question}"},
|
|
],
|
|
"medhallu": [
|
|
{
|
|
"role": "system",
|
|
"content": "Answer the medical question accurately based on the given knowledge, avoiding any hallucinations.",
|
|
},
|
|
{"role": "user", "content": "{question}"},
|
|
],
|
|
"rag_hallucinations": [
|
|
{
|
|
"role": "system",
|
|
"content": "Answer the question based on the given context, ensuring all information is supported by the context.",
|
|
},
|
|
{"role": "user", "content": "{question}"},
|
|
],
|
|
"hotpot_300": [
|
|
{
|
|
"role": "system",
|
|
"content": "Answer the question based on the given context.",
|
|
},
|
|
{"role": "user", "content": "{question}"},
|
|
],
|
|
"ai2_arc": [
|
|
{
|
|
"role": "system",
|
|
"content": "Select the correct answer from the given options.",
|
|
},
|
|
{"role": "user", "content": "Question: {question}\nChoices: {choices}"},
|
|
],
|
|
"truthful_qa": [
|
|
{
|
|
"role": "system",
|
|
"content": "Provide a truthful and accurate answer to the question.",
|
|
},
|
|
{"role": "user", "content": "{question}"},
|
|
],
|
|
"cnn_dailymail": [
|
|
{"role": "system", "content": "Summarize the following article concisely."},
|
|
{"role": "user", "content": "{article}"},
|
|
],
|
|
}
|
|
|
|
|
|
def _clone_prompt(key: str) -> list[dict[str, str]]:
|
|
return [dict(message) for message in INITIAL_PROMPTS[key]]
|
|
|
|
|
|
_HOVER_PROMPT = [
|
|
{
|
|
"role": "system",
|
|
"content": "Determine whether the claim is supported, refuted, or lacks evidence.",
|
|
},
|
|
{"role": "user", "content": "Claim: {claim}"},
|
|
]
|
|
|
|
_IFBENCH_PROMPT = [
|
|
{
|
|
"role": "system",
|
|
"content": "Answer the user's query and then rewrite the response to satisfy the constraints exactly.",
|
|
},
|
|
{
|
|
"role": "user",
|
|
"content": "Messages:\n{messages}\n\nConstraints:\n{constraint}",
|
|
},
|
|
]
|
|
|
|
_PUPA_PROMPT = [
|
|
{
|
|
"role": "system",
|
|
"content": "Rewrite the user's request to remove sensitive information while preserving intent.",
|
|
},
|
|
{"role": "user", "content": "User query: {user_query}"},
|
|
]
|
|
|
|
INITIAL_PROMPTS.update(
|
|
{
|
|
"hotpot_train": _clone_prompt("hotpot_300"),
|
|
"hotpot_validation": _clone_prompt("hotpot_300"),
|
|
"hotpot_test": _clone_prompt("hotpot_300"),
|
|
"hover_train": _HOVER_PROMPT,
|
|
"hover_validation": _HOVER_PROMPT,
|
|
"hover_test": _HOVER_PROMPT,
|
|
"ifbench_train": _IFBENCH_PROMPT,
|
|
"ifbench_validation": _IFBENCH_PROMPT,
|
|
"ifbench_test": _IFBENCH_PROMPT,
|
|
"pupa_train": _PUPA_PROMPT,
|
|
"pupa_validation": _PUPA_PROMPT,
|
|
"pupa_test": _PUPA_PROMPT,
|
|
"tiny_test": [
|
|
{"role": "system", "content": "Answer the question briefly and correctly."},
|
|
{"role": "user", "content": "{text}"},
|
|
],
|
|
"tiny_test_train": [
|
|
{"role": "system", "content": "Answer the question briefly and correctly."},
|
|
{"role": "user", "content": "{text}"},
|
|
],
|
|
}
|
|
)
|
|
|
|
_PACKAGES: list[BenchmarkPackage] = [
|
|
HotpotPackage(),
|
|
HoverPackage(),
|
|
IfbenchPackage(),
|
|
PupaPackage(),
|
|
]
|
|
|
|
|
|
def resolve_package(dataset_name: str) -> PackageResolution | None:
|
|
for package in _PACKAGES:
|
|
if package.matches(dataset_name):
|
|
return PackageResolution(key=package.key, package=package)
|
|
return None
|
|
|
|
|
|
def list_packages() -> list[str]:
|
|
return sorted({pkg.key for pkg in _PACKAGES})
|