TH ▾

API AI ไม่เซ็นเซอร์: ข้อผิดพลาดทั่วไปและวิธีแก้ไข

นักพัฒนาส่วนใหญ่มีปัญหากับการผสานรวม API AI แบบไม่เซ็นเซอร์ ไม่ใช่เพราะโมเดลซับซ้อน แต่เพราะพวกเขาใช้ข้อจำกัดมาตรฐานของ OpenAI กับเอนด์พอยต์แบบไม่มีข้อจำกัด คู่มือนี้สรุปข้อผิดพลาดในการกำหนดค่าเฉพาะ ขีดจำกัดอัตรา และลักษณะโครงสร้างที่ทำให้เกิดข้อผิดพลาด 400 หรือความล้มเหลวแบบเงียบเมื่อเปลี่ยนไปใช้ API LLM แบบไม่เซ็นเซอร์

อัปเดต

จุดสำคัญ

  • API ไม่เซ็นเซอร์ปฏิบัติตามไวยากรณ์มาตรฐานของ OpenAI แต่ขาดฟีเจอร์ขั้นสูงเช่น embeddings หรือการกำหนดเส้นทางโมเดลหลายตัว ดังนั้น client ของคุณต้องกำหนดค่าสำหรับเอนด์พอยต์เดียว
  • การตอบสนองแบบสตรีมมิงต้องการการจัดการ SSE เฉพาะ; หาก SDK ของคุณกำหนดค่าเริ่มต้นเป็นการแยกวิเคราะห์ JSON คุณจะพบข้อผิดพลาดการแยกวิเคราะห์ในการส่งออก uncensored ขนาดใหญ่
  • การเรียกใช้ฟังก์ชันทำงานได้แต่ต้องปฏิบัติตามแผนผัง JSON อย่างเคร่งครัดเนื่องจากโมเดลอาจสร้างอาร์กิวเมนต์ที่ไม่น่าเชื่อถือบ่อยกว่าโมเดลที่ปรับแต่งด้วยคำแนะนำ
  • คุณจำกัดอยู่ที่ 300 requests ต่อนาทีและขนาดร่างกาย 8MB ซึ่งจำเป็นต้องใช้กลยุทธ์การรวมคำขออย่างระมัดระวังสำหรับแอปพลิเคชันปริมาณสูง

ทำความเข้าใจเอนด์พอยต์ API AI ไม่เซ็นเซอร์

เมื่อผสานรวม API AI แบบไม่เซ็นเซอร์ ข้อผิดพลาดแรกคือการสันนิษฐานว่าทำงานเหมือนโมเดลพาณิชย์มาตรฐาน เอนด์พอยต์ของเราคือบริการ chat-completions ที่รองรับ OpenAI แบบโฮสต์ มันให้บริการโมเดลภาษาขนาดใหญ่แบบไม่เซ็นเซอร์เฉพาะตัวเดียว นั่นหมายความว่าคุณไม่ต้องจัดการการเปลี่ยนโมเดลหรือเวอร์ชัน คุณส่งคำขอไปยัง POST /v1/chat/completions และรับข้อความกลับ

ต่างจากตัวรวมที่รวมภาพ วิดีโอ และผู้ขายหลายราย บริการนี้มุ่งเน้นที่การสร้างข้อความแบบไม่จำกัดประสิทธิภาพสูง โมเดลเป็น open-weight model และปรับแต่งเพื่อตอบโดยไม่มีการปฏิเสธเนื้อหาสำหรับการใช้งานผู้ใหญ่ที่ถูกต้องตามกฎหมาย อย่างไรก็ตาม มันไม่ใช่ GPT, Claude, Gemini หรือโมเดลของผู้ขายรายอื่น มันทำงานบนเซิร์ฟเวอร์ GPU ของเรา

Base URL คือ https://api.uncensoredgptapi.com/v1 เพื่อใช้งาน ให้เปลี่ยน base_url ใน SDK ของ OpenAI ที่มีอยู่หรือ client ที่เข้ากันได้กับ OpenAI และให้คีย์ API ของคุณ โมเดล ID ที่คุณต้องส่งคือ "uncensored" ความเรียบง่ายนี้ลดเวลาการผสานรวมแต่ต้องการให้คุณตรวจสอบว่า client ของคุณสามารถจัดการกับเอนด์พอยต์โมเดลเดียวได้โดยไม่คาดหวังการสำรอง

ข้อผิดพลาดการตรวจสอบสิทธิ์ทั่วไป

