TH ▾

API Gateway คืออะไร: หลักการทำงาน ความเสี่ยงทั่วไป และรายการเลือกซื้อ

นักพัฒนาจำนวนมากเมื่อเริ่มใช้ “API Gateway” รู้เพียงว่าเปลี่ยน URL และคีย์ก็สามารถเรียกใช้โมเดลขนาดใหญ่ได้ แต่ไม่สามารถอธิบายสิ่งที่เกิดขึ้นระหว่างทางได้ บทความนี้จะแยกวิเคราะห์เส้นทางของคำขอหนึ่งครั้งจากมุมมองของ DevOps อธิบายเรื่อง การส่งต่อ การจัดการคีย์ และการคิดเงิน พร้อมระบุสามความเสี่ยงที่พบบ่อยและรายการเลือกซื้อ สุดท้ายให้คำสั่งสองคำสั่งให้คุณตรวจสอบด้วยตนเอง

อัปเดตล่าสุด

สรุปสำคัญ

  1. แก่นแท้ของ Gateway คือ “代理转发 + คีย์แมปปิ้ง + การบันทึกการใช้งาน” คำขอของคุณจะผ่านอีกจุดหนึ่ง ความเสถียรและความปลอดภัยจึงขึ้นอยู่กับจุดนั้น
  2. สามความเสี่ยงที่พบบ่อย: การเก็บคีย์ไม่ปลอดภัย โมเดลที่ส่งกลับมาไม่ใช่โมเดลที่คุณคิด และกฎการจำกัดอัตราที่ไม่ระบุในเอกสาร
  3. อย่าดูแค่ราคาต่อหน่วย แต่ต้องดูว่ารายการโมเดลตรวจสอบได้ รหัสข้อผิดพลาดเป็นมาตรฐานหรือไม่ และกำหนดการส่งคำขอพร้อมขีดจำกัดอัตราถูกระบุชัดเจนหรือไม่
  4. หลังจากได้คีย์ ให้ทดสอบ /v1/models และคำขอขนาดเล็กภายในสิบนาทีเพื่อตัดปัญหาส่วนใหญ่

เส้นทางที่คำขอหนึ่งครั้งเดินทางผ่านใน Gateway

มาทำความเข้าใจคำศัพท์กันก่อน “API Gateway” คือเกตเวย์ที่เปิดเผย API มาตรฐานซึ่งวางอยู่ระหว่างโปรแกรมของคุณและแบ็กเอนด์ที่รันโมเดลจริง โค้ดของคุณยังคงส่งคำขอในรูปแบบ OpenAI แต่เปลี่ยน base_url เป็นที่อยู่ของเกตเวย์ และเปลี่ยนคีย์เป็นคีย์ที่เกตเวย์มอบให้

เกตเวย์มักทำสามสิ่งในจุดนี้

  • การส่งต่อคำขอ: ตรวจสอบรูปแบบ body ของคำขอ เติมพารามิเตอร์เริ่มต้นหากจำเป็น แล้วส่งคำขอไปยังแบ็กเอนด์; เนื้อหาที่แบ็กเอนด์ส่งกลับ (รวมถึง SSE chunks แบบสตรีมมิง) จะถูกส่งคืนให้คุณแบบตรงไปตรงมาหรือผ่านการปรับแต่งเล็กน้อย
  • การแมปคีย์: คุณถือคีย์ที่เกตเวย์ออกให้ ซึ่งมีความหมายเฉพาะในเกตเวย์เท่านั้น เกตเวย์ใช้คีย์นี้ระบุตัวตน ยอดเงิน และโมเดลที่คุณสามารถเรียกใช้ได้; หลักฐานที่ใช้ติดต่อกับแบ็กเอนด์จริงจะเก็บไว้ภายในเกตเวย์ ไม่ปรากฏในโค้ดของคุณ
  • การคิดเงินและจำกัดอัตรา: หลังจากคำขอเสร็จสิ้น เกตเวย์จะหักเงินตามจำนวน input และ output token ใน usage คูณกับราคาต่อหน่วย พร้อมนับจำนวนคำขอต่อนาทีตามคีย์ และส่งกลับรหัส 429 หากเกินขีดจำกัด

