ประเด็นสำคัญ
- เครดิตทดลอง $0.50 เพียงพอสำหรับรอบบทบาทสมมติสั้นๆ จำนวนหลายร้อยรอบ ใช้ได้ 7 วัน ไม่ต้องชำระเงิน
- ส่วนหน้าใดๆ ที่รองรับเอนด์พอยต์ที่เข้ากันได้กับ OpenAI สามารถใช้งานได้: ตั้งค่า Base URL, คีย์ API และโมเดล
uncensored - ต้นทุนถูกกำหนดโดยความยาวของประวัติแชท ไม่ใช่ความยาวของคำตอบ ตัดหรือสรุปย่อรอบเก่าออก
- นิยายและบทบาทสมมติสำหรับผู้ใหญ่ที่ถูกต้องตามกฎหมายเท่านั้น ไม่มีเนื้อหาที่เกี่ยวข้องกับผู้เยาว์เลย
สิ่งที่คำว่าฟรีหมายถึงที่นี่
บริการนี้ไม่มีแชทฟรีแบบไม่จำกัด และควรบอกไว้ล่วงหน้า สิ่งที่คุณได้รับคือยอดเครดิตทดลอง: หลังจากคุณเข้าสู่ระบบด้วย Google หรือด้วยอีเมลและรหัสผ่าน คุณสามารถขอ เครดิตทดลอง $0.50 ได้ด้วยการคลิกหนึ่งครั้งบน หน้าคีย์ API คนละหนึ่งครั้ง ใช้ได้ 7 วัน และไม่จำเป็นต้องชำระเงิน คีย์ทดลองทำงานพร้อมคำขอพร้อมกัน 2 คำขอและ 60 คำขอต่อนาที ซึ่งเพียงพอสำหรับผู้ใช้หนึ่งคนที่แชท
ฟังดูน้อย แต่โทเคนราคาถูก ต้นทุนอินพุตคือ $0.15 ต่อ 1 ล้านโทเคน และต้นทุนเอาต์พุตคือ $0.50 ต่อ 1 ล้านโทเคน รอบบทบาทสมมติทั่วไปที่มีพรอมต์ 8,000 โทเคนและคำตอบ 300 โทเคนมีต้นทุน $0.00135 ดังนั้น $0.50 จึงครอบคลุมได้ประมาณ 370 รอบ สำหรับหลายคน นั่นคือทั้งเย็นหรือเรื่องสั้นหลายเรื่อง เพียงพอสำหรับการตัดสินใจว่าเซตอัพเหมาะกับคุณหรือไม่ก่อนที่จะมีการใช้จ่ายเงิน
เมื่อเครดิตทดลองหมด คุณเติมเงินจาก $20 ในจำนวนเต็มใดๆ สูงสุดถึง $500 เครดิตแบบเติมเงินล่วงหน้าไม่หมดอายุ คำขอที่ล้มเหลวหรือถูกปฏิเสธจะไม่ถูกเรียกเก็บเงิน และไม่มีบริการสมัครสมาชิกให้ยกเลิก เว็บไซต์นี้รับเฉพาะคริปโต: USDT บน TRC20 หรือ USDC บน Base
เลือกส่วนติดต่อผู้ใช้
API ส่งเฉพาะข้อความผ่าน HTTP คุณยังต้องการบางอย่างเพื่อเก็บตัวละครของคุณ ประวัติแชท และเทมเพลตพรอมต์ของคุณ ตัวเลือกทั่วไปสามอย่าง:
- SillyTavern. แอปพลิเคชันเว็บบนเครื่องของคุณที่สร้างมาสำหรับการแชทตัวละคร มี lorebooks, บุคลิก และค่าเริ่มต้น มันให้คุณเพิ่มเอนด์พอยต์ที่เข้ากันได้กับ OpenAI ซึ่งก็คือ API นี้เอง
- ไคลเอนต์แชทอื่น ที่แสดงฟิลด์สำหรับ URL ที่เข้ากันได้กับ OpenAI แบบกำหนดเอง มองหาการตั้งค่าที่เรียกว่า custom endpoint, proxy หรือ OpenAI-compatible
- สคริปต์ของคุณเอง โค้ด Python ยาว 50 บรรทัดให้คุณควบคุมหน่วยความจำ พรอมต์ และค่าใช้จ่ายได้อย่างเต็มที่ นอกจากนี้ยังเป็นวิธีที่ง่ายที่สุดในการดูว่าคุณส่งอะไรจริงๆ
หากคุณกำลังสร้างแอปพลิเคชันและไม่ใช่แค่แชท การเรียกใช้เดียวกันนี้ทำงานได้จาก SDK ของ OpenAI ใดๆ รายการquickstart ในเอกสาร แสดงเอนด์พอยต์ เฮดเดอร์ และขีดจำกัดในที่เดียว
เชื่อมต่อ SillyTavern ในห้าขั้นตอน
- สร้างบัญชี เปิดหน้าคีย์ API รับเครดิตทดลองใช้ และคัดลอกคีย์ของคุณ
- ใน SillyTavern เปิดไอคอนปลั๊ก (API Connections) และตั้งค่าประเภท API เป็นChat Completion
- เลือกแหล่งข้อมูลชื่อCustom (OpenAI-compatible)
- วาง
https://api.uncensoredvideo.cc/v1ลงในฟิลด์ custom endpoint ใส่คีย์ของคุณในฟิลด์ key และพิมพ์uncensoredเป็น model ID - กด Connect สถานะสีเขียวหมายถึงคำขอ
GET /v1/modelsหรือข้อความทดสอบสำเร็จ
ป้ายเมนูเปลี่ยนไปตามเวอร์ชันของ SillyTavern ดังนั้นให้ดูที่ความหมาย ไม่ใช่ถ้อยคำที่ตรงเป๊ะ ก่อนที่จะโทษแอป ให้ทดสอบคีย์จากเทอร์มินัล:
curl https://api.uncensoredvideo.cc/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"uncensored","messages":[{"role":"user","content":"Reply with the word ready."}]}'หาก curl ทำงานและแอปไม่ทำงาน ปัญหาคือฟิลด์ของแอป: ขาด/v1, ช่องว่างเกินในคีย์ หรือชื่อโมเดลผิด
หรือเขียนลูปแชทเล็กๆ
สคริปต์เป็นวิธีที่ดีในการเรียนรู้ว่าต้นทุนการเล่นบทบาทสมมติเป็นอย่างไร เพราะคุณสามารถพิมพ์การใช้งานโทเคนในแต่ละรอบได้ สคริปต์นี้เก็บพรอมต์บุคลิกภาพ ตัดประวัติให้เหลือ 20 ข้อความล่าสุด และสตรีมมิงคำตอบ
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.uncensoredvideo.cc/v1",
api_key=os.environ["API_KEY"],
)
system = (
"You are Mara, a dry-witted smuggler pilot in a space-opera story. "
"Stay in character, write in third person, keep replies under 150 words."
)
history = []
while True:
user = input("> ")
history.append({"role": "user", "content": user})
messages = [{"role": "system", "content": system}] + history[-20:]
stream = client.chat.completions.create(
model="uncensored",
messages=messages,
temperature=0.9,
top_p=0.95,
max_tokens=300,
stream=True,
stream_options={"include_usage": True},
)
reply = ""
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
piece = chunk.choices[0].delta.content
reply += piece
print(piece, end="", flush=True)
if chunk.usage:
print("\n[tokens in/out: %d/%d]" % (chunk.usage.prompt_tokens, chunk.usage.completion_tokens))
history.append({"role": "assistant", "content": reply})ดูบรรทัดการใช้งาน หลังจากผ่านไปไม่กี่สิบรอบ คุณจะเห็นจำนวนอินพุตเพิ่มขึ้นในขณะที่เอาต์พุตคงที่ นั่นคือตัวเลขที่คุณต้องจัดการ
เขียนพรอมต์ตัวละครที่คงทน
ปัญหาบทบาทสมมติส่วนใหญ่เริ่มต้นในพรอมต์แรก ไม่ใช่ในโมเดล พรอมต์ตัวละครที่ดีนั้นสั้นและเฉพาะเจาะจง ตั้งชื่อตัวละคร ให้เสียงในหนึ่งหรือสองประโยค อธิบายฉากหลัง และบอกว่าคำตอบควรยาวแค่ไหน จากนั้นหยุด กฎเพิ่มเติมทุกข้อคือโทเคนที่คุณจ่ายในทุกรอบ และรายการสิ่งที่ควรทำและไม่ควรทำที่ยาวมักจะปฏิบัติตามได้น้อยกว่าตัวอย่างที่ชัดเจน
เปรียบเทียบสองวิธีในการอธิบายนักบินหญิงคนเดียวกัน วิธีแรกบอกว่าเธอกล้าหาญ ขำขัน ซื่อสัตย์ และฉลาด นั่นไม่ได้บอกอะไรที่โมเดลนำไปใช้ได้เลย วิธีที่สองบอกว่าเธอตอบคำถามด้วยมุกก่อนแล้วความจริงทีหลัง ไม่เคยอธิบายอดีตของเธอเว้นแต่ถูกถามสองครั้ง และสบถเบาๆเมื่อชิ้นส่วนเรือแตก วิธีที่สองให้โมเดลมีนิสัยที่จะทำซ้ำ และนิสัยคือสิ่งที่ผู้อ่านสัมผัสได้ว่าเป็นบุคลิก
เพิ่มตัวอย่างการสนทนาสั้นๆ ยาวสามหรือสี่บรรทัด โมเดลคัดลอกรูปแบบได้ดีมาก ดังนั้นตัวอย่างจึงกำหนดความยาว กาล และมุมมองโดยไม่ต้องมีกฎแยก หากคุณเขียนในบุคคลที่สอง ให้แสดงมัน หากคุณต้องการคำบรรยายในตัวเอียง ให้แสดงด้วยเช่นกัน วางตัวอย่างในพรอมต์ระบบหรือเป็นข้อความแรกๆ ของประวัติ
สุดท้าย ตัดสินใจว่าใครควบคุมตัวละครอื่น หากคุณต้องการให้โมเดลเล่นเป็นตัวละครทั้งหมด ให้พูดเช่นนั้น หากคุณต้องการให้มันเล่นเพียงบทบาทเดียว ให้ระบุว่ามันห้ามเขียนคำหรือการกระทำของตัวละครของคุณ ลำดับหยุดบนชื่อตัวละครของคุณสนับสนุนสิ่งนี้ที่ระดับ API
ค่าใช้จ่ายของการสนทนาบทบาทสมมติ
แต่ละคำขอจะส่งพรอมต์ระบบ คำอธิบายตัวละคร และประวัติใหม่ ดังนั้นโทเคนอินพุตจึงเพิ่มขึ้นเมื่อแชทยาวขึ้น นี่คือคณิตศาสตร์สำหรับคำตอบ 300 โทเคน ซึ่งมีต้นทุน 300 x $0.50 / 1,000,000 = $0.00015 เฉพาะตัวมันเอง:
| ขนาดพรอมต์ | ต้นทุนอินพุต | ต้นทุนต่อรอบ | ต่อ 100 รอบ | รอบสำหรับ $0.50 |
|---|---|---|---|---|
| 4,000 โทเคน | $0.0006 | $0.00075 | $0.075 | ประมาณ 666 |
| 8,000 โทเคน | $0.0012 | $0.00135 | $0.135 | ประมาณ 370 |
| 20,000 โทเคน | $0.0030 | $0.00315 | $0.315 | ประมาณ 158 |
| 50,000 โทเคน | $0.0075 | $0.00765 | $0.765 | ประมาณ 65 |
ข้อสรุปนั้นง่าย พรอมต์ 8,000 โทเคนที่กระชับมีราคาถูกกว่าพรอมต์ 50,000 โทเคนประมาณ 5.7 เท่าสำหรับจำนวนรอบที่เท่ากัน ที่ระดับ 8,000 โทเคน การเติมเงิน $20 จ่ายได้ประมาณ 14,800 รอบ การเติมเงินจำนวนมากขึ้นให้โบนัส: +5% จาก $50, +10% จาก $100 และ +15% จาก $200 ดังนั้น $100 ให้เครดิต $110 ดู หน้าราคา สำหรับตารางเต็ม
เก็บเรื่องราวที่ยาวให้ถูกและสอดคล้องกัน
หน้าต่างบริบทมีขนาด 100,000 โทเคน รวมพรอมต์และการตอบกลับ ดังนั้นคุณจึงโหลดข้อมูลได้มาก แต่ไม่ควรทำบ่อย พรอมต์ที่ยาวมีค่าใช้จ่ายสูงกว่าและทำให้โมเดลมีข้อความมากจนอาจหลงทาง นิสัยไม่กี่อย่างช่วยได้:
- สรุปย่อ แล้วลบออก ทุกๆ 20 รอบ ให้โมเดลสรุปย่อเรื่องราวจนถึงปัจจุบันใน 150 คำ เก็บไว้ในพรอมต์ระบบ และลบข้อความเก่าออก
- เก็บชีตตัวละครให้สั้น หน้ากฎที่โมเดลเพิกเฉยคือหน้าที่คุณจ่ายในแต่ละรอบ
- จำกัดการตอบกลับ
max_tokensเป็นตัวเลือก แต่การกำหนดขีดจำกัดช่วยหยุดการตอบกลับที่เกินควบคุมและรักษาจังหวะการสนทนา - ปรับแต่งการสุ่มตัวอย่าง อุณหภูมิประมาณ 0.8 ถึง 1.0 เหมาะกับนิยาย หากโมเดลทำซ้ำคำ ให้เพิ่มค่าปรับความถี่หรือการปรากฏตัวเล็กน้อย ค่าเหล่านี้จะถูกส่งผ่าน
- ใช้ลำดับ
stopเพื่อให้โมเดลไม่เขียนแทนคุณ เช่น การหยุดที่ชื่อตัวละครของคุณตามด้วยเครื่องหมายทวิภาค
ค่า seed คงที่ถูกส่งผ่านเช่นกัน ซึ่งช่วยเมื่อคุณต้องการเล่นซ้ำฉากหนึ่งและเปรียบเทียบพรอมต์สองเวอร์ชัน
ปัญหาที่พบบ่อยและการแก้ไขด่วน
นี่คือปัญหาที่ผู้คนพบได้บ่อยที่สุดในแชทยาว พร้อมการตั้งค่าที่มักช่วยได้
- โมเดลพูดแทนคุณ เพิ่มบรรทัดลงในระบบพรอมต์ พร้อมลำดับหยุดที่ชื่อตัวละครของคุณ
- การตอบกลับยาวขึ้นทุกรอบ โมเดลจะเลียนแบบความยาวของการตอบกลับก่อนหน้า ลดค่า
max_tokensแก้ไขการตอบกลับที่ยาวเกินไปด้วยตนเอง และรูปแบบนี้จะถูกปรับใหม่ - การซ้ำคำ เพิ่มอุณหภูมิเล็กน้อย เพิ่มค่าปรับ presence หรือ frequency เล็กน้อย และปรับข้อความของคุณเอง โมเดลจะสะท้อนสิ่งที่เห็น
- ลืมรายละเอียด ใส่ข้อเท็จจริงที่ต้องคงอยู่ เช่น ชื่อ การบาดเจ็บ และคำสัญญา ไว้ในบันทึกที่ตรึงไว้ใกล้ด้านบนของพรอมต์ และอัปเดตเมื่อเรื่องราวเปลี่ยนแปลง
- โทนเสียงแบนราบ ให้ตัวอย่างเสียงที่ชัดเจนยิ่งขึ้น โทนเสียงมาจากตัวอย่างมากกว่าคำคุณศัพท์
เมื่อเกิดสิ่งผิดปกติ ให้พิมพ์รายการข้อความทั้งหมดที่สคริปต์ของคุณส่ง ข้อผิดพลาดเก้าในสิบครั้งเกิดจากพรอมต์เอง: คำสั่งที่ตกค้าง สรุปที่ซ้ำซ้อน หรือประวัติที่ไม่ได้ตัดทอน
ขีดจำกัดและข้อผิดพลาดที่คุณอาจพบ
คีย์เต็มรูปแบบอนุญาตให้ทำคำขอพร้อมกัน 8 คำขอและ 300 คำขอต่อนาที ส่วนคีย์ทดลองอนุญาตให้ทำ 2 และ 60 ตามลำดับ หากเกินขีดจำกัด API จะส่ง HTTP 429 กลับมา รหัสข้อผิดพลาด rate_limited หมายถึงคำขอเกินต่อนาที และ concurrency หมายถึงคำขอเกินพร้อมกัน 429 พร้อม Retry-After: 5 ส่วนหัวบ่งชี้ว่าระบบกำลังรับภาระชั่วคราว ให้รอห้าวินาทีแล้วลองใหม่
รายละเอียดหนึ่งอย่างที่ทำให้สับสนคือ คำขอแบบสตรีมมิงจะครอบครองช่องคำขอพร้อมกัน (concurrency slot)ไปจนกว่าการสตรีมจะเสร็จสิ้น หากคุณกด regenerate สามครั้งติดกันบนคีย์ทดลอง ความพยายามครั้งที่สามอาจล้มเหลวด้วย concurrency รอให้การสตรีมสิ้นสุดลง หรือให้ไคลเอนต์ลองใหม่หลังจากหยุดพักสั้นๆ ทุกการตอบยังมี X-Balance-USD อยู่ ดังนั้นสคริปต์ของคุณจึงสามารถพิมพ์ยอดคงเหลือที่เหลือได้หลังจากรอบสนทนาแต่ละรอบ
กฎที่ไม่เปลี่ยนแปลงคือ โมเดลได้รับการปรับแต่งให้ตอบโดยไม่มีการปฏิเสธเนื้อหาสำหรับการใช้งานผู้ใหญ่ที่ถูกต้องตามกฎหมาย และจะไม่เขียนเนื้อหาทางเพศที่เกี่ยวข้องกับผู้เยาว์ เก็บเรื่องราวของคุณให้อยู่ในขอบเขตที่เหมาะสม พรอมต์ไม่ถูกใช้ฝึกโมเดล
