เกณฑ์ระดับความรุนแรงพร้อมตัวอย่าง
ยึดโยงแต่ละระดับความรุนแรงด้วยตัวอย่างโค้ด
เกณฑ์ระดับความรุนแรงพร้อมตัวอย่าง เป็นบทเรียน Claude Architect ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Claude Architect และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Claude Architect มีบทเรียนทั้งหมด 4 บทเรียน
เหตุใดระดับความรุนแรงจึงต้องมีเกณฑ์
เมื่อคุณขอให้ Claude ตรวจสอบโค้ด คำสั่งที่อ่อนแอที่สุดที่ให้ได้คือคำสั่งคลุมเครือ เช่น be more precise หรือ only flag important issues โมเดลไม่มีคำจำกัดความร่วมกันของคำว่า "สำคัญ" ดังนั้นเกณฑ์ของโมเดลจึงเปลี่ยนไปในแต่ละไฟล์
หลักการของข้อสอบนั้นตรงไปตรงมา: เกณฑ์ที่ชัดเจนดีกว่าคำคุณศัพท์คลุมเครือ ระดับความรุนแรง (วิกฤต / สูง / ปานกลาง / ต่ำ) จะมีประโยชน์ก็ต่อเมื่อแต่ละระดับมีกฎที่เขียนไว้อย่างชัดเจนและโมเดลนำไปใช้ได้อย่างสม่ำเสมอ — วิธีที่น่าเชื่อถือที่สุดในการกำหนดกฎให้ชัดคือ ยึดโยงกฎนั้นด้วยตัวอย่างโค้ดที่เป็นรูปธรรม
บทเรียนนี้จะสร้างเกณฑ์ระดับความรุนแรงสำหรับเอเจนต์ตรวจสอบ CI/CD ทีละระดับ โดยแต่ละระดับจะเชื่อมโยงกับตัวอย่างหนึ่งตัวอย่าง
รูปแบบความล้มเหลว: คำคุณศัพท์ที่ไม่มีจุดยึด
นี่คือตัวอย่างคำสั่งที่ดูเหมือนใช้ได้ แต่ให้ผลลัพธ์แย่ คำสั่งระบุระดับความรุนแรงไว้ แต่ไม่เคยให้คำจำกัดความ โมเดลจึงต้องเดา และเดาแตกต่างกันในแต่ละครั้งที่ทำงาน
ผลลัพธ์ตรงกับรูปแบบต่อต้านที่ข้อสอบเตือนไว้พอดี นั่นคือการตรวจสอบที่มีสัญญาณรบกวน ซึ่งทั้งการขาดการตรวจสอบค่า null และความคิดเห็นที่สะกดผิดต่างก็ถูกติดป้ายว่า "สูง" ผู้ตรวจสอบจึงเลิกเชื่อถือป้ายกำกับเหล่านี้
system = (
"You are a code reviewer. "
"Rate each issue as Critical, High, Medium, or Low. "
"Be precise and only report important problems."
)
# Problem: 'important', 'precise', and the four levels are
# never defined. The bar is whatever the model infers today.วิธีแก้: กฎหนึ่งข้อ + ตัวอย่างหนึ่งตัวอย่างต่อระดับ
การแก้ไขอยู่ที่โครงสร้าง สำหรับทุกระดับความรุนแรง ให้โมเดลสองสิ่งต่อไปนี้:
- กฎ — เงื่อนไขที่ทดสอบได้ ("ทำให้ข้อมูลสูญหาย เกิดการละเมิดความปลอดภัย หรือระบบล้มเหลวในสภาพแวดล้อมจริง")
- ตัวอย่างยึดโยง — ข้อมูลโค้ดสั้น ๆ ที่อยู่ในระดับนั้นอย่างชัดเจนและไม่มีข้อกังขา
นี่คือการใช้การป้อนคำสั่งแบบตัวอย่างน้อยกับเกณฑ์ประเมิน: ใช้ตัวอย่างที่เจาะจง 2-4 ตัวอย่างต่อจุดกำกวม โมเดล สรุปเป็นหลักทั่วไป จากจุดยึดเหล่านี้ ไม่ได้เพียงทวนซ้ำ ดังนั้นตัวอย่างที่เลือกมาอย่างดีเพียงไม่กี่ตัวอย่างก็ช่วยปรับเทียบทั้งมาตราส่วนได้
วิกฤต — ใช้ตัวอย่างด้านความปลอดภัยเป็นจุดยึด
วิกฤต สงวนไว้สำหรับปัญหาที่ทำให้ข้อมูลสูญหาย เกิดการละเมิดความปลอดภัย หรือระบบล้มเหลวในสภาพแวดล้อมจริง ให้ใช้สิ่งที่ชัดเจนไร้ข้อกังขาเป็นจุดยึด — ในที่นี้คือการแทรกสตริงดิบลงใน SQL
สังเกตว่าจุดยึดนี้ทำหน้าที่สองอย่าง: กำหนดขีดสูงสุดของมาตราส่วน ทำให้โมเดลรู้ว่าปัญหาที่รุนแรงน้อยกว่าจะต้องไม่ขึ้นมาถึงระดับนี้
CRITICAL = """
Critical: causes data loss, a security breach, or a
production crash. Always report, even if low-confidence.
Example (SQL injection):
query = f"SELECT * FROM users WHERE id = {user_input}"
db.execute(query)
Why: user_input is interpolated unescaped -> injectable.
"""สูง — ใช้ข้อผิดพลาดทางตรรกะเป็นจุดยึด
สูง ครอบคลุมพฤติกรรมที่ผิดพลาดซึ่งไม่ทำให้กระบวนการล้มเหลว แต่สร้างผลลัพธ์ที่ไม่ถูกต้อง เช่น ข้อผิดพลาดทางตรรกะ กรณีขอบเขตที่ทำงานผิดพลาด หรือการนับคลาดไปหนึ่ง จุดยึดช่วยทำให้เส้นแบ่งกับระดับวิกฤตเป็นรูปธรรม: ไม่มีการละเมิดความปลอดภัย ไม่มีการล้มเหลว แต่ผลลัพธ์ผิด
HIGH = """
High: produces incorrect results or a test failure, but
does not breach security or crash production.
Example (off-by-one):
for i in range(len(items) - 1):
process(items[i]) # last item never processed
Why: range stops one element early; silent wrong output.
"""ปานกลางและต่ำ — ใช้จุดยึดกับปลายด้านเงียบ
ปลายด้านต่ำของมาตราส่วนเป็นจุดที่คำสั่งคลุมเครือทำให้เกิดผลบวกลวงมากที่สุด จึงต้องใช้จุดยึดอย่างระมัดระวังเช่นเดียวกัน
- ปานกลาง — ความเสี่ยงด้านการดูแลรักษาหรือความน่าเชื่อถือที่ยังไม่กลายเป็นข้อผิดพลาด (เช่น ไม่มี timeout หรือมีเส้นทางข้อผิดพลาดที่ไม่ได้จัดการแต่เกิดขึ้นไม่บ่อย)
- ต่ำ — เกี่ยวกับรูปแบบและการตั้งชื่อเท่านั้น ไม่ส่งผลต่อพฤติกรรม
การกำหนดระดับต่ำอย่างชัดเจนทำให้ภายหลังคุณสามารถบอกว่า "อย่ารายงานระดับต่ำในขั้นตอนตรวจสอบก่อนผสาน" ได้โดยที่โมเดลไม่โต้แย้ง
MEDIUM = """
Medium: reliability or maintainability risk, not yet a bug.
Example:
requests.get(url) # no timeout -> can hang forever
"""
LOW = """
Low: style or naming only, no behavioral impact.
Example:
def calc(x): return x*2 # name 'calc' is unclear
"""ประกอบเกณฑ์ประเมินเข้ากับคำสั่งระบบ
ระดับที่มีจุดยึดจะกลายเป็นบล็อกหนึ่งในคำสั่งระบบ ทำให้บล็อกนี้ คงที่และอยู่ก่อน — ใช้เหมือนกันกับทุกไฟล์ที่คุณตรวจสอบ จึงเหมาะอย่างยิ่งที่จะเป็นคำนำหน้าสำหรับการแคชคำสั่ง ส่วนส่วนต่างของแต่ละไฟล์ให้ใส่ในข้อความจากผู้ใช้ หลังเกณฑ์ประเมินที่แคชไว้
import anthropic
client = anthropic.Anthropic()
system = [{
"type": "text",
"text": "You are a code reviewer.\n"
+ CRITICAL + HIGH + MEDIUM + LOW
+ "\nAssign exactly one level per finding using the\n"
"rules and examples above. When unsure between two\n"
"levels, pick the lower one.",
"cache_control": {"type": "ephemeral"},
}]บังคับโครงสร้าง: ระดับความรุนแรงเป็น Enum
เกณฑ์ที่เขียนไว้จะบอกโมเดลว่า ควรตัดสินอย่างไร ส่วนผลลัพธ์แบบมีโครงสร้างจะรับประกัน รูปแบบของคำตอบ ผูกระดับความรุนแรงเข้ากับ enum ของ JSON Schema เพื่อไม่ให้ฟิลด์นี้กลายเป็นคำคุณศัพท์ที่เป็นข้อความอิสระ เช่น "prettyBad" ได้
กฎของข้อสอบที่ควรจำ: กำหนดฟิลด์เป็น required เฉพาะเมื่อฟิลด์นั้นมีอยู่ เสมอ เท่านั้น severity และ line มีอยู่เสมอสำหรับข้อค้นพบจริง จึงเป็นฟิลด์ที่จำเป็น ส่วน suggested_fix ที่ไม่บังคับนั้นไม่ใช่
finding_schema = {
"type": "object",
"properties": {
"line": {"type": "integer"},
"severity": {
"type": "string",
"enum": ["critical", "high", "medium", "low"],
},
"rule": {"type": "string"},
"suggested_fix": {"type": "string"},
},
"required": ["line", "severity", "rule"],
"additionalProperties": False,
}เชื่อมเกณฑ์ประเมินเข้ากับการเรียกตรวจสอบ
ตอนนี้ให้รวมเกณฑ์ประเมินที่แคชและมีจุดยึดไว้กับสคีมาที่จำกัดค่าโดย enum ในคำขอเดียว ส่วนต่างเป็นเพียงส่วนที่เปลี่ยนแปลงบ่อย จึงอยู่ท้ายข้อความจากผู้ใช้
การจับคู่นี้ — ใช้เกณฑ์ที่ชัดเจนสำหรับการตัดสิน และใช้ผลลัพธ์แบบมีโครงสร้างสำหรับรูปแบบ — เป็นรูปแบบที่ข้อสอบแนะนำสำหรับการดึงข้อมูลและการจัดประเภทที่น่าเชื่อถือ
resp = client.messages.create(
model="claude-opus-4-8",
max_tokens=4096,
thinking={"type": "adaptive"},
system=system, # cached rubric prefix
output_config={
"format": {
"type": "json_schema",
"schema": {
"type": "object",
"properties": {"findings": {
"type": "array", "items": finding_schema}},
"required": ["findings"],
"additionalProperties": False,
},
}
},
messages=[{"role": "user", "content": diff_text}],
)ระดับความรุนแรงใช้กำหนดการกั้น ไม่ใช่โมเดล
เมื่อระดับความรุนแรงเป็น enum ที่สะอาด การ ตัดสินใจ ว่าจะบล็อกการผสานหรือไม่ก็เป็นโค้ดที่กำหนดแน่นอน ไม่ใช่การตัดสินของโมเดล โมเดลทำหน้าที่จัดประเภท ส่วนไปป์ไลน์ของคุณเป็นผู้ใช้เกณฑ์ระดับ
เรื่องนี้สอดคล้องกับหลักการฮุกของข้อสอบ: เมื่อความล้มเหลวมีผลกระทบจริง (การผสานที่เสียหาย) ให้บังคับใช้ด้วยโค้ดที่กำหนดแน่นอน ไม่ใช่คำสั่งที่มีความน่าจะเป็น เกณฑ์ประเมินทำให้ป้ายกำกับของโมเดลน่าเชื่อถือเพียงพอที่จะนำไปใช้กั้นได้
import json
findings = json.loads(resp.content[0].text)["findings"]
BLOCKING = {"critical", "high"}
blockers = [f for f in findings if f["severity"] in BLOCKING]
if blockers:
print(f"BLOCK MERGE: {len(blockers)} issue(s)")
raise SystemExit(1)
print("OK to merge (medium/low only)")อย่าให้โมเดลกรองระดับความรุนแรงด้วยตนเอง
กับดักที่ละเอียดอ่อนประการหนึ่งคือการบอกโมเดล ในขั้นตอนรายงานข้อค้นพบ ว่า "ให้รายงานเฉพาะระดับวิกฤตและสูง" ซึ่งจะลดความครอบคลุมลง โมเดลจะตัดปัญหาที่ตัดสินว่ามีระดับต่ำกว่าออกไปอย่างเงียบ ๆ และคุณจะสูญเสียสิ่งที่อาจต้องการตรวจพบ
รูปแบบที่แข็งแกร่งคือ ให้โมเดล รายงานข้อค้นพบทุกข้อพร้อมระดับความรุนแรง จากนั้นกรองในขั้นตอนแยกต่างหากภายหลัง (ชุด BLOCKING ของคุณ หรือการตรวจสอบอิสระอีกรอบ) ให้ตรวจพบให้ครบก่อน แล้วค่อยจัดลำดับทีหลัง เกณฑ์ที่มีจุดยึดคือสิ่งที่ทำให้การจัดลำดับภายหลังนี้น่าเชื่อถือ
ตรวจสอบอย่างรวดเร็ว: การใช้จุดยึดกับระดับความรุนแรง
นำบทเรียนนี้ไปใช้กับตัวเลือกด้านการออกแบบที่สมจริง
สรุปทบทวน: เกณฑ์ที่คุณชี้ให้เห็นได้
ประเด็นสำคัญ:
- คำคุณศัพท์คลุมเครือเปลี่ยนไปมา แต่กฎที่เขียนไว้ไม่เปลี่ยน แทนที่คำว่า "สำคัญ" ด้วยเงื่อนไขที่ทดสอบได้สำหรับแต่ละระดับความรุนแรง
- ใช้ตัวอย่างโค้ดเป็นจุดยึดให้ทุกระดับ ตัวอย่างแบบตัวอย่างน้อยที่เจาะจง 2-4 ตัวอย่างช่วยปรับเทียบมาตราส่วน โมเดลสรุปเป็นหลักทั่วไปจากตัวอย่างเหล่านั้น
- ล็อกป้ายกำกับด้วย enum ผลลัพธ์แบบมีโครงสร้างทำให้
severityเป็นหนึ่งในค่าที่ถูกต้องเสมอ และให้กำหนดเฉพาะฟิลด์ที่มีอยู่เสมอเป็นฟิลด์บังคับ - แคชเกณฑ์ประเมินและเปลี่ยนส่วนต่าง วางเกณฑ์ที่คงที่ไว้ก่อนในคำสั่งระบบ และวางโค้ดของแต่ละไฟล์ไว้ท้ายสุด
- ให้โมเดลจัดประเภท และให้โค้ดเป็นผู้กั้น รายงานข้อค้นพบทั้งหมดพร้อมระดับความรุนแรง แล้วกรองหรือบล็อกอย่างเป็นระบบในขั้นตอนภายหลัง อย่าให้โมเดลกรองตัวเองในขั้นตอนรายงานข้อค้นพบ
เรียนรู้ Python ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 26
- บทเรียน
- 104
คำถามที่พบบ่อย
บทเรียน “เกณฑ์ระดับความรุนแรงพร้อมตัวอย่าง” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “เกณฑ์ระดับความรุนแรงพร้อมตัวอย่าง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Claude Architect ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Claude Architect มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “เกณฑ์ระดับความรุนแรงพร้อมตัวอย่าง”
ยึดโยงแต่ละระดับความรุนแรงด้วยตัวอย่างโค้ด คุณปฏิบัติ Claude Architect ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Claude Architect หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Claude Architect บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “เกณฑ์ระดับความรุนแรงพร้อมตัวอย่าง” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Claude Architect นี้ได้ไหม
ได้ บทเรียน Claude Architect ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- เกณฑ์ที่ชัดเจนเทียบกับคำสั่งกำกวม
- ตัวอย่างแบ่งตามหมวดหมู่
- เกณฑ์ระดับความรุนแรงพร้อมตัวอย่าง
- การลดผลบวกเท็จ