Migration API: การแก้ปัญหาข้อผิดพลาดการผสานรวม LLM ที่พบบ่อย
การย้ายการผสานรวม LLM ของคุณมักล้มเหลวเนื่องจากข้อผิดพลาดในการกำหนดค่าที่ละเอียดอ่อนมากกว่าข้อบกพร่องในตรรกะที่ซับซ้อน คู่มือนี้กล่าวถึงกับดักที่พบบ่อยที่สุดเมื่อย้ายไปยัง API AI แบบไม่เซ็นเซอร์ใหม่ เพื่อให้แน่ใจว่าโค้ดของคุณทำงานได้อย่างน่าเชื่อถือตั้งแต่วันแรก
อัปเดตล่าสุด
สรุป
- การกำหนดค่า URL ฐานที่ไม่ถูกต้องเป็นสาเหตุทั่วไปที่สุดของความล้มเหลวในการเชื่อมต่อทันที
- การละเลย context window ขนาด 100,000-token นำไปสู่การตัดขาดแบบเงียบๆ ในการสนทนาที่ยาวนาน
- การสตรีมต้องการส่วนหัวและการจัดการเหตุการณ์เฉพาะที่การเรียกแบบซิงโครนัสมาตรฐานไม่ต้องการ
- อัตราจำกัดการใช้งาน 300 คำขอต่อนาทีต้องการตรรกะการรีเทรย์ที่แข็งแกร่งเพื่อหลีกเลี่ยงข้อผิดพลาด 429
การกำหนดค่าผิดพลาดของ Base URL
จุดล้มเหลวแรกมักจะเป็น base URL เสมอ เมื่อคุณเปลี่ยนผู้ให้บริการ คุณต้องอัปเดต endpoint ที่ SDK ของคุณติดต่ออยู่ URL ที่ผิดจะส่งผลให้เกิดข้อผิดพลาด 404 หรือ 403 ก่อนที่ payload ของคุณจะถูกส่งออกจากเครื่องของคุณ
ตรวจสอบให้แน่ใจว่าไคลเอนต์ของคุณชี้ไปที่โดเมนที่ถูกต้อง สำหรับบริการของเรา URL ฐานคือ https://api.apimigration.com/v1. URL นี้ทำงานกับ SDK ของ OpenAI มาตรฐานโดยการเปลี่ยนเพียง base_url พารามิเตอร์
- ตรวจสอบโปรโตคอล (HTTPS vs HTTP)
- ตรวจสอบการมีอยู่ของ slash ท้ายในค่ากำหนดไคลเอนต์ของคุณ
- ยืนยันว่าเส้นทางเวอร์ชัน (
/v1) ตรงกับข้อกำหนด API ของคุณ
curl https://api.apimigration.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "Run the latest migration script for the user table"}]
}'
กำลังละเว้นขีดจำกัดหน้าต่างบริบท
โมเดลของคุณมีขีดจำกัดแข็งที่ 100,000 tokens สำหรับ prompt และ completion รวมกัน หากเกินขีดจำกัดนี้ API จะปฏิเสธคำขอหรือตัดประวัติของคุณเงียบๆ ขึ้นอยู่กับการใช้งาน ควรติดตามการใช้ tokens ของคุณเสมอเพื่อหลีกเลี่ยงการชนกำแพงนี้
นอกจากนี้ เอาต์พุตสูงสุดต่อคำขอคือ 16,000 โทเค็น หากคุณไม่ได้ตั้งค่า max_tokens, ค่าเริ่มต้นคือ 2,048 tokens ความแตกต่างนี้มีนัยสำคัญสำหรับงานสร้างเนื้อหาแบบยาว
- ติดตามจำนวนโทเค็นรวมต่อคำขอ
- ตั้งค่า
max_tokensอย่างชัดเจนสำหรับเอาต์พุตที่ยาว - เพิ่มลอจิกหน้าต่างเลื่อนสำหรับการสนทนาที่ยาวมาก
from openai import OpenAI
client = OpenAI(base_url="https://api.apimigration.com/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)
การดำเนินการสตรีมที่ไม่ถูกต้อง
การตอบสนองแบบสตรีมต้องการการจัดการเหตุการณ์ที่ส่งจากเซิร์ฟเวอร์ (SSE) เฉพาะ หากคุณ treats สตรีมเป็นวัตถุ JSON เดียว โค้ดของคุณจะค้างหรือขัดข้อง แต่ละชิ้นส่วนประกอบด้วยข้อมูลบางส่วน และชิ้นส่วนสุดท้ายรวมถึงสถิติการใช้งานโทเค็น
อ่านสตรีมแบบเพิ่มทีละน้อย ประมวลผลแต่ละเหตุการณ์เมื่อมาถึง ซึ่งช่วยลดความหน่วงที่ผู้ใช้รู้สึก อย่ารอให้คำตอบทั้งหมดเสร็จสิ้นก่อนประมวลผล
- เปิดการเชื่อมต่อและอ่านทีละบรรทัด
- แยกวิเคราะห์
data:บรรทัดเป็น JSON - จัดการ
[DONE]ส่งสัญญาณได้อย่างถูกต้อง
stream = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Tell the story in second person."}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
การละเลยอัตราจำกัด
API ของเราอนุญาตให้ส่งคำขอได้ 300 คำขอต่อนาทีต่อคีย์ หากแอปพลิเคชันของคุณมีปริมาณการใช้งานพุ่งสูง คุณจะได้รับการตอบกลับข้อผิดพลาด 429 Too Many Requests คุณต้องนำไปใช้การปรับเวลาถอยหลังแบบเอกซ์โพเนนเชียล (exponential backoff) เพื่อจัดการกับข้อผิดพลาดเหล่านี้อย่างราบรื่น
คำขอพร้อมกันก็จำกัดอยู่ที่ 8 คำขอต่อคีย์ในเวลาเดียวกันเช่นกัน การเกินขีดจำกัดนี้สามารถทำให้พูลการเชื่อมต่อหมดได้ ตรวจสอบการเชื่อมต่อพร้อมกันของคุณอย่างใกล้ชิด
- เพิ่มการหน่วงเวลาแบบเอ็กซ์โพเนนเชียลสำหรับข้อผิดพลาด 429
- 将并发连接数限制为 8。
- ใช้รูปแบบ circuit breaker สำหรับโหลดสูง
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.apimigration.com/v1", apiKey: process.env.API_KEY });
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Draft a villain monologue for my game." }],
});
console.log(resp.choices[0].message.content);
สมมติรูปแบบ JSON มาตรฐาน
แม้ว่าเราปฏิบัติตามรูปแบบที่เข้ากันได้กับ OpenAI แต่การคาดเดาอาจทำให้การผสานรวมของคุณเสียหาย ตรวจสอบว่าคุณร้องขอ json_object ใน response_format if you need strict JSON. Without this, the model may return markdown or plain text.
แยกวิเคราะห์การตอบกลับอย่างระมัดระวัง ตรวจสอบโครงสร้าง JSON ก่อนใช้งาน เพื่อป้องกันข้อผิดพลาดรันไทม์ในบริการ downstream
- ตั้งค่า
response_formatเพื่อ{"type": "json_object"}. - ตรวจสอบ JSON ก่อนการแยกวิเคราะห์
- จัดการคำตอบที่ผิดปกติอย่างสุภาพ
curl https://api.apimigration.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "Run the latest migration script for the user table"}]
}'
การละเลยการจัดการข้อผิดพลาด
APIs ล้มเหลวได้ การหมดเวลาเครือข่าย ข้อผิดพลาดของเซิร์ฟเวอร์ และข้อมูลโหลดที่ไม่ถูกต้องเกิดขึ้น รหัสของคุณต้องจัดการข้อผิดพลาดเหล่านี้โดยไม่ทำให้ระบบขัดข้อง บันทึกรายละเอียดข้อผิดพลาดเพื่อการแก้ไขข้อบกพร่อง
ตรวจสอบรหัสข้อผิดพลาดและข้อความ ลองใหม่เมื่อเกิดข้อผิดพลาดชั่วคราว ล้มเหลวทันทีเมื่อเกิดข้อผิดพลาดถาวร การแยกแยะนี้ช่วยประหยัดเวลาและทรัพยากร
- บันทึกรหัสข้อผิดพลาดและข้อความ
- เรียกซ้ำใหม่เมื่อเกิดข้อผิดพลาด 5xx พร้อมการหน่วงเวลา
- ล้มเหลวเร็วเมื่อเกิดข้อผิดพลาด 4xx
from openai import OpenAI
client = OpenAI(base_url="https://api.apimigration.com/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)
ปัญหาการชำระเงินและการหมุนคีย์
API ของเราใช้เครดิตเติมเงินผ่านคริปโต เครดิตไม่มีวันหมดอายุ หากคุณเครดิตหมด คำขอจะล้มเหลว โปรดตรวจสอบยอดเงินของคุณและเติมเงินก่อนที่มันจะถึงศูนย์
แต่ละบัญชีมีคีย์ที่ใช้งานอยู่หนึ่งคีย์ การสร้างคีย์ใหม่จะยกเลิกคีย์เก่าทันที ตรวจสอบให้แน่ใจว่าการปรับใช้ของคุณอัปเดตคีย์แบบอะตอมมิก (atomically) เพื่อหลีกเลี่ยงเวลาหยุดทำงาน
- ติดตามยอดคงเหลือเครดิตอย่างสม่ำเสมอ
- หมุนคีย์แบบอะตอมมิก
- อัปเดตทุกอินสแตนซ์พร้อมกัน
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.apimigration.com/v1", apiKey: process.env.API_KEY });
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Draft a villain monologue for my game." }],
});
console.log(resp.choices[0].message.content);
สรุปแนวทางปฏิบัติที่ดีที่สุด
ความสำเร็จในการย้ายระบบขึ้นอยู่กับความละเอียดถี่ถ้วน ตรวจสอบ URL พื้นฐานของคุณ เคารพขีดจำกัดบริบท จัดการสตรีมอย่างถูกต้อง จัดการอัตราจำกัด ตรวจสอบ JSON จัดการข้อผิดพลาด จัดการการชำระเงินและคีย์ การทำตามขั้นตอนเหล่านี้รับประกันการเปลี่ยนผ่านที่ราบรื่น
ทดสอบการผสานรวมของคุณอย่างละเอียดก่อนเปิดใช้งาน ใช้เครดิตทดลองเพื่อยืนยันการตั้งค่าของคุณ สิ่งนี้ป้องกันเวลาหยุดทำงานที่มีค่าใช้จ่ายสูงในการผลิต
- ตรวจสอบ URL พื้นฐาน
- เคารพข้อจำกัดบริบท
- จัดการการสตรีมอย่างถูกต้อง
- จัดการอัตราจำกัด
- ตรวจสอบ JSON
- จัดการข้อผิดพลาด
- จัดการการชำระเงินและคีย์
curl https://api.apimigration.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "Run the latest migration script for the user table"}]
}'คำถามที่พบบ่อย
ขนาด context window คืออะไร?
หน้าต่างบริบทมีขนาด 100,000 tokens รวม prompt และการตอบกลับ โดยมีการตอบกลับสูงสุด 16,000 tokens ต่อการเรียก หากไม่ได้ระบุ max_tokens ค่าเริ่มต้นคือ 2,048 tokens
ฉันจะสตรีมการตอบกลับได้อย่างไร?
ใช้ Server-Sent Events (SSE) อ่านแต่ละบรรทัดและแยกวิเคราะห์ข้อมูล JSON chunk สุดท้ายรวมถึงการใช้โทเค็น อย่ารอการตอบกลับทั้งหมด
ขีดจำกัดอัตราคืออะไร?
คุณสามารถส่งคำขอได้ 300 คำขอต่อนาทีต่อคีย์ โดยสามารถส่งคำขอพร้อมกันได้ 8 คำขอต่อคีย์ หากเกินขีดจำกัดเหล่านี้จะเกิดข้อผิดพลาด 429
ฉันจะชำระเงินสำหรับ API ได้อย่างไร?
ชำระเงินผ่านคริปโตเท่านั้น คุณสามารถใช้ USDT (TRC20) หรือ USDC (Base) ยอดเติมเงินอยู่ที่ $20 ถึง $500 เครดิตไม่หมดอายุ
รับคีย์ API ของคุณ
ลงทะเบียน คัดลอกคีย์ อัปเดต base URL การตั้งค่าเสร็จสมบูรณ์