Hướng dẫn
Từ con số không đến một phán quyết về ứng dụng của bạn
Bạn có một hàm Python trả lời câu hỏi, và bạn muốn biết nó có đủ tốt để phát hành hay không. Ba lệnh đưa bạn từ hàm đó đến một quyết định phát hành, không cần viết tay YAML nào: oloproof init --system viết dự án quanh hàm của bạn, oloproof check cho biết nó có chạy được không trước khi tốn bất cứ thứ gì, và oloproof run quyết định. Mọi thứ chạy trên máy của bạn, không cần tài khoản và không gọi mô hình nào.
Mọi đầu ra dưới đây đều đến từ việc chạy các lệnh này trên hàm được trình bày.
1. Hàm của bạn
Bất kỳ hàm nào nhận một trường hợp và trả về một câu trả lời. Hàm này là bot.py, cùng một mô-đun trợ giúp mà nó import:
from prompts import GREETING
def answer(question):
text = question.lower()
if "refund" in text:
reply = "Refunds are available within 30 days of purchase."
elif "ship" in text:
reply = "We ship to the US and Canada."
else:
reply = "A support agent will follow up within one business day."
return {"reply": f"{GREETING} {reply}", "topic": "support"}2. Viết dự án quanh hàm đó
Từ thư mục chứa bot.py:
oloproof init --system bot:answerInitialized Oloproof project in . around bot:answer
Each case's input is a string, read from the function's first parameter.
Fill in before a run means anything:
data/cases.jsonl 3 placeholder cases: give each a real input and, as its expected
phrase, words a right answer contains. Add more: see below.
oloproof.yaml the check reads the whole answer; if your function returns an
object, add `field:` naming the key that holds the text.
release.yaml a placeholder bar of 0.80; set the one your release needs.
What this suite can decide, if every case is measured:
mentions-floor (mentions_expected at least 0.8, 3 cases):
1 or more pass: INSUFFICIENT_EVIDENCE (not established yet); 0: FAIL
(ruled out). With 50 cases, PASS from 46; with 100, from 89.
Next: oloproof check, then oloproof runTham chiếu được import trước, và không gì được ghi ra trừ khi nó trỏ tới một hàm; một lỗi trong mô-đun của bạn sẽ dừng ở đây, kèm tệp và dòng của nó. Hàm không được gọi. Ba tệp xuất hiện: oloproof.yaml (hàm của bạn và một phép kiểm tra), data/cases.jsonl (ba trường hợp giữ chỗ) và release.yaml (ngưỡng). Đầu vào của trường hợp là một chuỗi vì tham số đầu tiên tên là question; một tham số tên case, inputs, row hoặc được chú thích là dict sẽ nhận một đối tượng.
Phép kiểm tra là contains: một trường hợp đạt khi câu trả lời chứa cụm từ mong đợi của trường hợp đó. Đây là phép kiểm tra tất định, nên nó không cần được đo đối chiếu với con người trước khi được phép quyết định. Hướng dẫn về suite liệt kê mọi phép kiểm tra và giám khảo khác.
3. Điền các trường hợp
Thay các giá trị giữ chỗ bằng câu hỏi thật và những từ mà một câu trả lời đúng chứa, mỗi dòng một trường hợp:
{"id": "refund_01", "input": "Can I get a refund?", "expected": {"phrase": "30 days"}}
{"id": "ship_01", "input": "Do you ship to Canada?", "expected": {"phrase": "US and Canada"}}
{"id": "other_01", "input": "My order is late", "expected": {"phrase": "follow up"}}Ba trường hợp không thể vượt ngưỡng 0.80, như bảng ở trên cho thấy: với ba trường hợp, kết quả tốt nhất là INSUFFICIENT_EVIDENCE. Lần chạy dưới đây dùng 30 trường hợp như vậy, mười trường hợp cho mỗi chủ đề, trong đó 29 trường hợp đạt là đủ.
4. Kiểm tra trước khi chạy
oloproof checkTrước khi đặt trường, nó cho ra:
ok System: callable bot:answer imports.
ok Called on case refund_01: it answered {"reply": "Thanks for writing in. Refunds are available within 30 days of purchase.", "topic": "support"}
Evaluators on that answer (one case, not a result):
ok mentions_expected (contains) can read the answer; it passed this case.
note It reads the whole answer object; `field:` can name one of reply, topic.Vậy hãy thêm field: reply dưới phép kiểm tra trong oloproof.yaml, rồi kiểm tra lại:
ok System: callable bot:answer imports.
ok Called on case refund_01: it answered {"reply": "Thanks for writing in. Refunds are available within 30 days of purchase.", "topic": "support"}
Evaluators on that answer (one case, not a result):
ok mentions_expected (contains) can read the answer; it passed this case.
Code: the system's version hashes bot.py, prompts.py. Edit one and the next run calls the system again.
What this suite can decide, if every case is measured:
mentions-floor (mentions_expected at least 0.8, 30 cases):
29 or 30 pass: PASS (established); 19 to 28: INSUFFICIENT_EVIDENCE (not
established yet); 18 or fewer: FAIL (ruled out). With 50 cases, PASS from
46; with 100, from 89.
CI: no model key is needed for the evaluators. Keys your own function reads are not checked here.
Ready. Next: oloproof runÝ nghĩa của từng phần:
- Import và trả lời: Hệ thống được dựng đúng như cách oloproof run dựng nó, và được gọi trên trường hợp đầu tiên (--case ID chọn trường hợp khác, --no-call bỏ qua lời gọi). Nếu nó ném lỗi, dòng này nêu lỗi cùng tệp và dòng trong mã của bạn.
- Bộ đánh giá: Mỗi phép kiểm tra không cần mô hình được chạy trên câu trả lời đó. Một trường không tìm thấy sẽ được nêu tên kèm các trường mà câu trả lời có. Đạt hay không đạt ở đây là một trường hợp, không phải một kết quả. check không bao giờ gọi giám khảo mô hình; nó nói rõ điều đó, và một lần chạy sẽ gọi.
- Mã: Các tệp mà nội dung tạo nên phiên bản của hệ thống: mô-đun của nó và các mô-đun dự án mà nó import, cộng với mọi system.code_paths. Một tệp dự án được nạp khi import hoặc gọi hệ thống nhưng không nằm trong số đó (chẳng hạn một mô-đun được import theo tên lúc chạy) được liệt kê là chưa băm: hãy thêm nó vào code_paths, nếu không một thay đổi ở đó sẽ dùng lại các câu trả lời cũ.
- Những gì nó có thể quyết định: Cùng bảng với oloproof plan. Khi không có release.yaml, nó cho biết một lần chạy trả lời bằng lời lẽ đơn giản và không quyết định gì.
- CI: Mỗi mô hình mà dự án gọi và khóa bí mật mà một job CI cần cho nó, ANTHROPIC_API_KEY hoặc OPENAI_API_KEY trừ khi api_key_env chỉ định tên khác, và không cần khóa nào cho máy chủ chạy trên máy này.
check không lưu gì cả. Nó thoát với mã 2 khi có điều phải sửa và 0 trong các trường hợp khác, và oloproof check --json in cùng các phát hiện thành một tài liệu.
5. Chạy
oloproof runGate: ALLOW (exit 0)
mentions-floor:
100.0%, range 88.4% to 100.0% (exact binomial interval); 30 of 30 casesBáo cáo của lần chạy dài hơn; đây là phán quyết của nó và dòng của quy tắc. Cả 30 trường hợp đều đạt, và khoảng mà tỷ lệ được giữ trong đó bắt đầu từ 88.4%, cao hơn ngưỡng 0.80, nên quy tắc cho PASS và cổng cho phép phát hành. oloproof inspect latest đọc lại nó.
Tiếp theo
- Thêm cổng vào pull request: oloproof init --ci github viết workflow bên cạnh dự án này (hướng dẫn CI).
- Đổi phép kiểm tra sang giám khảo khi một cụm từ không thể nói lên câu trả lời đúng là gì (hướng dẫn giám khảo); khi đó oloproof check sẽ nêu khóa mà CI cần.
- Đã có câu trả lời trong một tệp thay vì một hàm? oloproof eval answers.jsonl kiểm tra chúng mà không cần dự án nào.