หากเชื่อมโยงสามสิ่งนี้เข้าด้วยกัน คุณจะเข้าใจว่าทำไมประสบการณ์การใช้งาน API Gateway จึงแตกต่างกันมาก: การใช้งานชั้นการส่งต่อเป็นตัวกำหนดความไม่คงที่ของเวลาแฝงและความเสถียรของสตรีมมิง ชั้นคีย์กำหนดขอบเขตความเสียหายหากคีย์รั่วไหล และชั้นการคิดเงินกำหนดว่าบิลมีความโปร่งใสและตรวจสอบได้หรือไม่

แตกต่างจากการเชื่อมต่อตรงกับโมเดลเดียวอย่างไร

บริการเชื่อมต่อตรงหมายถึงการที่คุณส่งคำขอไปยังโดเมนทางการของผู้ให้บริการโมเดลโดยตรง โดยปกติหนึ่งบัญชีจะสอดคล้องกับชุดโมเดล ชุดกฎการคิดเงิน และเอกสารหนึ่งชุด บริการ Gateway มีสองรูปแบบทั่วไป ซึ่งแตกต่างกันที่ “สิ่งที่เชื่อมต่ออยู่ด้านหลัง”

มิติบริการโมเดลเดียวแบบเชื่อมต่อตรงAPI Gateway แบบรวมกลุ่มGateway โมเดลเดียว
จำนวนโมเดลไม่กี่ตัวจากผู้ให้บริการเองหลายสิบถึงหลักร้อยตัวหนึ่งตัว
รูปแบบ APIแต่ละเจ้ามีรูปแบบของตัวเองรวมเป็นรูปแบบที่เข้ากันได้กับ OpenAIเข้ากันได้กับ OpenAI
ความยากในการแก้ไขข้อผิดพลาดต่ำสุด เส้นทางสั้นที่สุดสูงสุด มีการแมปชื่อโมเดลหลายตัวความเสี่ยงต่ำ มีเพียงโมเดลเดียว
สถานการณ์ที่เหมาะสมธุรกิจที่พึ่งพาผู้ให้บริการเพียงเจ้าเดียวอย่างเสถียรต้องการเปลี่ยนโมเดลเพื่อเปรียบเทียบบ่อยครั้งโมเดลคงที่ มุ่งเน้นความคาดการณ์ได้

หากธุรกิจของคุณพึ่งพาโมเดลเพียงโมเดลเดียว ข้อดีของการรวมกลุ่มก็อาจไม่เกิดขึ้น และคุณอาจต้องเผชิญกับความไม่แน่นอนว่า 'โมเดลชื่ออะไรตรงกับโมเดลของใคร' ในทางกลับกัน หากคุณเปลี่ยนโมเดลเพื่อทดสอบเปรียบเทียบทุกสัปดาห์ API Gateway แบบรวมกลุ่มจะช่วยลดงานในการปรับให้เข้ากันได้ ไม่มีข้อดีข้อเสียที่ชัดเจนที่สุด สิ่งสำคัญคือต้องเข้าใจว่าธุรกิจของคุณอยู่ในประเภทใด

เว็บไซต์นี้จัดอยู่ในประเภทสุดท้าย: ให้บริการโมเดลเพียงโมเดลเดียว โดยมีโมเดล id คือ uncensored และอินเทอร์เฟซเป็นแบบการเติมบริบทที่เข้ากันได้กับ OpenAI การอภิปรายเกี่ยวกับข้อแลกเปลี่ยนและต้นทุนประเภทนี้ สามารถอ่านเพิ่มเติมได้ที่ ต้นทุนและการแลกเปลี่ยนของ API AI แบบไม่มีข้อจำกัด

สามความเสี่ยงที่พบบ่อย

ความปลอดภัยของคีย์

