ประเด็นสำคัญ
- Context windows combine prompt and completion, so long histories drain limits faster than expected.
- การสตรีมต้องการการจัดการเหตุการณ์ SSE อย่างระมัดระวังเพื่อหลีกเลี่ยง JSON ที่เสียหายหรือโทเค็นที่สูญหาย
- JSON mode demands strict schema adherence; malformed responses cause silent parsing failures.
- การเรียกเก็บเงินด้วยคริปโตแบบเติมเงินหมายถึงข้อผิดพลาดไม่ต้องเสียเงิน แต่การนับโทเค็นต้องแม่นยำเพื่อหลีกเลี่ยงความไม่คาดคิด
ทำไมคีย์ API ของคุณอาจถูกปฏิเสธ
คีย์ API จะถูกปฏิเสธเมื่อไคลเอนต์ส่งส่วนหัวที่ผิดรูปแบบหรือเกินขีดจำกัดขนาดของ body ในคำขอ เซิร์ฟเวอร์จะตรวจสอบส่วนหัวการตรวจสอบสิทธิ์ก่อนดำเนินการตรรกะใดๆ หากส่วนหัวหายไปหรือมีช่องว่างเพิ่มเติม คำขอจะล้มเหลวทันที
สาเหตุทั่วไปอีกอย่างหนึ่งคือการส่ง payload ที่มีขนาดเกินกว่าขีดจำกัดขนาด body 8 MB หน้าต่างบริบทขนาดใหญ่ที่มีข้อความจำนวนมากสามารถเกินขีดจำกัดนี้ได้ง่าย ตรวจสอบความยาวของอาร์เรย์ข้อความและจำนวนโทเค็นก่อนส่ง
- ตรวจสอบให้แน่ใจว่าส่วนหัว Authorization ใช้คำนำหน้า 'Bearer' อย่างถูกต้อง
- Verify the request body size stays under 8 MB.
- ตรวจสอบว่าคีย์ API ยังใช้งานอยู่และไม่หมดอายุ
ทำความเข้าใจขีดจำกัดของหน้าต่างบริบท
หน้าต่างบริบทประกอบด้วยทั้ง prompt ที่ป้อนเข้าและ completion ที่สร้างขึ้นมา API ของเรารองรับหน้าต่างขนาด 100,000 token แต่คุณต้องคำนวณทั้งสองฝั่ง หากคุณส่ง context ขนาด 80,000 token คุณจะเหลือพื้นที่สำหรับ response เพียง 20,000 token
โมเดลส่วนใหญ่จะกำหนดขีดจำกัดผลลัพธ์ขนาดเล็กเป็นค่าเริ่มต้นหากคุณไม่ได้ระบุ max_tokens สิ่งนี้อาจทำให้คำตอบที่ยาวถูกตัดไปโดยไม่ได้ตั้งใจ ตั้งค่า max_tokens เป็นความยาวที่ต้องการก็ต่อเมื่อคุณต้องการกำหนดขีดจำกัดเท่านั้น โปรดจำไว้ว่าขีดจำกัดนี้ใช้กับคำขอทั้งหมด ไม่ใช่แค่ส่วน prompt
การจัดการการหยุดชะงักของการสตรีมอย่างถูกต้อง
การสตรีมผ่าน Server-Sent Events (SSE) จำเป็นต้องมีกลไกการจัดการข้อผิดพลาดที่แข็งแกร่ง หากการเชื่อมต่อขาดหาย คุณอาจสูญเสียโทเค็นสุดท้ายหรือข้อมูลเมตาการใช้งาน ควรเก็บข้อมูลแบบบัฟเฟอร์สำหรับชิ้นข้อมูลที่เข้ามาแล้วสร้างการตอบสนองแบบเต็มรูปแบบที่ฝั่งไคลเอนต์
ข้อมูลการใช้งานโทเค็นมักจะส่งในชิ้นสุดท้ายของสตรีม หากคุณปิดการเชื่อมต่อเร็วเกินไป คุณอาจพลาดจำนวนโทเค็นที่ถูกต้อง สิ่งนี้ส่งผลต่อความแม่นยำในการเรียกเก็บเงินในระบบที่เติมเงินล่วงหน้า ควรใช้กลไกการลองใหม่พร้อมการถอยหลังแบบเอกซ์โพเนนเชียลเพื่อจัดการกับปัญหาเครือข่ายชั่วคราว
ใช้ไคลเอนต์สตรีมมิ่งเฉพาะทางที่จัดการการแยกวิเคราะห์ SSE โดยอัตโนมัติ ซึ่งช่วยลดความเสี่ยงของข้อผิดพลาดในการแยกวิเคราะห์ และช่วยให้แน่ใจว่าคุณสามารถรับข้อมูลทั้งหมดได้
ข้อผิดพลาดในการแยกวิเคราะห์โหมด JSON
เมื่อใช้ response_format: {"type": "json_object"} โมเดลจะต้องคืนค่า JSON ที่ถูกต้อง การเบี่ยงเบนจากข้อกำหนดนี้จะทำให้เกิดข้อผิดพลาดในการแยกวิเคราะห์ JSON ในแอปพลิเคชันของคุณ ตรวจสอบให้แน่ใจว่า prompt ของคุณระบุชัดเจนว่าโมเดลต้องแสดงผลเฉพาะ JSON เท่านั้น
บางครั้งโมเดลจะรวมบล็อกโค้ด markdown ไว้รอบ JSON ซึ่งทำให้ตัวแยกวิเคราะห์แบบเข้มงวดทำงานผิดพลาด ให้ลบตัวห่อ ออกก่อนทำการแยกวิเคราะห์ นอกจากนี้ ให้ตรวจสอบโครงสร้าง JSON ทางฝั่งไคลเอนต์ก่อนนำข้อมูลไปใช้
ใช้ไลบรารีตรวจสอบสคีมาเพื่อจับข้อผิดพลาดได้เร็วขึ้น สิ่งนี้ช่วยป้องกันโปรแกรมขัดข้องเมื่อโมเดลส่งคีย์หรือประเภทข้อมูลที่คาดไม่ถึงกลับมา
การนับโทเค็นและการเรียกเก็บเงินที่คาดไม่ถึง
การเรียกเก็บเงินแบบเติมเงินจะคิดเฉพาะการใช้งานโทเค็นจริง ๆ เท่านั้น ข้อผิดพลาดและการปฏิเสธจะฟรี ซึ่งเป็นข้อได้เปรียบที่สำคัญเมื่อเทียบกับแบบสมัครสมาชิก อย่างไรก็ตาม การนับโทเค็นอาจซับซ้อนหากไม่ได้คำนึงถึงบริบททั้งหมด
ข้อความแต่ละข้อความในประวัติการสนทนาจะถูกนับรวมในขีดจำกัดโทเค็นอินพุต การสนทนาที่ยาวนานจะทำให้เครดิตแบบเติมเงินของคุณหมดลงเร็วกว่าที่คุณคิด ควรตรวจสอบการใช้งานของคุณอย่างสม่ำเสมอเพื่อหลีกเลี่ยงการหมดเครดิตระหว่างเซสชัน
ตั้งค่าการแจ้งเตือนสำหรับยอดเครดิตต่ำ เพื่อให้คุณสามารถเติมเงินก่อนที่คำขอของคุณจะล้มเหลว โปรดจำไว้ว่าเครดิตไม่มีวันหมดอายุ ดังนั้นคุณสามารถเติมเงิน whenever สะดวก
การหลีกเลี่ยงการปฏิเสธแบบอ่อนในคำสั่ง NSFW
การปฏิเสธแบบอ่อนเกิดขึ้นเมื่อโมเดลลังเลหรือให้คำตอบบางส่วนแทนที่จะตอบตรงๆ ซึ่งมักเกิดขึ้นกับหัวข้อที่อ่อนไหวหรือผู้ใหญ่ แม้ในโมเดลแบบไม่เซ็นเซอร์ การกระตุ้นบางประการก็อาจทำให้โมเดลลังเลได้
ปรับพารามิเตอร์ temperature เพื่อลดความสุ่ม อุณหภูมิที่ต่ำกว่าทำให้โมเดลมีความเป็น Deterministic มากขึ้นและลดโอกาสในการพูดเลี่ยง Also, ensure your prompt is clear and direct. หลีกเลี่ยงการใช้ภาษาคลุมเครือที่อาจทำให้โมเดลสับสน
หากคุณพบการปฏิเสธแบบนุ่มนวลบ่อยครั้ง ลองปรับแก้คำสั่งเล็กน้อย การเปลี่ยนแปลงเล็กน้อยในถ้อยคำมักจะสามารถหลีกเลี่ยงความลังเลและได้รับคำตอบโดยตรงได้
การเพิ่มขึ้นของอัตราจำกัดและการใช้กลยุทธ์การถอยหลัง
API อนุญาตให้ส่งคำขอได้ 300 คำขอต่อนาที และคำขอพร้อมกันได้ 8 คำขอต่อคีย์ การเพิ่มขึ้นของปริมาณการใช้งานอย่างรวดเร็วอาจทำให้ถึงขีดจำกัดเหล่านี้ได้ ควรใช้การถอยหลังแบบเอกซ์โพเนนเชียล (exponential backoff) เพื่อจัดการข้อผิดพลาดจากอัตราจำกัดคำขออย่างราบรื่น
เมื่อคุณได้รับรหัสสถานะ 429 ให้รอสักครู่ก่อนลองใหม่ เริ่มด้วยการหน่วงเวลาสั้นๆ แล้วเพิ่มระยะเวลาขึ้นในแต่ละครั้งที่จะลองใหม่ วิธีนี้ช่วยป้องกันไม่ให้เซิร์ฟเวอร์รับภาระหนักในช่วงเวลาที่มีผู้ใช้จำนวนมาก
ตรวจสอบอัตราคำขอของคุณและปรับระดับความพร้อมใช้งานตามความเหมาะสม หากคุณกำลังส่งคำขอพร้อมกันจำนวนมาก ให้พิจารณากระจายคำขอเหล่านั้นตามเวลา เพื่อให้ได้ปริมาณงานที่สม่ำเสมอโดยไม่เกินขีดจำกัด
โครงสร้าง payload ของการเรียกใช้ฟังก์ชัน
การเรียกใช้ฟังก์ชันต้องมีโครงสร้าง payload เฉพาะ กำหนดฟังก์ชันของคุณในพารามิเตอร์ tools และระบุ tool_choice โมเดลจะส่งการเรียกใช้ฟังก์ชันกลับหากมันตัดสินว่าการกระทำนั้นเหมาะสม
ตรวจสอบให้แน่ใจว่านิยามฟังก์ชันของคุณถูกต้องและสมบูรณ์ การขาดพารามิเตอร์หรือประเภทที่ผิดพลาดอาจทำให้โมเดลสร้างการเรียกใช้ที่ไม่ถูกต้อง ควรตรวจสอบอาร์กิวเมนต์ของการเรียกฟังก์ชันก่อนดำเนินการเสมอ
ใช้พารามิเตอร์ tool_choice เพื่อควบคุมเวลาที่โมเดลจะเรียกใช้ฟังก์ชัน คุณสามารถบังคับให้เรียกใช้ฟังก์ชัน, ให้โมเดลตัดสินใจ, หรือปิดการใช้งานฟังก์ชันทั้งหมด ซึ่งสิ่งนี้ให้คุณสามารถควบคุมพฤติกรรมของโมเดลได้อย่างละเอียด
การแก้ปัญหาข้อผิดพลาด 400 เทียบกับ 500
ข้อผิดพลาด 400 บ่งชี้ถึงปัญหาฝั่งไคลเอนต์ เช่น JSON ไม่ถูกต้องหรือขาดพารามิเตอร์ ข้อผิดพลาด 500 ชี้ให้เห็นถึงปัญหาฝั่งเซิร์ฟเวอร์ เช่น ข้อผิดพลาดภายในหรือการหมดเวลา การแยกแยะระหว่างทั้งสองช่วยให้คุณแก้ไขข้อผิดพลาดได้เร็วขึ้น
สำหรับข้อผิดพลาด 400 ให้ตรวจสอบข้อความแสดงข้อผิดพลาดที่ระบุไว้ในคำตอบ โดยปกติแล้วข้อความนี้จะชี้ให้เห็นถึงปัญหาโดยตรง สำหรับข้อผิดพลาด 500 ให้ลองส่งคำขออีกครั้งหลังจากเว้นระยะเวลาสั้นๆ หากข้อผิดพลาดยังคงอยู่ ให้ติดต่อฝ่ายสนับสนุนพร้อมระบุ ID ของคำขอนั้น
บันทึกทั้งรายละเอียดคำขอและรายละเอียดการตอบกลับสำหรับข้อผิดพลาดแต่ละครั้ง สิ่งนี้ช่วยระบุรูปแบบและปัญหาที่ซ้ำซ้อน ใช้บริการบันทึกข้อมูลเพื่อติดตามข้อผิดพลาดตามเวลาและปรับปรุงการผสานรวม API ของคุณ