Files
wehub-resource-sync 1443d3fdf9
Ruff Format Check / Ruff Format & Lint (push) Failing after 7m39s
Deploy VitePress site to Pages / build (push) Failing after 9m11s
Deploy VitePress site to Pages / Deploy (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:32:26 +08:00

40 lines
1.3 KiB
Python

import os
os.environ.setdefault("OPENAI_API_KEY", "test-key")
from yuxi.knowledge.eval.evaluator import aggregate_metrics, build_answer_prompt, normalize_query_result
def test_normalize_query_result_supports_dict_and_list():
answer, chunks = normalize_query_result({"answer": "A", "retrieved_chunks": [{"content": "C"}]})
assert answer == "A"
assert chunks == [{"content": "C"}]
answer, chunks = normalize_query_result([{"content": "C"}])
assert answer == ""
assert chunks == [{"content": "C"}]
def test_build_answer_prompt_uses_first_five_non_empty_chunks():
chunks = [{"content": f"内容{i}"} for i in range(6)] + [{"content": ""}]
prompt = build_answer_prompt("问题", chunks)
assert "用户问题:问题" in prompt
assert "内容0" in prompt
assert "内容4" in prompt
assert "内容5" not in prompt
def test_aggregate_metrics_matches_service_output_shape():
metrics, overall_score = aggregate_metrics(
[{"recall@1": 1.0, "f1@1": 0.0}, {"recall@1": 0.0, "f1@1": 1.0}],
[{"score": 1.0}, {"score": 0.0}],
include_overall_score=True,
)
assert metrics["recall@1"] == 0.5
assert metrics["f1@1"] == 0.5
assert metrics["answer_correctness"] == 0.5
assert metrics["overall_score"] == overall_score