Scorery deterministyczne

pass@k w praktyce

Aktualizacja: 11 października 2026

Definicja: potencjał, nie pojedyncze wywołanie

pass@k odpowiada na pytanie: gdyby wolno było wygenerować kk próbek i wybrać najlepszą, jak często problem zostałby rozwiązany? To miara potencjału modelu z resamplingiem, spopularyzowana w ewaluacji generowania kodu (Chen i in., Codex).

Jeśli na zadanie wygenerowano n≥kn \ge k próbek i cc z nich przechodzi testy, nieobciążony estymator to:

pass@k⁡=Ezadania[1−(n−ck)(nk)]\operatorname{pass@k} = \mathbb{E}_{\text{zadania}}\left[1 - \frac{\binom{n-c}{k}}{\binom{n}{k}}\right]

Dlaczego nie „ułamek poprawnych w k próbach"

Naiwne podejście „czy któraś z pierwszych kk próbek działa" zależy od kolejności i zaniża wynik, gdy n>kn > k. Wzór z symbolem Newtona liczy prawdopodobieństwo, że w losowym podzbiorze kk z nn próbek znajdzie się co najmniej jedna poprawna — stąd jego nieobciążoność.

Implementacja

from math import comb
 
def pass_at_k(n: int, c: int, k: int) -> float:
    if n - c < k:
        return 1.0  # każdy podzbiór k próbek zawiera trafienie
    return 1.0 - comb(n - c, k) / comb(n, k)
 
print(pass_at_k(n=10, c=2, k=1))  # 0.2
print(pass_at_k(n=10, c=2, k=5))  # ok. 0.78

Parametry, które zmieniają wynik

  • Temperatura. pass@k zależy od dywersyfikacji próbek; przy temperaturze 0 wszystkie nn próbek są identyczne i pass@k = pass@1.
  • nn i kk. Większe kk zawsze podnosi miarę (więcej szans), dlatego porównuj tylko te same pary (n,k)(n, k).
  • Testy. pass@k jest tak dobry, jak testy: słabe testy przepuszczają błędne rozwiązania.
  • Raportowanie. Zawsze podawaj parę (n,k)(n, k) obok wyniku: „pass@k = 0.5" bez (n,k)(n, k) jest niejednoznaczne.

pass@1 i krewni

pass@1 to szczególny przypadek — ułamek poprawnych pierwszych prób, bliski zwykłej accuracy na kodzie. W benchmarkach agentowych bliskim krewnym jest Resolved rate: czy agent rozwiązał zadanie w całości, weryfikowane testami w środowisku.

pass@k stosuj tam, gdzie dopuszczasz retry lub ranking kandydatów: generowanie kodu, planowanie agentowe. Do systemów, które muszą działać za pierwszym razem, raportuj pass@1 — wysoki pass@5 przy niskim pass@1 oznacza, że model wymaga poprawek.

Zobacz też: pass@k, SWE-bench Verified.

pass@k w praktyce