ข้อผิดพลาดการตรวจสอบสิทธิ์มักเกิดจาก header ที่กำหนดค่าผิดพลาดหรือคีย์หมดอายุ API ใช้การตรวจสอบสิทธิ์โทเคน Bearer มาตรฐาน คุณต้องรวมคีย์ API ของคุณใน header Authorization สำหรับทุกคำขอ

ข้อผิดพลาดทั่วไปคือการแคชคีย์ API โดยไม่ตรวจสอบความถูกต้อง หากสร้างคีย์ใหม่ คีย์เก่าจะถูกเพิกถอนทันที คุณต้องอัปเดตการกำหนดค่า client ของคุณเพื่อใช้คีย์ใหม่ หากได้รับ error 401 Unauthorized ให้ตรวจสอบสองสิ่ง: ประการแรก ตรวจสอบว่าคัดลอกคีย์ได้อย่างถูกต้องโดยไม่มีการเว้นวรรคนำหรือตาม ประการที่สอง ตรวจสอบว่าคุณใช้ Base URL ที่ถูกต้อง แม้ความเบี่ยงเบนเล็กน้อยในโดเมนหรือเส้นทาง也会导致การตรวจสอบสิทธิ์ล้มเหลว

ปัญหาที่พบบ่อยอีกอย่างคือการใช้โมเดล ID ที่ไม่ถูกต้อง เอนด์พอยต์คาดหวัง "uncensored" หากคุณส่ง "gpt-4" หรือโมเดล ID มาตรฐานอื่น เอนด์พอยต์อาจปฏิเสธคำขอหรือส่ง error เนื่องจากให้บริการโมเดลเพียงตัวเดียว ตรวจสอบฟิลด์ model ใน payload คำขอของคุณเสมอ

curl https://api.uncensoredgptapi.com/v1/chat/completions \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "messages": [{"role": "user", "content": "Write a blunt product review of a cheap VPN."}]
  }'

การจัดการการตอบสนองแบบสตรีมมิงอย่างถูกต้อง

การตอบสนองแบบสตรีมมิงผ่าน Server-Sent Events (SSE) รองรับแต่มักจัดการผิดพลาดโดยนักพัฒนาที่คุ้นเคยกับการตอบสนอง JSON แบบซิงโครนัส เมื่อคุณตั้งค่า "stream": true ในคำขอของคุณ API จะส่งสตรีมของวัตถุ JSON ส่วนย่อย ไม่ใช่การตอบสนอง JSON สมบูรณ์เดียว

หากไคลเอนต์ของคุณพยายามแยกวิเคราะห์การตอบกลับทั้งหมดเป็น JSON พร้อมกัน มันจะล้มเหลว คุณต้องอ่านสตรีมทีละบรรทัด แต่ละบรรทัดเริ่มต้นด้วย data: และประกอบด้วยวัตถุ JSON ส่วน บรรทัดสุดท้ายคือ data: [DONE] โค้ดของคุณควรรวมชิ้นข้อมูลเหล่านี้เพื่อสร้างข้อความสุดท้าย

SDK บางตัวจัดการสิ่งนี้โดยอัตโนมัติ แต่การใช้งานแบบกำหนดเองต้องการการแยกวิเคราะห์ SSE เฉพาะ ตรวจสอบว่าบัฟเฟอร์ client ของคุณสามารถจัดการกับการส่งออกขนาดใหญ่ได้โดยไม่หมดเวลา โมเดล uncensored สามารถสร้างการตอบสนองที่ยาวนาน และการสตรีมช่วยจัดการการใช้งานหน่วยความจำ หากประสบกับการเชื่อมต่อที่หลุด ให้พิจารณาใช้ exponential backoff สำหรับตรรกะการลองใหม่

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)

ข้อผิดพลาดการกำหนดค่าการเรียกใช้ฟังก์ชัน

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

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

นอกจากนี้ โปรดทราบว่าโมเดล uncensored อาจละเว้นคำจำกัดความของเครื่องมือหากพรอมต์ซับซ้อน หากพบปัญหา ให้ลดความซับซ้อนของคำอธิบายเครื่องมือและตรวจสอบให้แน่ใจว่าพรอมต์ระบบแนะนำโมเดลอย่างชัดเจนให้ใช้เครื่องมือเมื่อเหมาะสม ทดสอบด้วยอินพุตตัวอย่างไม่กี่รายการเพื่อตรวจสอบพฤติกรรม

ขีดจำกัดหน้าต่างบริบท (100k โทเคน)

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

เพื่อหลีกเลี่ยงการชนขีดจำกัดนี้ ให้ตรวจสอบการใช้งาน token ของคุณ SDK ส่วนใหญ่มีเครื่องมือเพื่อนับโทเคน ติดตามโทเคนสะสมในประวัติการสนทนาของคุณ หากกำลังประมวลผลเอกสารขนาดใหญ่ ให้พิจารณาแบ่งส่วนหรือสรุปส่วนก่อนหน้าของการสนทนาเพื่อปลดปล่อยพื้นที่บริบท

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