คีย์ Gateway เทียบเท่ากับบัตรเติมเงิน ใครถือไปได้ก็สามารถใช้เงินของคุณได้ เส้นทางรั่วไหลที่พบบ่อยได้แก่: การเขียนคีย์ลงในโค้ด frontend การ commit ลงใน repository สาธารณะ การวางแปะในตั๋วสนับสนุนหรือภาพหน้าจอแชทกลุ่ม แนะนำให้เก็บไว้ในตัวแปรสภาพแวดล้อมของเซิร์ฟเวอร์เท่านั้น และให้ frontend ส่งผ่าน backend ของคุณเอง; เมื่อสงสัยว่ารั่วไหลให้รีเซ็ตทันที โดยคีย์เก่าควรหมดอายุทันที นอกจากนี้ควรตรวจสอบว่าบริการอนุญาตให้คุณรีเซ็ตด้วยตนเองหรือไม่ และหลังจากรีเซ็ตคีย์เก่าจะหมดอายุทันทีหรือไม่ หรือต้องรอ “หลายชั่วโมงจึงจะมีผล”

โมเดลถูกเปลี่ยน

นี่เป็นปัญหาที่พบบ่อยที่สุดในบริการแบบรวมกลุ่ม: คุณร้องขอ A แต่ได้รับ B ที่มีราคาถูกกว่า ซึ่งยากที่จะประเมินจากเอกสารเพียงอย่างเดียว ต้องตรวจสอบผ่านการทดสอบพฤติกรรม คุณสามารถกำหนดชุดคำถามขนาดเล็กที่มีคำตอบมาตรฐานและใช้ temperature คงที่เพื่อทดสอบซ้ำ โดยสังเกตว่ารูปแบบการตอบสนองมีความเสถียรหรือไม่ หรือขอ /v1/models เพื่อตรวจสอบว่ารายการตรงกับหน้าการคิดเงินหรือไม่ หากชื่อโมเดลคลุมเครือหรือโมเดลชื่อเดียวกันให้ผลลัพธ์ที่แตกต่างกันมากในเวลาที่ต่างกัน ก็ควรระวังไว้

การจำกัดอัตราที่ไม่โปร่งใส

บางบริการในเอกสารเขียนเพียงว่า “ใช้ตามความเหมาะสม” แต่ในความเป็นจริงจะลดความเร็วลงอย่างเงียบๆ หรือตัดคำขอในชั่วโมงเร่งด่วน ทำให้โปรแกรมของคุณแสดงอาการ timeout เป็นครั้งคราว วิธีที่成熟คือการระบุจำนวนคำขอต่อนาทีสำหรับแต่ละคีย์ และส่งกลับรหัส 429 ที่เป็นมาตรฐานเมื่อเกินขีดจำกัด แทนที่จะปล่อยให้การเชื่อมต่อค้างอยู่ ควรสอบถามให้ชัดเจนเมื่อเลือกซื้อ: การจำกัดอัตราคำนวณตามคีย์หรือตามบัญชี เมื่อเกินขีดจำกัดจะส่งกลับอะไร และเมื่อเงินหมดจะส่งกลับรหัสข้อผิดพลาดแยกต่างหากหรือไม่

รายการตรวจสอบการเลือกบริการพร็อกซี

รายการด้านล่างนี้สามารถคัดลอกไปใส่ในเอกสารการประเมินของคุณได้โดยตรง แล้วทำเครื่องหมายถูกทีละข้อ

  1. มีการเปิดใช้งาน GET /v1/models หรือไม่ โดยรายการโมเดลที่ส่งกลับต้องตรงกับหน้ากำหนดราคา
  2. การตอบกลับข้อผิดพลาดเป็น JSON ที่มีโครงสร้าง มี code และ message โดย 401, 402, 429 และ 503 แยกกันชัดเจนหรือไม่
  3. ขีดจำกัดอัตราคำขอต่อนาทีต่อคีย์ API ระบุไว้ในเอกสารหรือไม่ ไม่ใช่แค่บอกผ่านฝ่ายบริการลูกค้า
  4. ความยาวของหน้าต่างบริบท, จำนวนโทเคนสูงสุดต่อครั้ง และขนาดของ body คำขอ มีตัวเลขที่ชัดเจนหรือไม่
  5. การคิดเงินหักจากโทเคนใน usage อย่างแม่นยำหรือไม่ และยอดคงเหลือสามารถตรวจสอบได้ทุกเมื่อ
  6. ยอดเงินแบบเติมเงินล่วงหน้าหมดอายุหรือไม่ และระยะเวลาของเครดิตทดลองใช้ฟรีระบุชัดเจนหรือไม่
  7. คีย์ API สามารถรีเซ็ตด้วยตนเองได้หรือไม่ และคีย์เก่าจะหมดอายุทันทีหรือไม่
  8. รองรับการสตรีมมิงหรือไม่ และมีการส่ง usage statistics มาด้วยตอนจบ เพื่อให้คุณตรวจสอบยอดเงินเอง
  9. มีการระบุชัดเจนเป็นประโยคเดียวหรือไม่ว่าพรอมต์ถูกนำไปใช้ฝึกโมเดลหรือไม่
  10. ความสามารถที่ไม่สนับสนุน (เช่น vector, image, audio) ระบุไว้ตรงตามความเป็นจริง ไม่ใช่การบอกแบบกำกวม

