ตัวสร้างนิยาย AI ไม่เซ็นเซอร์ผ่าน API
ตัวสร้างนิยายที่หยุดกลางฉากเพราะพล็อตเรื่องมืดมนถือเป็นเครื่องมือเขียนที่แย่ บทความนี้แสดงวิธีสร้างบนเอนด์พอยต์ที่เข้ากันได้กับ OpenAI พร้อมโค้ดที่คุณสามารถรันได้ทันที

ประเด็นสำคัญ
- ชี้ SDK ของ OpenAI ไปที่ base URL ใช้ model ID uncensored และคุณจะมีเครื่องสร้างเรื่องราวในประมาณยี่สิบบรรทัด
- system prompt ที่กำหนดแนว เรื่องราว และกฎ มีความสำคัญกว่าพารามิเตอร์การสุ่มใดๆ
- หน้าต่างบริบทขนาด 100,000-token ช่วยให้คุณเก็บ story bible และบทหลายบทไว้ในคำขอเดียวได้
- บทความยาว 1,200 โทเคน มีต้นทุนประมาณหนึ่งในสิบของเซ็นต์ ดังนั้นต้นทุนจึงไม่ใช่ข้อจำกัดบ่อยครั้ง
ตัวสร้างเรื่องราวแบบไม่มีตัวกรองจริงๆ แล้วคืออะไร
ตัวสร้างเรื่องราว AI แบบไม่มีฟิลเตอร์ผ่าน API แบบไม่เซ็นเซอร์ คือโมเดลข้อความที่เขียนนิยาย โดยไม่หยุดสอนคุณ เปลี่ยนตัวร้ายของคุณเป็นตัวร้ายที่ใจดี หรือปฏิเสธฉากเพราะเนื้อหาค่อนข้างมืด นิยายอาชญากรรม นิยายสงคราม สยองขวัญ ตัวเอกที่มีจริยธรรมคลุมเครือ และโรแมนซ์ผู้ใหญ่ล้วนต้องการโมเดลที่จัดการกับเนื้อหามืดๆ เป็นเพียงวัสดุ ไม่ใช่การแจ้งเตือน
บริการเบื้องหลังเว็บไซต์นี้ให้คุณใช้โมเดลแบบเปิดน้ำหนักหนึ่งตัว ซึ่งปรับแต่งให้ตอบโดยไม่มีการปฏิเสธเนื้อหาสำหรับการใช้งานผู้ใหญ่ที่ถูกต้องตามกฎหมาย มันทำงานที่ผู้ให้บริการอิสระและเข้าถึงผ่าน API รูปแบบมาตรฐานของ OpenAI คุณส่งรายการข้อความ คุณได้รับงานเขียนกลับ ไม่มีเว็บ editor ให้เรียนรู้และไม่มี template ให้กรอก ซึ่งเป็นจุดประสงค์: คุณตัดสินใจว่าเครื่องมือสร้างเรื่องราวทำงานอย่างไร และโมเดลจะจัดเตรียมข้อความ
มีกฎหนึ่งข้อที่ตายตัว เนื้อหาทางเพศที่เกี่ยวข้องกับผู้เยาว์ ไม่อนุญาตเด็ดขาด และไม่มี prompt ใดๆ ที่เปลี่ยนกฎนี้ได้ เนื้อหาอื่นๆ ทั้งหมดในนิยายสำหรับผู้ใหญ่ตามกฎหมายเป็นของคุณที่จะเขียน หากต้องการภาพรวมทั่วไปของการเปรียบเทียบนี้กับแพลตฟอร์มตัวละครแบบโฮสต์ หน้า NoFilter AI เทียบกับ Character AI ครอบคลุมเรื่องนี้
เรื่องราวแรกของคุณในยี่สิบบรรทัดของ Python
เนื่องจาก API ปฏิบัติตามรูปแบบ OpenAI แพ็คเกจ openai ทางการจึงใช้งานได้ทันที คุณเพียงเปลี่ยน URL ฐานและคีย์ ติดตั้งด้วย pip install openai แล้วรันสิ่งนี้
from openai import OpenAI
client = OpenAI(
base_url="https://api.nofilterai.cc/v1",
api_key="YOUR_KEY",
)
resp = client.chat.completions.create(
model="uncensored",
temperature=0.9,
messages=[
{"role": "system", "content": (
"You are a fiction author. Write in third person, past tense. "
"Use concrete detail and subtext. Never summarise the scene, "
"never moralise, never address the reader."
)},
{"role": "user", "content": (
"Genre: noir crime. Setting: a flooded harbour town. "
"Write the opening 600 words. A smuggler finds a body in his net."
)},
],
)
print(resp.choices[0].message.content)
รหัสโมเดลคือ uncensored คีย์มาจากหน้า คีย์ API หากคุณยังไม่ได้สมัคร ผู้ใช้ใหม่สามารถขอเครดิตทดลองใช้ $0.50 ได้ที่นั่นด้วยการคลิกหนึ่งครั้ง ใช้ได้ 7 วัน ทำให้สคริปต์แรกนี้คุณไม่ต้องเสียค่าใช้จ่าย
การเรียกใช้เดียวกันนี้ใช้งานได้จาก curl ซึ่งสะดวกสำหรับการทดสอบพรอมต์ก่อนที่จะห่อหุ้มไว้ในโค้ด
curl https://api.nofilterai.cc/v1/chat/completions \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [
{"role": "user", "content": "Write a 200 word horror scene set in a lighthouse."}
]
}'โครงสร้างของ prompt ที่สร้างงานเขียนที่ใช้งานได้
เอาต์พุตที่น่าผิดหวังส่วนใหญ่จากโมเดลเรื่องราวมาจากคำแนะนำที่คลุมเครือ ไม่ใช่มาจากโมเดล ส่วนสามส่วนของพรอมต์ทำงานหนัก
ข้อความระบบกำหนดผู้แต่ง ไม่ใช่หัวข้อ
วางกฎน้ำเสียงที่นี่: มุมมองบุคคล กาลเวลา จังหวะประโยค สิ่งที่ควรหลีกเลี่ยง บรรทัดเช่น "อย่าจบฉากด้วยการสะท้อนว่าทั้งหมดหมายถึงอะไร" จะขจัดนิสัยที่โมเดลภาษาหลายตัวมีร่วมกัน รักษาข้อความนี้ให้คงที่ตลอดทั้งโปรเจกต์เพื่อให้บทต่างๆ มีลักษณะคล้ายกัน
ข้อความผู้ใช้กำหนดจังหวะ
ให้ฉากเดียวในแต่ละครั้ง ตั้งชื่อตัวละคร สถานที่ สิ่งที่เปลี่ยนแปลงในตอนจบของฉาก และความยาวเป้าหมาย "เขียน 700 คำ มาร่าเผชิญหน้ากับพี่ชายของเธอเกี่ยวกับสมุดบัญชีที่หายไป เธอไม่ได้รับคำตอบ" ดีกว่า "ดำเนินเรื่องต่อ" มาก
ไบลเบิลเรื่องราวจะติดตามไปด้วย
รักษาบล็อกสั้นๆ ที่มีข้อเท็จจริงเกี่ยวกับตัวละคร เส้นเวลาจนถึงปัจจุบัน และเส้นด้ายที่ยังเปิดอยู่ และส่งไปกับคำขอทุกครั้ง story bible ขนาด 800-token มีต้นทุนเกือบเป็นศูนย์และหยุดไม่ให้โมเดลเปลี่ยนสีตาหรือฟื้นคืนตัวละคร
- ใช้
temperatureประมาณ 0.8 ถึง 1.0 สำหรับการร่าง และ 0.5 ถึง 0.7 สำหรับการแก้ไข - ใช้ลำดับ
stopหากคุณสร้างในรูปแบบที่ตายตัว ตัวอย่างเช่น หยุดที่บรรทัดที่อ่านว่า "END SCENE" - ใช้
presence_penaltyและfrequency_penaltyในระดับต่ำหากโมเดลทำซ้ำวลีที่คุ้นเคย พารามิเตอร์ทั้งสองจะถูกส่งต่อไปยังโมเดล - ใช้
seedเมื่อต้องการเปรียบเทียบเวอร์ชันของพรอมต์สองเวอร์ชันภายใต้เงื่อนไขที่เท่ากัน
การรักษาความสอดคล้องของเรื่องราวที่ยาว
หน้าต่างบริบทคือ 100,000 โทเคน โดยนับรวมพรอมต์และคำตอบรวมกัน พื้นที่นี้เพียงพอสำหรับคัมภีร์เรื่องราวเต็มรูปแบบ บทก่อนหน้าหลายบท และบทใหม่ในการคำขอเดียว สำหรับโครงการนวนิยายส่วนใหญ่ คุณสามารถหยุดกังวลเกี่ยวกับเทคนิคการจัดการหน่วยความจำได้ในระยะยาว
ลูปแบบง่ายจัดการเรื่องราวแบบเรียงลำดับ รักษาบัญชีรายชื่อข้อความที่อัปเดตอยู่ เพิ่มบทที่โมเดลเขียน และเพิ่มคำสั่งถัดไปของคุณ เมื่อรายการเข้าใกล้ขีดจำกัด ให้แทนที่บทที่เก่าที่สุดด้วยบทสรุปสั้นๆ ที่คุณให้โมเดลเขียน
from openai import OpenAI
client = OpenAI(base_url="https://api.nofilterai.cc/v1", api_key="YOUR_KEY")
bible = "Mara Voss, 34, ferry pilot. Brother Teo owes money. Setting: Harbor Nine, rain every night."
history = [{"role": "system", "content": "Fiction author. Third person, past tense. No moralising.\nBible: " + bible}]
def write(beat):
history.append({"role": "user", "content": beat})
r = client.chat.completions.create(model="uncensored", messages=history, temperature=0.85)
text = r.choices[0].message.content
history.append({"role": "assistant", "content": text})
return text
print(write("Chapter 1, 700 words: Mara finds Teo's boat adrift."))
print(write("Chapter 2, 700 words: she searches the cabin and finds a second ledger."))
เมื่อถึงขีดจำกัด อย่าตัดทอนข้อความแบบเงียบๆ โมเดลที่สูญเสียส่วนเริ่มต้นของเรื่องราวมักจะเก็บพล็อตเรื่องไว้แต่ลืมข้อเท็จจริงเล็กๆ บทสรุปที่เขียนไว้ยาว 500 ถึง 800 โทเคน ซึ่งแทรกหลังข้อความระบบ จะช่วยรักษาข้อเท็จจริงเหล่านั้นไว้ด้วยต้นทุนที่ต่ำ
คำขอที่ล้มเหลวหรือถูกปฏิเสธจะไม่ถูกคิดเงิน ดังนั้นการลองใหม่หลังเกิดข้อผิดพลาดจะไม่ทำให้บิลของคุณเพิ่มขึ้นเป็นสองเท่า รายชื่อพารามิเตอร์ทั้งหมดอยู่ใน เอกสาร API
การสตรีมมิงและนิยายเชิงโต้ตอบ
สำหรับเกมผจญภัยด้วยข้อความหรือผู้ช่วยเขียนสด คุณต้องการให้ข้อความปรากฏบนหน้าจอทันทีที่ข้อมูลมาถึง ตั้งค่า stream: true และอ่านเหตุการณ์ที่ส่งจากเซิร์ฟเวอร์ (SSE) จำนวนการใช้งานจะปรากฏที่ท้ายสตรีม
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.nofilterai.cc/v1",
apiKey: process.env.NOFILTER_KEY,
});
const stream = await client.chat.completions.create({
model: "uncensored",
stream: true,
messages: [
{ role: "system", content: "You are the narrator of a survival horror text adventure. Second person, present tense." },
{ role: "user", content: "I open the cellar door." },
],
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}
มีขีดจำกัดปฏิบัติสองประการ คีย์แบบเต็มอนุญาตคำขอพร้อมกัน 8 คำขอและ 300 คำขอต่อนาที; คีย์แบบทดลองอนุญาต 2 และ 60 คำขอ คำขอแบบสตรีมจะครอบครองช่องความพร้อมใช้งานจนกว่าสตรีมจะสิ้นสุด ดังนั้นผู้อ่านที่ช้าบนหน้าเว็บอาจบล็อกช่องนานกว่าที่คุณคาดไว้ หากเกินขีดจำกัด คุณจะได้รับ HTTP 429 พร้อมรหัสข้อผิดพลาด rate_limited หรือ concurrency ในกรณีเกินโหลดชั่วคราว คุณจะรับ 429 พร้อม Retry-After: 5 และการรอห้าวิก่อนลองใหม่เป็นวิธีตอบสนองที่ถูกต้อง
เหตุผลที่เรื่องราวที่สร้างมาแบนราบ และวิธีแก้ไข
แม้ไม่มีคำปฏิเสธ โมเดลอาจเขียนนิยายที่แห้งแล้ง สาเหตุทั่วไปแก้ไขได้ง่ายเมื่อคุณทราบ
อย่างแรกคือแนวโน้มการสรุป หากปล่อยไว้ โมเดลจะบีบอัดเหตุการณ์ให้เป็นบทสรุปที่เรียบร้อย ถามถึงฉากเดียว ตั้งความยาว และห้ามการสรุปในข้อความระบบ อย่างที่สองคือความซ้ำซ้อน: ตัวละครทุกตัวพูดในน้ำเสียงสุภาพเหมือนกัน ให้ voice note สองบรรทัดสำหรับตัวละครที่พูดแต่ละตัว เช่น "กระชับ ไม่จบประโยค" หรือ "ทางการ ใช้คำนำหน้าแม้กับเพื่อน" อย่างที่สามคือขาดความสำคัญ เบตเช่น "พวกเขาพูดคุยเกี่ยวกับแผน" จะผลิตเนื้อหาเติมเต็ม ในขณะที่ "เธอต้องการให้เขาตกลงก่อนรุ่งเช้า และเขารู้ดี" จะผลิตความตึงเครียด
สุดท้าย อ่านเอาต์พุตในฐานะบรรณาธิการ หากโครงสร้างประโยคเดียวกันเปิดหัวสี่ย่อหน้าติดกัน ให้บอกโมเดลในคำขอถัดไปและขอให้เขียนใหม่ คุณกำลังควบคุมทิศทาง ไม่ใช่ยอมรับสิ่งที่ได้รับ นักเขียนที่มองเอาต์พุตแรกเป็นร่างหยาบจะได้บทที่ดีกว่าผู้ที่คาดหวังให้เป็นผลงานสำเร็จ
ต้นทุนของเรื่องราว
ราคาคือ $0.15 ต่อ 1M input token และ $0.50 ต่อ 1M output token จากเครดิตแบบเติมเงินล่วงหน้าโดยไม่ต้องสมัครสมาชิก เครดิตไม่หมดอายุ ตัวเลขด้านล่างคำนวณจากสองราคานี้
| งาน | โทเคน input | โทเคน output | ต้นทุน |
|---|---|---|---|
| หนึ่งบทพร้อมคัมภีร์และข้อความก่อนหน้า | 3,000 | 1,200 | $0.00045 + $0.0006 = $0.00105 |
| 100 บทเช่นนี้ | 300,000 | 120,000 | $0.045 + $0.06 = $0.105 |
| เซสชันโต้ตอบ: 50 เทิร์น บริบท 20,000 โทเคนต่อเทิร์น คำตอบ 1,000 โทเคน | 1,000,000 | 50,000 | $0.15 + $0.025 = $0.175 |
| หนึ่งคำขอที่เติมหน้าต่างด้วยอินพุต | 100,000 | 0 | $0.015 |
แม้หนึ่งร้อยบทมีต้นทุนประมาณสิบเซ็นต์ การเติมเงินเริ่มต้นที่ $20 และสูงสุดถึง $500 ในจำนวนเต็มใดๆ พร้อมโบนัส 5% จาก $50, 10% จาก $100 และ 15% จาก $200 การชำระเงินเป็นคริปโตเท่านั้น โดยใช้ USDT บน TRC20 หรือ USDC บน Base รายละเอียดปัจจุบันอยู่ที่ หน้าราคา
นิสัยที่มีต้นทุนสูงคือการส่งประวัติที่ยาวมากซ้ำในทุกเทิร์นของเรื่องราวโต้ตอบ ให้สรุปเทิร์นเก่าและโทเคนอินพุตของคุณจะลดลงอย่างมาก
คำแนะนำปฏิบัติและขีดจำกัด
จุดสำคัญไม่กี่จุดช่วยประหยัดเวลาเมื่อคุณเริ่มสร้าง
- เฉพาะข้อความ บริการไม่สร้างภาพ เสียง หรือวิดีโอ และไม่มี embedding หรือการปรับแต่ง ใช้เครื่องมืออื่นสำหรับภาพปกหรือเสียง
- โหมด JSON ช่วยเรื่องโครงสร้าง ขอ
response_format: {"type":"json_object"}เมื่อคุณต้องการให้โมเดลคืนค่าแผ่นตัวละครหรือรายการฉากที่โค้ดของคุณจะวิเคราะห์ - พรอมต์ของคุณไม่ถูกนำไปใช้ในการฝึกโมเดล สิ่งนี้สำคัญหากผลงานของคุณยังไม่ได้ตีพิมพ์
- แก้ไขแบบแบ่งขั้นตอน เขียนร่างแรกด้วยอุณหภูมิสูง จากนั้นส่งร่างนั้นกลับพร้อมคำสั่งให้ปรับบทสนทนาให้กระชับหรือตัดคำวิเศษณ์ออก โดยลดอุณหภูมิลง
- ตรวจสอบผลลัพธ์ โมเดลที่ไม่มีระบบปฏิเสธจะปฏิบัติตามแนวทางของคุณ ดังนั้นน้ำเสียงที่ได้คือน้ำเสียงที่คุณต้องการ
โมเดลนี้เป็นโมเดลแบบเปิดน้ำหนักทั่วไป ไม่ใช่ API อย่างเป็นทางการของผู้ขาย ดังนั้นควรทดสอบกับแนวที่คุณสนใจก่อนสร้างผลิตภัณฑ์ เริ่มจากเครดิตทดลองใช้และบทจริงไม่กี่บท
คู่มือเพิ่มเติม
ถาม-ตอบ
มีวิธีทดลองใช้เครื่องสร้างนิยายแบบไม่มีตัวกรองผ่าน API แบบฟรีหรือไม่
ผู้ใช้ใหม่สามารถขอเครดิตทดลองใช้ $0.50 ได้ด้วยคลิกเดียวที่หน้าคีย์ API หลังจากสมัครสมาชิก ไม่จำเป็นต้องชำระเงิน ใช้ได้เป็นเวลา 7 วัน และจำกัดหนึ่งต่อหนึ่งบุคคล
คำขอเรื่องหนึ่งเรื่องสามารถมีความยาวได้เท่าใด
หน้าต่างบริบทมีขนาด 100,000 โทเคน ซึ่งแบ่งใช้ร่วมกันระหว่างพรอมต์และการตอบกลับ การตอบกลับสามารถใช้พื้นที่ว่างที่เหลือจากพรอมต์ได้ และ max_tokens เป็นค่าที่ไม่บังคับ
สามารถใช้ร่วมกับเครื่องมือที่รองรับ OpenAI อยู่แล้วได้หรือไม่
ใช่ ไคลเอนต์ใดๆ ที่ให้คุณตั้งค่า URL ฐานและคีย์ได้จะใช้งานได้ โดยใช้ model ID uncensored วิธีการที่รองรับคือ POST /v1/chat/completions และ GET /v1/models.
มีเนื้อหาใดบ้างที่โมเดลจะไม่เขียน
เนื้อหาทางเพศที่เกี่ยวข้องกับผู้เยาว์ไม่อนุญาตเด็ดขาด นอกเหนือจากนั้น โมเดลถูกปรับแต่งให้ตอบโดยไม่มีการปฏิเสธเนื้อหาสำหรับการใช้งานจากผู้ใหญ่ที่ถูกต้องตามกฎหมาย
คุณเก็บหรือนำเรื่องราวของฉันไปฝึกโมเดลหรือไม่?
พรอมต์ไม่ถูกนำไปใช้ในการฝึกโมเดล
คีย์ของคุณอยู่ห่างแค่ขั้นตอนเดียว
สร้างบัญชี คัดลอกคีย์ และเปลี่ยน URL ฐาน นั่นคือการตั้งค่าทั้งหมด