อธิบายการจำกัดอัตรา (300 RPM)

API กำหนดขีดจำกัดอัตรา 300 requests ต่อนาทีต่อคีย์ นี่คือขีดจำกัดที่เข้มงวดเพื่อให้แน่ใจการใช้งานที่เป็นธรรมสำหรับผู้ใช้ทุกคน หากเกินขีดจำกัดนี้ คุณจะได้รับ error 429 Too Many Requests Client ของคุณควรจัดการสิ่งนี้โดยการใช้กลยุทธ์การลองใหม่

ข้อผิดพลาดทั่วไปคือการไม่คำนึงถึง traffic แบบ burst หากส่ง 300 requests อย่างรวดเร็ว คุณอาจชนขีดจำกัดแม้ว่าอัตราเฉลี่ยของคุณจะต่ำกว่า ให้กระจายคำขอของคุณอย่างสม่ำเสมอตลอดนาที หากกำลังประมวลผลชุดข้อมูลขนาดใหญ่ ให้พิจารณาการรวมคำขอหรือใช้คิวเพื่อจัดการการไหล

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

ขีดจำกัดขนาดร่างกายคำขอ (8MB)

ร่างกายคำขอแต่ละรายการจำกัดอยู่ที่ 8 MB ขีดจำกัดนี้ใช้กับ payload JSON รวมถึงอาร์เรย์ messages และคำจำกัดความเครื่องมือใดๆ หากคำขอของคุณเกินขนาดนี้ API จะปฏิเสธด้วย error 413 Payload Too Large

ขีดจำกัดนี้สำคัญเมื่อส่งไฟล์ขนาดใหญ่เป็นข้อมูลเข้ารหัสฐาน64-เข้ารหัสแล้ว หรือเมื่อรวมประวัติการสนทนาที่ยาวนาน หากคุณทำงานกับเอกสารขนาดใหญ่ ให้พิจารณาบีบอัดข้อความหรือลบช่องว่างที่ไม่จำเป็นก่อนส่ง คุณยังสามารถใช้สตรีมมิงเพื่อลดการใช้หน่วยความจำได้ แต่บอดี้คำขอเริ่มต้นยังคงต้องอยู่ในขีดจำกัด 8 MB

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

การจัดการและการสร้างคีย์ API ใหม่

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

เพื่อจัดการสิ่งนี้อย่างมีประสิทธิภาพ อัปเดต client ทั้งหมดของคุณก่อนสร้างคีย์ใหม่ หากคุณมีบริการหรืออุปกรณ์หลายรายการที่ใช้คีย์ ตรวจสอบให้แน่ใจว่าอัปเดตทั้งหมดพร้อมกัน คุณสามารถสร้างคีย์ใหม่ได้มากเท่าที่ต้องการ แต่เฉพาะคีย์เดียวที่ใช้งานในเวลาใดเวลาหนึ่ง

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

แก้ไขข้อผิดพลาดตัวกรองเนื้อหา

โมเดลแบบไม่เซ็นเซอร์ไม่ปฏิเสธหัวข้อผู้ใหญ่ที่ถูกต้องตามกฎหมาย เรื่องแต่ง การวิจัยความปลอดภัย หรือหัวข้อที่ถกเถกัน อย่างไรก็ตาม มีข้อจำกัดเนื้อหาแบบแข็งที่บังคับใช้เสมอ: ไม่มีเนื้อหาทางเพศที่เกี่ยวข้องกับเด็ก คำขอที่มีเนื้อหาดังกล่าวจะถูกบล็อก

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

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

ถาม-ตอบ

API แบบไม่เซ็นเซอร์เข้ากันได้กับ SDK ของ OpenAI หรือไม่?

ใช่ เข้ากันได้เต็มที่ เพียงเปลี่ยน base URL เป็น https://api.uncensoredgptapi.com/v1 และตั้งค่า model ID เป็น "uncensored" พารามิเตอร์มาตรฐานอย่าง streaming, function calling และ messages ทำงานได้ตามปกติ

จัดการ rate limits ได้อย่างไร?

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

สามารถใช้ API keys หลายตัวได้หรือไม่?

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

ขนาดหน้าต่างบริบทคืออะไร?

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

คีย์ของคุณอยู่ห่างแค่แบบฟอร์มเดียว

สร้างบัญชี คัดลอกคีย์ เปลี่ยน URL ฐาน นั่นคือการตั้งค่าทั้งหมด

รับคีย์ API