01 เลือกโมเดลฐาน
บันทึกสำหรับผู้สอนของโมดูล 01 — เวลา แนวการพูด ความล้มเหลวที่พบบ่อย และขั้นตอนรีเซ็ต
คู่มือของผู้ดำเนินกิจกรรมที่ใช้ควบคู่กับบทเรียน learner 01 เลือกโมเดลฐาน
เวลา
ประมาณ 20 นาทีเมื่อใช้ชุดย่อยที่แนะนำ; 45–60 นาทีถ้าคุณรันตารางเต็มสด ๆ
- 8 min — ตั้งค่า Langfuse evaluator (LLM Connection, code evaluator
correctness, และ evaluator definitionllm_judgeแบบ LLM-as-a-judge ซึ่งปล่อย scoreagent-arena-llm-judge) ทำเป็นการพาเดินดูสด ๆ บนโปรเจกเตอร์ของ คุณเอง ไม่ใช่แค่ให้ลิงก์ไป README — มันเป็นขั้นที่จุกจิกที่สุดในเซสชัน - 8 min — รันชุดย่อยสองโมเดลหนึ่ง prompt (พูดคุยระหว่างรอ; เป็นจังหวะที่ดี สำหรับการวางกรอบ "ทำไมต้องต้นทุนต่อคำตอบที่ถูกต้อง") ตารางเต็มปกติใช้เวลา 35–45 นาทีและควรรันไว้ล่วงหน้าหรือปล่อยให้เป็นงานที่ทำตามจังหวะตัวเอง
- 4 min — เปิด Leaderboard อ่านผู้ชนะ เอ่ยชื่อ
config_id
แนวการพูด
- วางกรอบเรื่องนี้ว่าเป็นการตัดสินใจที่เป็นรากฐานของเวิร์กช็อป อย่างแท้จริง: โมเดลไหนเป็นเครื่องยนต์ของ agent ตัดสินด้วยหลักฐานแทน leaderboard สาธารณะที่คนอื่นรันบนงาน อีกแบบ
- เน้นว่าการให้คะแนนเกิดขึ้นที่ไหน: ภายใน Langfuse ไม่ใช่ภายใน harness harness เป็นตัวประสานตารางและบันทึก Experiment Item ให้ครบ; leaderboard อ่านมันผ่าน Langfuse Public API นี่คือโปรเจกต์ Langfuse เดียวกับที่ เชื่อมต่อไว้ในโมดูล 00 — ไม่มีเครื่องมือใหม่หรือที่เก็บผลลัพธ์ที่สองถูกนำเข้ามาตรงนี้
- อธิบายจำนวน item ให้ชัด: repo มีคำถาม YAML 20 ข้อ แต่
q019และq020เป็น few-shot holdout ดังนั้น dataset experimentarena-goldenที่สะอาดมี 18 item - เอ่ยชื่อเมตริกหลักให้ชัดและบอกว่าทำไมมันไม่ใช่ความแม่นยำดิบ: ต้นทุนต่อคำตอบ
ที่ถูกต้อง — คุณภาพต่อเงินหนึ่งดอลลาร์สำหรับงานเฉพาะนี้ ชี้ให้เห็นว่าต้นทุนคำนวณ
จากราคา จริง ของ OpenRouter ที่รีเฟรชตอนเริ่มการรันแต่ละครั้ง ไม่ใช่ตัวเลขเก่า
ที่ฝังไว้ใน
config.yaml - แสดงคำศัพท์ของตารางบนจอ: หกโมเดลแบ่งเป็น proprietary กับ open-weight
(
claude-sonnet-5,gpt-5.6-luna,gemini-flash-lite/deepseek-v4-flash,qwen3.7-flash,glm-4.7-flash) × prompt (P1_zeroshot…P3_dialect) และบอกว่าconfig_idคือ<model>__<prompt> - คลิกสด ๆ จากแถวใน Leaderboard เข้าไปในผลลัพธ์รายคำถาม แล้วเข้าไปใน Langfuse trace ที่อยู่เบื้องหลัง — นี่คือนิสัยการเจาะลึกที่โมดูล 02 จะลงลึก
- ปิดท้ายที่ผู้ชนะและพูด
config_idของมันออกมาดัง ๆ — ทุกโมดูลจากนี้ไป จะอ้างกลับมาที่มัน
ความล้มเหลวที่พบบ่อย
- ไม่ได้ตั้งค่า Langfuse evaluator — harness รอแค่ถึง
--eval-timeout(ค่าเริ่มต้น 180s) แล้วออกด้วยสถานะไม่เป็นศูนย์และบอกชื่อคะแนนที่ขาดไป มันรอ score ชื่อตรงเป๊ะว่าagent-arena-llm-judgeซึ่งปล่อยจาก evaluator definitionllm_judgeรันpython -m scripts.provision_langfuse_evaluatorsสำหรับ judge ที่ใช้ OpenRouter แก้ target/ตัวกรองของ evaluator correctness แล้วรันตารางเล็ก ๆ สองโมเดล หนึ่ง prompt ด้วย--run-idใหม่; ไม่มีทางสำรองแบบเก็บผลในเครื่องโดยเจตนา เพราะ Langfuse เป็นที่เก็บการประเมิน OPENROUTER_API_KEYที่เป็น placeholder — ทุกการเรียกในตารางล้มเหลวด้วย401ยืนยันเรื่องนี้ในโมดูล 00 แต่ถ้ามันหลุดรอดมา นี่คือจุดที่มันจะ ปรากฏชัด: การรันทั้งครั้งที่มีคำตอบถูกศูนย์ข้อในทุกคอนฟิก- model slug เลื่อนออกจากแคตาล็อกของ OpenRouter —
idของโมเดลในconfig.yaml(เช่นanthropic/claude-sonnet-5) ถูกตรึงไว้กับสิ่งที่ยังใช้งานได้บน OpenRouter ตอน เขียน; OpenRouter เลิกใช้/เปลี่ยนชื่อ slug ถ้าคอนฟิกหนึ่งพัง ทันทีด้วยความล้มเหลวแนว "model not found" ให้ตรวจhttps://openrouter.ai/api/v1/modelsเพื่อดู slug ปัจจุบันแล้วเทียบกับconfig.yamlendpoint/api/modelsของ dashboard สะท้อนแคตาล็อกจริง ดังนั้นการที่ ตรงนั้นไม่ตรงกันเป็นทางเร็วในการจับการเลื่อนก่อนจะรัน harness - ยังไม่ได้ seed ClickHouse — ถ้าโมดูล 00 ไม่จบอย่างสะอาด query ของ harness
ที่ยิงไปที่ view
v_*จะคืนผลว่างเปล่าหรือ error; ทุกคอนฟิกจะกลับมาด้วยoutcomeเดียวกัน ให้รันscripts/arena.sh upใหม่ - การรันดูเหมือนค้าง — ตารางคือ
models × prompts(6 × 3 = 18 คอนฟิกโดยค่าเริ่มต้น); มันอาจใช้เวลาหลายนาทีตั้งแต่ต้นจนจบ ใช้--models/--promptsเพื่อย่อมันสำหรับ การเดโมสด (ดูขั้นตอนรีเซ็ต)
ขั้นตอนรีเซ็ต
- ยืนยันว่า ClickHouse ถูก seed แล้ว:
scripts/arena.sh up(idempotent; รันซ้ำได้ปลอดภัย) - รันชุดย่อยราคาถูกแทนตารางเต็ม:
python -m eval.harness --run-id demo2 --models qwen3.7-flash,gpt-5.6-luna --prompts P1_zeroshot,P3_dialect - ให้
--run-idใหม่กับการรันครั้งใหม่เสมอ (เช่นdemo2,demo3) เพื่อให้มันปรากฏเป็น ชุดแถวของตัวเองบน Leaderboard และเป็น Experiment ของตัวเองใน Langfuse แทนที่จะ ผสมเข้าไปในการรันครั้งก่อน - ถ้า Langfuse evaluator เป็นตัวขวาง ให้ตรวจว่าทั้งคู่ target ไปที่ Experiments และมีตัวกรอง
dataset เป็น
arena-goldenแล้วรันชุดย่อยราคาถูกด้านบนซ้ำด้วย--run-idใหม่ - ถ้าตัว dashboard เองดูติดขัด (ไม่ใช่ harness) การใช้
scripts/arena.sh stopแล้วscripts/arena.sh serveจะรีสตาร์ตเฉพาะเซิร์ฟเวอร์ในเครื่องโดยไม่แตะข้อมูลที่ seed ไว้