เหตุผลที่การตอบกลับ JSON ของคุณล้มเหลวในการตรวจสอบ
การแยกวิเคราะห์ JSON ล้มเหลวเมื่อโมเดลเพิ่มข้อความสนทนาไว้ภายนอกบล็อกโค้ด โมเดลแบบ uncensored ให้ความสำคัญกับกระแสภาษาธรรมชาติ ดังนั้นจึงมักเพิ่มข้อความ "นี่คือ JSON" ไว้ก่อนหรือหลังข้อมูลดิบ สิ่งนี้ทำให้ parser ที่เข้มงวดซึ่งคาดหวังเฉพาะออบเจกต์ทำงานผิดพลาด
ใช้ response_format พารามิเตอร์นี้ตั้งค่าเป็น {"type": "json_object"}. สิ่งนี้บังคับให้โมเดลเอาต์พุตเฉพาะ JSON ที่ถูกต้องเท่านั้น มันขจัดความจำเป็นในการใช้สคริปต์ทำความสะอาดด้วย regex ในโค้ดของคุณ อย่างไรก็ตาม โปรดทราบว่าสิ่งนี้ใช้โทเค็นมากขึ้นต่อคำขอเนื่องจากโมเดลถูกจำกัด
- ตั้งค่า
response_formatเพื่อjson_objectใน payload ของคำขอของคุณ - ตรวจสอบให้แน่ใจว่าระบบนำทางของคุณร้องขอผลลัพธ์ JSON อย่างชัดเจน
- จัดการเครื่องหมายจุลภาคส่วนท้ายหรือข้อผิดพลาดไวยากรณ์เล็กน้อยได้อย่างสง่างามหากโมเดลพลาด
from openai import OpenAI
client = OpenAI(base_url="https://api.abliteratedllmonline.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)
การจัดการขีดจำกัดหน้าต่างบริบทอย่างถูกต้อง
หน้าต่างบริบทของคุณรองรับ 100,000 โทเค็นรวมกัน ซึ่งรวมถึงทั้งอินพุตและเอาต์พุต หากคุณส่งประวัติการสนทนาที่ยาว คุณต้องลดความยาวสูงสุดของเอาต์พุต ความยาวเอาต์พุตสูงสุดโดยค่าเริ่มต้นคือ 2,048 โทเค็น เว้นแต่คุณจะระบุค่าอื่น
คำนวณโทเค็นที่เหลือโดยลบขนาดอินพุตของคุณออกจาก 100,000 หากคุณกำลังทำบทบาทสมมติ ให้รักษาคำสั่งระบบให้กระชับ เก็บเฉพาะรอบการสนทนาล่าสุดในคำขอ API บริบทเก่าสามารถสรุปหรือตัดทอนได้ สิ่งนี้ป้องกันไม่ให้เกินขีดจำกัดแข็งระหว่างการสร้างข้อความ
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.abliteratedllmonline.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);
ข้อผิดพลาดการเรียกฟังก์ชันกับโมเดลแบบ uncensored
การเรียกฟังก์ชันล้มเหลวเมื่อโมเดลเพิกเฉยต่อคำจำกัดเครื่องมือหรือส่งคืนอาร์กิวเมนต์ที่ไม่ถูกต้อง โมเดลแบบ uncensored อาจให้ความสำคัญกับการตอบกลับเชิงสร้างสรรค์มากกว่าการใช้งานเครื่องมือที่เข้มงวด พวกมันอาจสร้างพารามิเตอร์ที่ไม่มีอยู่ในสคีมาของคุณ
กำหนดเครื่องมือของคุณอย่างชัดเจนใน tools array. ใช้ tool_choice เพื่อบังคับพฤติกรรมเฉพาะ หากโมเดลปฏิเสธการเรียกใช้เครื่องมือ ให้ตรวจสอบคำสั่งระบบของคุณเพื่อหาคำสั่งที่ขัดแย้งกัน ตรวจสอบให้แน่ใจว่าชื่อและคำอธิบายของเครื่องมือมีความชัดเจนไม่กำกวม ทดสอบด้วยการสอบถามแบบง่ายก่อนเพื่อยืนยันการผสานรวม
- ระบุชื่อเครื่องมือและคำอธิบายให้ชัดเจน
- ใช้
tool_choiceเพื่อควบคุมการเรียกใช้ - ตรวจสอบอาร์กิวเมนต์กับสคีมาของคุณก่อนดำเนินการ
curl https://api.abliteratedllmonline.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "List the python dependencies for this flask app"}]
}'
การหยุดชะงักของการสตรีมและการจัดการ SSE
การสตรีมผ่าน Server-Sent Events (SSE) อาจทำให้สูญเสียโทเค็นได้หากไคลเอนต์ตัดการเชื่อมต่อหรือเกิดปัญหาเครือข่ายชั่วคราว ชิ้นข้อมูลสุดท้ายจะประกอบด้วยสถิติการใช้งานโทเค็น คุณต้องแยกวิเคราะห์ชิ้นข้อมูลนี้เพื่อดึงจำนวนอินพุตและเอาต์พุต
ใช้ไคลเอนต์ SSE ที่แข็งแกร่งซึ่งจัดการตรรกะการเชื่อมต่อใหม่ อย่าสันนิษฐานว่าทุกชิ้นมีข้อมูล บางชิ้นอาจว่างเปล่าหรือมีเพียงช่องว่าง แยกวิเคราะห์ชิ้นสุดท้ายเพื่ออัปเดตยอดเครดิตหรือตัวนับโทเค็น ซึ่งช่วยให้การเรียกเก็บเงินและการติดตามการใช้งานมีความแม่นยำ
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)
การตั้งค่าอุณหภูมิที่ส่งผลต่อเอาต์พุต NSFW
อุณหภูมิควบคุมความสุ่มของผลลัพธ์ของโมเดล ค่าที่สูงกว่าเช่น 0.8 หรือ 0.9 เพิ่มความสร้างสรรค์และความไม่แน่นอน ค่าที่ต่ำกว่าเช่น 0.2 ทำให้เอาต์พุตมีความเป็นกำหนดเองและมุ่งเน้นมากขึ้น สำหรับการสวมบทบาท NSFW อุณหภูมิที่สูงกว่าสร้างการตอบสนองที่หลากหลายและเข้มข้นมากขึ้น
ทดลองใช้ค่าที่แตกต่างกันเพื่อหาจุดสมดุลที่เหมาะสม อุณหภูมิที่สูงเกินไปอาจนำไปสู่ข้อความที่ไร้ความหมายหรือซ้ำกัน อุณหภูมิที่ต่ำเกินไปอาจนำไปสู่บทสนทนาที่เหมือนหุ่นยนต์หรือจืดชืด ปรับตามโทนและความสม่ำเสมอที่ต้องการ โมเดลที่ไม่มีการเซ็นเซอร์ตอบสนองดีกับการตั้งค่าความคิดสร้างสรรค์ที่สูงกว่า
- ใช้ 0.7-0.9 สำหรับบทบาทสมมติเชิงสร้างสรรค์
- ใช้ 0.2-0.5 สำหรับงานข้อเท็จจริงหรือการเขียนโค้ด
- ติดตามคุณภาพ output ขณะปรับแต่ง
Top P และความหลากหลายในการสร้างบทบาท
Top P (การสุ่มนิวเคลียส) จำกัดโมเดลให้พิจารณาเฉพาะเปอร์เซ็นต์บนสุดของมวลความน่าจะเป็น ทำงานร่วมกับอุณหภูมิเพื่อควบคุมความหลากหลาย ค่า Top P ที่ต่ำทำให้ผลลัพธ์มีความคาดเดาได้มากขึ้น ค่าที่สูงอนุญาตให้มีความหลากหลายในการเลือกคำมากขึ้น
ผสาน Top P กับอุณหภูมิเพื่อควบคุมอย่างละเอียด เช่น อุณหภูมิสูงร่วมกับ Top P ต่ำสามารถสร้างข้อความที่สร้างสรรค์แต่มีทิศทางชัดเจน เหมาะสำหรับรักษาเสียงของตัวละครขณะอนุญาตให้เกิดการกระทำแบบสุ่ม ลองผสมผสานต่างๆ เพื่อให้เหมาะกับสไตล์การเล่าเรื่องของคุณ
from openai import OpenAI
client = OpenAI(base_url="https://api.abliteratedllmonline.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 คิดราคา $0.15 ต่อล้านโทเค็นอินพุตและ $0.50 ต่อล้านโทเค็นเอาต์พุต โทเค็นเอาต์พุตมีราคาแพงกว่าเพราะแทนงานของโมเดล การสตรีมไม่เปลี่ยนต้นทุน; คุณจ่ายสำหรับโทเค็นที่สร้างทั้งหมด
ติดตามการใช้โทเค็นของคุณเพื่อหลีกเลี่ยงการเรียกเก็บเงินที่ไม่คาดคิด ข้อมูลโทเค็นที่แน่นอนจะอยู่ใน chunk สุดท้ายของ SSE ใช้ข้อมูลนี้เพื่ออัปเดตยอดคงเหลือหรือแดชบอร์ดการเรียกเก็บเงินของคุณในเครื่อง การเกิดข้อผิดพลาดและการปฏิเสธจะไม่มีค่าใช้จ่าย ดังนั้นคุณจึงจ่ายเฉพาะสำหรับการสร้างที่สำเร็จเท่านั้น โมเดลการจ่ายตามการใช้งานนี้ทำให้คุณไม่จ่ายเกินจำเป็น
- โทเค็นอินพุตมีราคา $0.15 ต่อล้านโทเค็น
- โทเค็นเอาท์พุตมีราคา $0.50 ต่อล้าน
- การปฏิเสธและข้อผิดพลาดฟรี
การแทนที่คีย์ API และข้อจำกัดอัตรา
แต่ละบัญชีอนุญาตให้ใช้คีย์ API ที่ใช้งานอยู่ได้เพียง 1 คีย์ หากคุณสร้างคีย์ใหม่ คีย์เก่าจะหมดอายุทันที ซึ่งช่วยรักษาความปลอดภัยแต่คุณต้องอัปเดตไคลเอนต์ของคุณอย่างรวดเร็ว ขีดจำกัดความเร็วถูกตั้งค่าไว้ที่ 300 คำขอต่อนาที และคำขอแบบขนาน 8 คำขอต่อคีย์
การเกินขีดจำกัดเหล่านี้จะส่งผลให้เกิดข้อผิดพลาด HTTP 429 นำการถอยหลังแบบทวีคณมาใช้ในการลองใหม่ของคุณ ตรวจสอบปริมาณคำขอของคุณเพื่อให้อยู่ในขีดจำกัด หากคุณต้องการปริมาณงานที่สูงขึ้น พิจารณาแบ่งงานของคุณข้ามหลายบัญชีหรือปรับขนาด prompt ของคุณให้เหมาะสม คีย์จะแสดงทันทีหลังจากสมัครสมาชิก ดังนั้นจงเก็บมันให้ปลอดภัย
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.abliteratedllmonline.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);
การแก้ปัญหาข้อผิดพลาด HTTP ที่พบบ่อย
ข้อผิดพลาด HTTP บ่งชี้ถึงปัญหาในคำขอของคุณหรือการตอบสนองของเซิร์ฟเวอร์ ข้อผิดพลาดทั่วไปรวมถึง 400 Bad Request, 401 Unauthorized และ 429 Too Many Requests ข้อผิดพลาด 400 มักหมายถึง JSON ที่ไม่ถูกต้องหรือพารามิเตอร์ที่ไม่ถูกต้อง ข้อผิดพลาด 401 บ่งชี้ว่าคีย์ API ไม่ถูกต้องหรือหมดอายุ
ตรวจสอบส่วนหัวและโหลดคำขอของคุณสำหรับข้อผิดพลาดไวยากรณ์ ตรวจสอบให้แน่ใจว่าคีย์ API ของคุณถูกต้องและใช้งานอยู่ หากคุณได้รับข้อผิดพลาด 429 ให้รอและลองใหม่ด้วยการเพิ่มเวลาแบบเอกซ์โพเนนเชียล ใช้ SDK ทางการของ OpenAI เพื่อจัดการข้อผิดพลาดเหล่านี้โดยอัตโนมัติ พวกมันให้ข้อความข้อผิดพลาดที่ชัดเจนและตรรกะการลองใหม่ ซึ่งช่วยลดเวลาในการพัฒนาและปรับปรุงความน่าเชื่อถือ
- 400: ตรวจสอบไวยากรณ์ JSON และพารามิเตอร์
- 401: ตรวจสอบความถูกต้องของ API key
- 429: ใช้ตรรกะการเรียกซ้ำพร้อม backoff
curl https://api.abliteratedllmonline.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "List the python dependencies for this flask app"}]
}'