เลิก Hardcode การเรียกใช้ AI API ของคุณ

ผมเลิกใช้วิธี Hardcode การเรียกใช้ AI API แล้ว เพราะมันทำให้การดูแลรักษา (maintenance) กลายเป็นฝันร้าย

ผมเริ่มจาก OpenAI ต่อมาลูกค้าต้องการ Claude ผมมีฟังก์ชันหนึ่งสำหรับ OpenAI การจะเพิ่มผู้ให้บริการ (provider) รายอื่นหมายถึงต้องคัดลอกโค้ดไปเรื่อยๆ

ผมลองใช้ environment variables แล้ว แต่โค้ดก็กลายเป็นกอง if-else ที่ยุ่งเหยิง ผมต้องการ interface กลาง

ผมจึงสร้าง abstraction layer ขึ้นมา โดยใช้ Strategy pattern

มันทำงานแบบนี้:

  • สร้าง base class สำหรับ providers
  • เขียน class เฉพาะสำหรับแต่ละ API
  • ให้แอปเรียกใช้งานผ่าน base class

แอปของคุณจะไม่ต้องสนใจว่าใช้ backend ตัวไหนอยู่

ข้อดี:

  • เพิ่ม provider ใหม่ๆ ได้ง่าย
  • ทดสอบด้วย mock providers ได้

ข้อเสีย:

  • มันอาจจะเกินความจำเป็น (overkill) หากใช้เพียง provider เดียว
  • คุณจะเสียฟีเจอร์เฉพาะตัวของแต่ละ API ไป
  • การทำ error mapping ต้องใช้ความพยายามเพิ่มขึ้น

คำแนะนำของผม: เริ่มจากใช้ concrete provider เพียงรายเดียวไปก่อน แล้วค่อย Refactor เมื่อคุณต้องเพิ่มรายที่สอง

สิ่งนี้ช่วยให้ผมไม่ต้องเขียนโค้ดใหม่ทั้งหมด

แล้วคุณล่ะ จัดการกับ AI providers หลายๆ เจ้าอย่างไร?

Source: https://dev.to/__c1b9e06dc90a7e0a676b/why-i-stopped-hardcoding-ai-api-calls-and-built-a-simple-abstraction-layer-27me Optional learning community: https://t.me/GyaanSetuAi