คะแนนเต็มอาจไม่สมจริง แต่หากตอบไม่ได้สองข้อจากห้าข้อแรก แนะนำให้ทดลองใช้ยอดเงินน้อยๆ ก่อน ไม่ควรเติมเงินยอดใหญ่ทันที

การตรวจสอบพื้นฐานสิบนาทีหลังรับคีย์ API

ไม่ว่าจะเลือกบริการใด การใช้เวลาสิบนาทีตรวจสอบพื้นฐานก่อนใช้งานจริงคุ้มค่ามาก ขั้นแรก ให้ระบุรายการโมเดลเพื่อยืนยันว่า id ที่ส่งกลับตรงกับที่คุณคาดหวัง:

curl -s https://api.llmzhongzhuan.com/v1/models \
  -H "Authorization: Bearer $API_KEY"

ขั้นที่สอง ส่งคำขอขนาดเล็ก แล้วสังเกตว่าฟิลด์ usage ในการตอบกลับมีอยู่หรือไม่ และจำนวนสมเหตุสมผลหรือไม่ ตัวอย่างด้านล่างทำให้โมเดลบอกวันที่เพื่อสังเกตว่ามีการสร้างข้อมูลเท็จหรือไม่ เป็นการตรวจสอบพฤติกรรมแบบหยาบ ไม่ใช่การประเมินที่เข้มงวด:

curl -s https://api.llmzhongzhuan.com/v1/chat/completions \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "messages": [{"role": "user", "content": "用一句话介绍你自己,然后复述今天的日期是几号。"}],
    "max_tokens": 200
  }' 

เขียนสองขั้นตอนนี้ลงในสคริปต์การปรับใช้ของคุณ แล้วรันทุกครั้งที่เปลี่ยนคีย์ API หรือเปลี่ยนบริการ หากใน response ไม่มี usage หรือตัวเลขใน usage ไม่ตรงกับความยาวของ input แสดงว่าความโปร่งใสในการคิดเงินมีปัญหา ควรทำความเข้าใจให้ชัดเจนก่อนเติมเงินจำนวนมาก หากต้องการดูวิธีการเชื่อมต่อในเฟรมเวิร์กต่างๆ สามารถดู คู่มือการตั้งค่าเฟรมเวิร์ก ได้

พารามิเตอร์ของเว็บไซต์นี้ เพื่อช่วยให้คุณเปรียบเทียบกับรายการตรวจสอบ

