การกำหนดเส้นทางแบบถ่วงน้ำหนักด้วยต้นทุน
เมื่อมีหลายโมเดลให้เลือกใช้ — Opus, Sonnet, Haiku หรือโมเดลในเครื่องที่อยู่เบื้องหลังเกตเวย์ odysseus ที่โฮสต์เอง — PRECC จะกำหนดเส้นทางแต่ละงานไปยังโมเดลที่ลดต้นทุนเป็นดอลลาร์ที่คาดหวังให้น้อยที่สุด ไม่ใช่จำนวนโทเค็น โทเค็นจากโมเดลราคาถูกและโทเค็นจากโมเดลราคาแพงนั้นมีต้นทุนไม่เท่ากัน ตัวกำหนดเส้นทางจะปรับให้ดอลลาร์เหมาะสมที่สุด ภายใต้เกณฑ์ขั้นต่ำของความสำเร็จที่วัดได้และเกณฑ์ขั้นต่ำของความสามารถต่อหมวดหมู่
หน่วยของต้นทุนคือดอลลาร์ ไม่ใช่โทเค็น
สำหรับงานในหมวดหมู่ c ในบรรดาโมเดลผู้สมัคร m ที่มีคุณสมบัติด้านความสามารถ ตัวกำหนดเส้นทางจะลดต้นทุนที่คาดหวังซึ่งถ่วงน้ำหนักด้วยราคาให้น้อยที่สุด E[$ | task, m] คือต้นทุนโทเค็นเฉลี่ยที่วัดได้ของโมเดลสำหรับหมวดหมู่นั้น คูณด้วยราคาต่อโทเค็น การรัน Haiku ที่ใช้โทเค็นมากกว่า Opus ก็ยังสามารถชนะได้ เพราะ Haiku ถูกกว่าหลายเท่าต่อโทเค็น ทุกตัวเลขในฟังก์ชันเป้าหมายล้วนเป็นค่าที่วัดได้ (ค่าเฉลี่ยโทเค็นจากออราเคิล ความสำเร็จที่บันทึกไว้ ราคาโมเดลที่เผยแพร่) หรือค่าก่อนหน้าที่ระบุป้ายกำกับไว้อย่างชัดเจน — ไม่เคยถูกกุขึ้นมา
choose argmin_m E[$ | task, m]
subject to P(success | task, m) >= min_success
capability(m) >= capability_floor(category)
การกำหนดเส้นทางของงาน
precc route "<task>" จะจัดหมวดหมู่ของงาน ใช้เกณฑ์ขั้นต่ำของความสามารถ จัดอันดับโมเดลที่มีคุณสมบัติตามดอลลาร์ที่คาดหวัง และพิมพ์การตัดสินใจออกมา ด้วย --execute มันจะส่งงานไปยังโมเดลที่เลือกผ่าน odysseus session API การตัดสินใจแต่ละครั้งยังถูกหว่านเมล็ดเข้าไปในออราเคิลการพยากรณ์ด้วย เพื่อให้สามารถบันทึกต้นทุนและผลลัพธ์ที่แท้จริงได้หลังจากที่งานทำงานเสร็จ
$ precc route "fix the broken parser"
category : fix (capability floor 0)
→ model : anthropic/claude-haiku-4-5 [Measured, confidence 0.60]
est. cost : $0.0096 (12000 tok)
reason : measured cheapest-capable for `fix` (by cost): claude-haiku-4-5
prediction : #42 (seeded; learner will auto-close after the task runs)
การประหยัดเป็นดอลลาร์
precc savings จะเพิ่มส่วนของดอลลาร์ทุกครั้งที่งานที่ถูกกำหนดเส้นทางทำเสร็จแล้ว สำหรับทุกงานที่ถูกกำหนดเส้นทาง มันจะตีราคาโทเค็นที่ใช้ไปจริงตามอัตราของโมเดลที่เลือก และเปรียบเทียบกับเส้นฐานที่ใช้โมเดลเริ่มต้นเสมอ — โดยตรึงโทเค็นไว้คงที่ มีเพียงราคาเท่านั้นที่เปลี่ยนแปลง นี่คือมุมมองแบบ “ลดต้นทุน ไม่ใช่แค่ลดโทเค็น” ส่วนนี้จะยังคงซ่อนอยู่จนกว่าจะมีข้อมูลการกำหนดเส้นทางจริง ดังนั้นมันจึงไม่แสดงแถวที่ถูกกุขึ้นมาเลย
$ precc savings
Routing cost (USD) — baseline: always claude-opus-4-5
claude-haiku-4-5 : 1 task(s) $ 0.0096 chosen vs $ 0.0600 baseline
claude-sonnet-4-6 : 1 task(s) $ 0.1200 chosen vs $ 0.2000 baseline
total : 2 task(s) $ 0.1296 chosen vs $ 0.2600 baseline
→ saved $0.1304 (50.2% of baseline spend)
วงจรป้อนกลับ
การกำหนดเส้นทางพัฒนาตัวเอง: route → execute → record → retrain การตัดสินใจกำหนดเส้นทางแต่ละครั้งถูกหว่านเมล็ดเข้าไปในออราเคิล เดมอน precc-learner ที่ทำงานเบื้องหลังจะดึงข้อความที่เสร็จสมบูรณ์มา บันทึกโทเค็น โมเดล และความสำเร็จที่แท้จริง และปิดแถวนั้น เมื่อตาราง (model, category) ถูกเติมเต็มขึ้นเรื่อย ๆ ตัวกำหนดเส้นทางจะเปลี่ยนจากค่าก่อนหน้าแบบถูกที่สุดเท่าที่มีความสามารถ ไปสู่ทางเลือกที่วัดได้ และตัวพยากรณ์โทเค็นก็จะได้มิติเฉพาะของแต่ละโมเดลเพิ่มขึ้น
การสำรวจ
เพื่อหลีกเลี่ยงการใช้ประโยชน์จากโมเดลราคาถูกตัวเดียวตลอดไปบนข้อมูลที่ล้าสมัย ตัวกำหนดเส้นทางสามารถสุ่มเลือกเซลล์ (model, category) ที่ยังสำรวจไม่เพียงพอโดยเจตนาก่อนการเลือกแบบโลภได้ การสำรวจเป็นแบบเลือกเข้าร่วม เป็นแบบกำหนดได้ (ไม่มีการสุ่ม — ฮุกต้องทำซ้ำได้) และมีขอบเขตจำกัด: มันจะไม่ข้ามเกณฑ์ขั้นต่ำของความสามารถหรือความสำเร็จที่วัดได้เลย และเพดานความเสียใจด้านราคาจะป้องกันไม่ให้มันหลงไปยังโมเดลที่แพงกว่ามาก
# ~/.config/precc/odysseus.toml
explore_n_min = 3 # sample each (model, category) cell ~3× before trusting it
explore_eps = 1.0 # allow up to 2× the cheapest price while exploring
วัดได้ ไม่เคยสมมติ
โมเดลจะถูกตัดออกเนื่องจากไม่ผ่านเกณฑ์ขั้นต่ำของความสำเร็จก็ต่อเมื่อมีหลักฐานที่วัดได้ว่าเป็นเช่นนั้นเท่านั้น — โมเดลที่ยังไม่ได้วัดจะไม่ถูกคัดออกด้วยตัวเลขที่เดาเอา เมื่อไม่มีข้อมูลสำหรับเซลล์หนึ่ง ตัวกำหนดเส้นทางจะถอยกลับไปใช้ค่าก่อนหน้าแบบถูกที่สุดเท่าที่มีความสามารถอย่างระมัดระวัง และติดป้ายกำกับการตัดสินใจนั้นว่าเป็นการเริ่มแบบเย็น ดังนั้นผู้เรียกจึงรู้เสมอว่าทางเลือกนั้นตั้งอยู่บนหลักฐานหรือบนค่าก่อนหน้า