ทำไมผมถึงเลิกพึ่งพาผู้ให้บริการ AI เพียงรายเดียว

ผมสร้างแชทบอทแบบเรียลไทม์สำหรับฟอรัมชุมชนแห่งหนึ่ง โดยใช้เพียง OpenAI API เท่านั้น มันดูเหมือนจะเป็นเรื่องง่าย

สามสัปดาห์ต่อมา ผมเจอกับข้อผิดพลาด 5xx ในช่วงเวลาที่มีการใช้งานสูงสุด แชทบอทของผมหยุดทำงาน ผู้ใช้เริ่มไม่พอใจ ผมจึงตระหนักได้ว่าผมไม่สามารถไว้ใจผู้ให้บริการเพียงรายเดียวสำหรับแอปพลิเคชันที่ใช้งานจริง (production) ได้

ผมเผชิญกับปัญหาหลายอย่างจากการใช้ผู้ให้บริการเพียงรายเดียว:

ผมลองใช้ผู้ให้บริการรายอื่นแล้ว แต่พวกเขาทุกรายต่างก็มีรูปแบบและวิธีการยืนยันตัวตน (authentication) ที่แตกต่างกัน ทำให้โค้ดของผมกลายเป็นชุดคำสั่ง switch-case ที่ยุ่งเหยิงไปหมด

ผมต้องการระบบที่สามารถ:

ผมหลีกเลี่ยงการใช้ไลบรารีจากบุคคลที่สาม (third-party libraries) เพราะมันมีความตายตัวเกินไป แต่ผมเลือกสร้างระบบ fallback แบบกำหนดเองโดยใช้การออกแบบที่เรียบง่ายแทน

ขั้นแรก ผมสร้างอินเทอร์เฟซ (interface) กลางสำหรับผู้ให้บริการทั้งหมด สิ่งนี้ช่วยให้โมเดล AI ใดๆ ก็ตามสามารถทำงานร่วมกับโค้ดชุดเดียวกันได้

ต่อมา ผมสร้าง router class ขึ้นมา คลาสนี้จะพยายามเรียกใช้ผู้ให้บริการตามลำดับ โดยใช้เทคนิค exponential backoff และการทำแคชแบบง่ายๆ เพื่อจัดการกับความล้มเหลว

นี่คือตรรกะการทำงาน:

ระบบนี้ช่วยรักษาโปรเจกต์ของผมไว้ได้ในช่วงที่ระบบล่มสามครั้งล่าสุด โดยที่ยังคงความโปร่งใสและเรียบง่าย

หากคุณกำลังพัฒนาแอปด้วย AI โปรดจำประเด็นเหล่านี้ไว้:

อย่าทำอะไรที่ซับซ้อนเกินความจำเป็น (over-engineer) หากโปรเจกต์ของคุณยังมีขนาดเล็ก แต่ถ้าบริการของคุณต้องพึ่งพา uptime ตลอดเวลา จงสร้างระบบ fallback ไว้

คุณจัดการกับความน่าเชื่อถือของผู้ให้บริการในโปรเจกต์ของคุณอย่างไร? คุณใช้เลเยอร์ fallback หรือพึ่งพาผู้ให้บริการเพียงรายเดียว?

Source: https://dev.to/__c1b9e06dc90a7e0a676b/why-i-stopped-relying-on-a-single-ai-provider-and-built-a-fallback-system-1pc0