Use non-thinking judge in evals
This commit is contained in:
parent
e83978f88b
commit
f843fb8140
1 changed files with 12 additions and 13 deletions
|
|
@ -6,8 +6,6 @@ from typing import Any, cast
|
|||
import logfire
|
||||
import typer
|
||||
from dotenv import load_dotenv
|
||||
from pydantic_ai.models.openai import OpenAIChatModel
|
||||
from pydantic_ai.providers.ollama import OllamaProvider
|
||||
from pydantic_evals import Case, Dataset as EvalDataset
|
||||
from pydantic_evals.evaluators import LLMJudge
|
||||
from pydantic_evals.reporting import ReportCaseFailure
|
||||
|
|
@ -20,13 +18,13 @@ from evaluations.evaluators import ANSWER_EQUIVALENCE_RUBRIC
|
|||
from evaluations.prompts import WIX_SUPPORT_PROMPT
|
||||
from haiku.rag.client import HaikuRAG
|
||||
from haiku.rag.config import AppConfig, find_config_file, load_yaml_config
|
||||
from haiku.rag.config.models import ModelConfig
|
||||
from haiku.rag.logging import configure_cli_logging
|
||||
from haiku.rag.qa import get_qa_agent
|
||||
from haiku.rag.utils import get_model
|
||||
|
||||
load_dotenv()
|
||||
|
||||
QA_JUDGE_MODEL = "qwen3"
|
||||
|
||||
logfire.configure(send_to_logfire="if-token-present", service_name="evals")
|
||||
logfire.instrument_pydantic_ai()
|
||||
configure_cli_logging()
|
||||
|
|
@ -37,7 +35,7 @@ def build_experiment_metadata(
|
|||
dataset_key: str,
|
||||
test_cases: int,
|
||||
config: AppConfig,
|
||||
judge_model: str,
|
||||
judge_config: ModelConfig,
|
||||
) -> dict[str, Any]:
|
||||
"""Build experiment metadata for Logfire tracking."""
|
||||
return {
|
||||
|
|
@ -54,8 +52,8 @@ def build_experiment_metadata(
|
|||
"rerank_model": config.reranking.model.name if config.reranking.model else None,
|
||||
"qa_provider": config.qa.model.provider,
|
||||
"qa_model": config.qa.model.name,
|
||||
"judge_provider": "ollama",
|
||||
"judge_model": judge_model,
|
||||
"judge_provider": judge_config.provider,
|
||||
"judge_model": judge_config.name,
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -163,11 +161,14 @@ async def run_retrieval_benchmark(
|
|||
|
||||
eval_name = name if name is not None else f"{spec.key}_retrieval_evaluation"
|
||||
|
||||
judge_config = ModelConfig(
|
||||
provider="ollama", name="gpt-oss", enable_thinking=False
|
||||
)
|
||||
experiment_metadata = build_experiment_metadata(
|
||||
dataset_key=spec.key,
|
||||
test_cases=len(cases),
|
||||
config=config,
|
||||
judge_model=QA_JUDGE_MODEL,
|
||||
judge_config=judge_config,
|
||||
)
|
||||
|
||||
report = await dataset.evaluate(
|
||||
|
|
@ -215,10 +216,8 @@ async def run_qa_benchmark(
|
|||
for index, doc in enumerate(corpus, start=1)
|
||||
]
|
||||
|
||||
judge_model = OpenAIChatModel(
|
||||
model_name=QA_JUDGE_MODEL,
|
||||
provider=OllamaProvider(base_url=f"{config.providers.ollama.base_url}/v1"),
|
||||
)
|
||||
judge_config = ModelConfig(provider="ollama", name="gpt-oss", enable_thinking=False)
|
||||
judge_model = get_model(judge_config, config)
|
||||
|
||||
evaluation_dataset = EvalDataset[str, str, dict[str, str]](
|
||||
name=spec.key,
|
||||
|
|
@ -251,7 +250,7 @@ async def run_qa_benchmark(
|
|||
dataset_key=spec.key,
|
||||
test_cases=len(cases),
|
||||
config=config,
|
||||
judge_model=QA_JUDGE_MODEL,
|
||||
judge_config=judge_config,
|
||||
)
|
||||
|
||||
report = await evaluation_dataset.evaluate(
|
||||
|
|
|
|||
Loading…
Reference in a new issue