เลิก 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