Harness Academy
Tài liệu gốc 07 7 phútTiếng Việt + English
running_the_code/05_evals.mdXem bản gốc
Ngôn ngữ bài đọc
Bản dịch tiếng Việt

Bản dịch đầy đủ theo đúng cấu trúc tài liệu; code, liên kết và định danh kỹ thuật được giữ nguyên.

Đánh giá decode

decode có dấu vết (ADR-0014) nhưng truy tìm một mình không thể trả lời "đã sự thay đổi này làm cho agent tốt hơn hay tệ hơn?". Bộ đánh giá (ADR-0017) có, trong bốn bài hát trên một bài hát được chia sẻ Opik khai thác. Nó sống ở cấp cao nhất evals/ — tài liệu khóa học về agent, chưa bao giờ được chuyển giao — và đọc cấu hình của nó giống như vậy Settings bề mặt như decode chính nó.

Theo dõiĐáp ánNó được xếp loại như thế nàoChạy nó với
Kỹ năng demo"nó có gây ấn tượng không?"một con người đang theo dõi/demo-N-... trong REPL
Điểm chuẩn"nó có hoạt động không?"ẩn giấu verify.sh lời tiên trimake eval-benchmark
Thăm dò hồi quy"nó có hoạt động theo cách chúng tôi thiết kế không?"số liệu mã + cổng ngưỡngmake eval-regression
Đánh giá trực tuyến"lưu lượng truy cập trực tiếp vẫn tốt chứ?"thẩm phán về dấu vết đã được phát rapython -m evals online

các evals/ tổng quan về gói là evals/README.md.

Phím & chi phí. Các bản theo dõi điểm chuẩn và hồi quy chạy agent thực và lưu trữ Opik thử nghiệm, vì vậy họ cần OPIK_API_KEY cộng với khóa của nhà cung cấp đang hoạt động (gemini → GEMINI_API_KEY, openrouter → OPENROUTER_API_KEY, modal → MODAL_ENDPOINT_URL). Chúng có giá tiền thật và không bao giờ là một phần của make ci - nhịp điệu được cố tình thủ công (ADR-0017 §9). Không có chìa khóa mọi mục tiêu bỏ qua thân thiện: một dòng đặt tên những gì cần đặt, thoát 0, không truy nguyên. Eval chạy đăng nhập dưới EVAL_PROJECT_NAME (decode-evals) để chúng không bao giờ gây ô nhiễm cho dự án truy tìm REPL trực tiếp.

1. Kỹ năng demo — màn trình diễn do con người đánh giá

Sáu Kỹ năng dưới .decode/skills/demo-N-*/, mỗi chương trình giới thiệu theo kịch bản mà bạn kích hoạt bằng cách tên trong REPL (không có Opik, không có chìa khóa ngoài nhà cung cấp của bạn - một người là thẩm phán):

decode                          # start the REPL in the repo root
/demo-1-terminal-arcade         # then just type the skill name
Kỹ năngNó thể hiện điều gì
/demo-1-terminal-arcademột stdlib có thể chơi được-curses Trò chơi rắn trong một tập tin
/demo-2-bug-huntsăn + sửa hai lỗi có mầm bệnh cho đến khi bộ chuyển sang màu xanh
/demo-3-repo-pulsedữ liệu API GitHub trực tiếp → bảng điều khiển một tệp có biểu đồ
/demo-4-review-swarmphân ra ba song song Khám phá Subagents thành một bản án
/demo-5-sandbox-feature-prmeta "decode cải thiện việc decode" Hộp cát + Bàn giao → dự thảo luồng PR
/demo-6-article-kgcác bài viết trên web được tìm nạp và hiển thị thành biểu đồ kiến ​​thức tương tác

Mỗi SKILL.md mang theo hướng dẫn riêng của mình; chạy một cái, xem bản ghi, tự đánh giá.

2. Điểm chuẩn — make eval-benchmark

Điểm chuẩn kết quả: mỗi tác vụ chạy agent thực trong Không gian làm việc mới biệt lập, sau đó là ẩn verify.sh oracle xếp loại ĐẠT/THẤT BẠI (agent không bao giờ có thể grep học sinh chấm điểm của chính nó). một make eval-benchmark chạy là một thử nghiệm Opik dưới EVAL_PROJECT_NAME.

make eval-benchmark                                   # the whole suite, docker sandbox, 1 trial
make eval-benchmark ARGS='--difficulty easy'          # one difficulty tier
make eval-benchmark ARGS='--task 017-flaky-test-hunt' # a single task
make eval-benchmark ARGS='--trials 5'                 # 5 runs per task → reliability aggregates
make eval-benchmark ARGS='--sandbox modal'            # execute each run on the remote modal rung
make eval-benchmark ARGS='--trials 3 --sandbox modal --nb-samples 4'

Cờ đạt python -m evals benchmark nguyên văn thông qua ARGS=:

CờHiệu ứng
--task <id>chỉ chạy nhiệm vụ chuẩn đó
--difficulty easy|medium|hardchỉ chạy tầng đó
--sandbox docker|modalhộp cát nào rung mỗi lần chạy sẽ thực thi (mặc định docker)
--nb-samples <n>giới hạn số lượng mục dữ liệu được lấy mẫu
--trials <k>chạy trên mỗi nhiệm vụ (Opik trial_count) — thúc đẩy tổng hợp độ tin cậy