ที่นี่เราได้ระบุพารามิเตอร์จริงของเว็บไซต์ เพื่อให้คุณตรวจสอบรายการด้านบนทีละรายการ โดยไม่ต้องสลับไปมาระหว่างเอกสาร

  • ที่อยู่ endpoint: https://api.llmzhongzhuan.com/v1 รองรับ POST /v1/chat/completions และ GET /v1/models ใช้ Bearer คีย์ API สำหรับการตรวจสอบสิทธิ์
  • มีโมเดลเดียว id คือ uncensored; รองรับเฉพาะข้อความ ไม่มี vector, image, audio, video หรือ fine-tuning
  • หน้าต่างบริกรรวม 100,000 โทเคน (อินพุตบวกเอาต์พุต), max_tokens ค่าเริ่มต้น 2048 สูงสุดต่อครั้ง 32,000; body คำขอไม่เกิน 8 MB
  • แต่ละคีย์ API รับคำขอได้ 300 ครั้งต่อนาที หากเกินขีดจำกัดจะตอบกลับด้วย 429; 503 upstream_busy หมายถึงลองใหม่ในภายหลังได้; เมื่อเครดิตหมดหรือเครดิตทดลองใช้หมดอายุจะตอบกลับด้วย 402 no_credit
  • ราคาอินพุต 0.25 USD ต่อหนึ่งล้านโทเคน, เอาต์พุต 1.00 USD ต่อหนึ่งล้านโทเคน, เติมเงินล่วงหน้า ไม่มีสมาชิกภาพ ยอดเงินไม่หมดอายุ
  • พรอมต์ไม่ถูกนำไปใช้ฝึกโมเดล

ตัวเลขที่แน่นอนดูที่ หน้ากำหนดราคา และ เอกสาร บัญชีใหม่มีเครดิตทดลองใช้ฟรี 0.50 USD หมดอายุใน 7 วัน ไม่ต้องกรอกข้อมูลชำระเงิน สามารถใช้ยอดนี้ทดสอบขั้นตอนการตรวจสอบด้านบนได้

คำถามที่พบบ่อย

ความแตกต่างหลักระหว่างพร็อกซี API กับการเรียกใช้ API อย่างเป็นทางการโดยตรงคืออะไร?

พร็อกซีเพิ่มเกตเวย์หนึ่งชั้นระหว่างคุณกับโมเดล ทำหน้าที่ส่งต่อ, เปลี่ยนคีย์ API และคิดเงิน การเชื่อมต่อที่ยาวขึ้นแลกกับรูปแบบ API มาตรฐานและการคิดเงินที่ยืดหยุ่นยิ่งขึ้น แต่ต้องเพิ่มความไว้วางใจในความเสถียรและความซื่อสัตย์ของชั้นนี้

จะรู้ได้อย่างไรว่าบริการพร็อกซีเปลี่ยนโมเดลโดยไม่ได้แจ้ง?

ใช้คำถามคงที่และ temperature คงที่ทดสอบซ้ำเพื่อดูความเสถียรของเอาต์พุต และตรวจสอบรายการ /v1/models กับหน้ากำหนดราคาให้ตรงกัน บริการโมเดลเดียวมีความไม่แน่นอนในประเด็นนี้ต่ำกว่าเนื่องจากมี id เดียว

หากคีย์พร็อกส์รั่วไหลควรทำอย่างไร?

รีเซ็ตคีย์ API ในแดชบอร์ดทันที และยืนยันว่าคีย์ API เก่าหมดอายุทันทีหรือไม่ ในอนาคตควรเก็บคีย์ API ไว้เฉพาะในตัวแปรสภาพแวดล้อมของเซิร์ฟเวอร์ และให้ไคลเอนต์ส่งคำขอผ่านแบ็กเอนด์ของคุณเอง

เมื่อเลือกบริการพร็อกซี ควรดูอะไรบ้างเป็นอันดับแรก?

ดูที่ความสามารถในการเข้าถึงรายการโมเดลแบบสาธารณะ, รหัสข้อผิดพลาดที่เป็นมาตรฐาน, และขีดจำกัดอัตราต่อนาทีที่ระบุชัดเจน จากนั้นดูความยาวของหน้าต่างบริกรและการหมดอายุของยอดเงิน ราคาเป็นปัจจัยรอง

ควรใช้ยอดเงินเท่าไรในการทดสอบถึงจะปลอดภัย?

ควรใช้เครดิตทดลองใช้ฟรีหรือยอดเงินน้อยๆ รัน /v1/models และคำขอทั่วไปก่อน แล้วค่อยๆ เพิ่มปริมาณการใช้งาน ไม่แนะนำให้เติมเงินยอดใหญ่ตั้งแต่เริ่มต้น

กรอกแบบฟอร์มเพื่อรับคีย์ API

สร้างบัญชี, คัดลอกคีย์ API, แก้ไข Base URL การตั้งค่าง่ายเพียงเท่านี้

รับคีย์ API