Thử nghiệm + tổng hợp. Với --trials k harness tính toán, như các chức năng hậu định thuần túy trên kết quả của lần chạy, pass@1 (thành công một lần), pass@k (thành công ít nhất một lần trong k), pass^k (thành công mọi một trong số k — thanh độ tin cậy), tỷ lệ không ổn định và chi phí (thành công trên mỗi đô la từ việc sử dụng token được ghi lại). Chúng in dưới dạng bảng tóm tắt phong phú và đính kèm vào hàng thử nghiệm, được gắn thẻ mô hình agent, nhà cung cấp và git sha (ADR-0017 §8). Định dạng thư mục tác vụ và khai thác tính trung thực của oracle là evals/benchmark/tasks/README.md.

3. Thăm dò hồi quy — make eval-regression

Người thăm dò hỏi "nó có hoạt động theo cách chúng tôi thiết kế không?" — công cụ phù hợp, khác biệt tối thiểu, quyền cổng tôn trọng, nén sống sót. Thăm dò chạy host-native (none chế độ, thư mục tạm thời - không có docker), vì vậy bộ phần mềm này đủ nhanh để trở thành một nghi thức hợp nhất trước cho mỗi tính năng-nhánh. Mục tiêu Makefile là chính xác nghi thức đó - đồng bộ hóa tập dữ liệu thăm dò, sau đó chạy cổng ngưỡng:

make eval-regression        # == python -m evals sync --no-benchmark --regression && pytest evals/regression/test_thresholds.py

Bạn cũng có thể lái các mảnh trực tiếp (cả hai đều cần chìa khóa ở trên):

python -m evals regression                          # run every probe as one Opik experiment
python -m evals regression --probe smoke-read-tool  # run a single probe

Cổng ngưỡng. evals/regression/test_thresholds.py là một mô-đun pytest được giữ bên ngoài testpaths có mục đích - đơn giản pytest và make ci không bao giờ thu thập nó. Nó chạy bộ thăm dò một lần và thực thi hai điều: tầng tuyệt đối trên mỗi số liệu là cứng cổng (kỷ luật công cụ ≥ 0,8, đánh giá ≥ 0,7 — bất kỳ số liệu nào dưới đây đều không đạt yêu cầu) và so sánh cơ bản dưới dạng tín hiệu mềm (tìm nạp thử nghiệm trước đó theo tên và CẢNH BÁO về hồi quy theo số liệu, không bao giờ không thành công - có thể sử dụng được vào ngày đầu tiên mà không có đường cơ sở). Đó là một tệp pytest bình thường, vì vậy ** chỉ CI vào nó sau này là thay đổi quy trình làm việc một dòng** (ADR-0017 §9); hôm nay nó vẫn ở chế độ thủ công vì nó tốn tiền.

Có chủ ý hai bề mặt hồi quy. Độ tương phản là điểm giảng dạy (ADR-0017 §6):

  • bề mặt (a) - python -m evals regression — số liệu mã xác định trên một ngưỡng số;
  • bề mặt (b) - python -m evals suite — một Bộ thử nghiệm Opik 2.0 gồm các xác nhận bằng ngôn ngữ tự nhiên ("phản hồi không bao giờ tạo ra một tệp không tồn tại"*) thẩm phán LLM kiểm tra, kiểm soát pass_rate.

Các con số xác định có thể bắt được các hồi quy chính xác một cách dễ dàng; Khẳng định của NL cho thấy "câu trả lời trở nên tệ hơn trong một không có cách nào chụp được một số". Không thay thế cái kia.

Tính trung thực của phiên bản. API Test Suites là Opik 2.0, nhưng repo này được ghim vào opik==1.9.8 (Opik 2.x kéo một litellm cầu Rust của ai cần một cái mới hơn rustc hơn máy chủ xây dựng có). Vì vậy python -m evals suite được viết dựa trên API 2.0 đã được ghi tài liệu và được bảo vệ: trên được ghim Opik nó thoát ra với thông báo cổng phiên bản rõ ràng và bề mặt kích hoạt không thay đổi vào thời điểm opik chốt được nhấc lên. Chi tiết đầy đủ: evals/regression/README.md.

4. Đánh giá trực tuyến — python -m evals online

Câu chuyện đánh giá sản xuất: mọi bài hát khác thúc đẩy đại diện, nhưng bài đánh giá trực tuyến chấm điểm Dấu vết decode đã được phát ra từ các phiên REPL thực và decode run lời kêu gọi, đã ghi điểm tại chỗ trong dự án Opik trực tiếp (không bao giờ EVAL_PROJECT_NAME — phân loại lưu lượng truy cập thực ở nơi nó đất đai là toàn bộ điểm).

python -m evals online                                          # score every thread in the live project
python -m evals online --filter 'start_time > "2026-07-01T00:00:00Z"'   # scope to recent threads

Hướng dẫn đầy đủ — viết lời nhắc chấm điểm của quy tắc trực tuyến định tính và lý do bài hát này đảo ngược quy tắc "không cho phép tránh khỏi dự án trực tiếp" — là phần trực tuyến của evals/README.md.

Nút cấu hình

Cả hai eval env vars đều tồn tại trong khối Evals của .env.example:

  • EVAL_JUDGE_MODEL — chuỗi mô hình LiteLLM dành cho giám khảo G-Eval / hội thoại; trống bắt nguồn từ nó từ LLM_PROVIDER (vì vậy giám khảo tuân theo nhà cung cấp riêng của bộ decode).
  • EVAL_PROJECT_NAME — đánh giá dự án Opik chạy nhật ký (mặc định decode-evals), tách biệt khỏi dự án REPL trực tiếp nên dấu vết đánh giá và sản xuất không bao giờ trộn lẫn.
Mục lục nguồn