4 นาทีอ่าน

Prompt Post-Processing ใน SillyTavern ต่างกันอย่างไร ทำไมบางพรีเซ็ตควรปรับ

อธิบายโหมด None / Merge / Semi-strict / Strict / Single user message และ with tools vs no tools ใน SillyTavern — เมื่อไหร่ควรปรับคู่กับพรีเซ็ตและ custom endpoint

Prompt Post-Processing ใน SillyTavern ต่างกันอย่างไร ทำไมบางพรีเซ็ตควรปรับ

ถ้าใช้ SillyTavern กับ endpoint แบบ OpenAI-compatible แล้วเจอ error แปลก ๆ เรื่อง role, system message, หรือ tool call — อย่าเพิ่งโทษพรีเซ็ตอย่างเดียว ลองดูช่อง Prompt Post-Processing ในแท็บ API Connections ก่อน เพราะค่านี้คือตัวแปลงรูปแบบ prompt ก่อนส่งเข้า API

เอกสารทางการอยู่ที่ SillyTavern Docs · Prompt Post-Processing

Prompt Post-Processing คืออะไร

บาง API รับ prompt ได้แบบยืดหยุ่น บางเจ้าบังคับเข้ม เช่น ต้องสลับ role เสมอ, อนุญาต system แค่ก้อนเดียว, หรือต้องเริ่มด้วย user เท่านั้น

SillyTavern จึงมีตัวแปลงในตัว เรียงจาก ผ่อนสุด → เข้มสุด เพื่อให้ prompt ที่ประกอบจาก system / character / lore / chat history / tools เข้ากับข้อจำกัดของปลายทาง

หมายเหตุสำคัญจาก docs: ถ้าเลือกตัวเลือกกลุ่ม no tools จะไม่รองรับ Tool Calling

ตัวเลือกทั้งหมด ต่างกันอย่างไร

1) None

  • ไม่แปลงเพิ่ม (ยกเว้นสิ่งที่ API บังคับจริง ๆ ฝั่ง ST)
  • เหมาะกับ endpoint ที่ยืดหยุ่น / รองรับ multi-system / tool calls ตามมาตรฐาน
  • พรีเซ็ตซับซ้อน + เครื่องมือ (tools) มักเริ่มจาก None หรือ with tools ก่อน

2) Merge consecutive roles

  • รวมข้อความ role เดียวกันที่ติดกันเป็นก้อนเดียว (เช่น user ต่อ user → รวม)
  • ช่วย endpoint ที่ไม่ชอบ role ซ้ำติดกัน
  • มีทั้งแบบ with tools และ no tools

3) Semi-strict (alternating roles)

  • รวม role + อนุญาต system แบบ optional ได้เพียง 1 ก้อน
  • บังคับแนวสลับ role ให้เป็นระเบียบขึ้น
  • เหมาะกับ proxy/โมเดลที่ strict กลาง ๆ แต่ยังไม่ต้อง user-first

4) Strict (user first, alternating roles)

  • เข้มกว่า semi-strict: รวม role, system อย่างมาก 1 ก้อน, และต้องมี user ก่อน assistant
  • ถ้าไม่มี user ก่อน assistant แรก ST จะแทรก promptPlaceholder จาก config.yaml (ค่าเริ่มต้นมักเป็น [Start a new chat])
  • ตัวเลือกนี้โผล่บ่อยเมื่อ endpoint ฟ้องว่า message order ไม่ถูกต้อง

5) Single user message (no tools)

  • เข้มสุด: รวมทุก role เข้าเป็น user message ก้อนเดียว
  • ไม่มี with tools (อยู่ในกลุ่ม no tools)
  • ใช้เมื่อปลายทางรับได้แค่ single-turn / รูปแบบเก่ามาก — แลกด้วยการเสียโครงสร้าง multi-turn ละเอียด

With Tools vs No Tools

ใน UI จะแบ่ง 2 กลุ่มหลัก:

  • With Tools — เก็บ tool calls ไว้ใน prompt (ถ้ามี)
  • No Tools — ตัด tool calls ออก (ช่วย API ที่ไม่รองรับ tools แต่พรีเซ็ต/แชทเก่ายังมี tool residue)

Merge / Semi-strict / Strict ต่างก็มีทั้งคู่ — เลือก “with tools” เมื่อใช้ function calling / tool-enabled models จริง ๆ ถ้า endpoint ไม่รองรับ tools แล้ว error แปลก ๆ ให้ลอง no tools

โหมดรวม role ซ้ำSystemUser ต้องมาก่อนTools
Noneไม่บังคับยืดหยุ่นไม่บังคับขึ้นกับ endpoint
Mergeใช่ยืดหยุ่นกว่า strictไม่บังคับwith / no
Semi-strictใช่≤ 1 (optional)แนว alternatingwith / no
Strictใช่≤ 1 (optional)ใช่ (user first)with / no
Single user messageรวมทั้งหมดถูกรวมเข้า userเหลือ user ก้อนเดียวno tools เท่านั้น

ตารางสรุปแนวคิดจากเอกสารทางการ — endpoint บางเจ้าอาจเข้มกว่านี้เอง

ทำไมบางพรีเซ็ตควรปรับค่านี้

พรีเซ็ตไม่ได้ “พังเอง” เสมอ — หลายเคสพังเพราะ รูปแบบ messages หลังประกอบ ไม่เข้ากับปลายทาง

พรีเซ็ตมี system / Author’s Note / lore ซ้อนหลายชั้น

  • บางโมเดลรับ multi-system ได้ บางเจ้าไม่
  • อาการ: ตัดทอน system, ignore instruction, หรือ 400 invalid messages
  • ลอง: Semi-strict หรือ Strict (with tools ถ้ายังใช้ tools)

แชทยาวนาน / role ซ้ำติดกัน

  • สรุปแชท, swipe, แทรก note อาจทำให้ user/user หรือ assistant/assistant ติดกัน
  • ลอง: Merge consecutive roles

Endpoint แบบ Custom / reverse proxy

  • docs ระบุว่าโหมดที่ผ่อนกว่าจะไม่ไป “บังคับ” endpoint ที่เข้มในตัว ST ยกเว้นกลุ่ม Custom OpenAI-compatible ซึ่งอาจ error ถ้า request ไม่ถูกฟอร์ม
  • ถ้าเจอ error เรื่อง alternating / first message: เริ่ม Strict (user first…)
  • ถ้ายังไม่ผ่าน: Single user message เป็นทางหนีสุดท้าย (เสียรายละเอียด multi-turn)

พรีเซ็ตมี tool / function calling

  • อย่าใช้กลุ่ม no tools ถ้ายังต้องการ tools
  • ถ้า API ไม่รองรับ tools แต่พรีเซ็ตฝัง tool schema ไว้ → เปลี่ยนเป็น no tools เพื่อตัด tool calls ออก แล้วปิดฟีเจอร์ tools ในพรีเซ็ต

Jailbreak / CoT / hidden tracker ยาว

  • พรีเซ็ตแนว roleplay หนัก (world logic, tracker, multi-block) ชอบสร้าง prompt หนา
  • Post-processing ไม่ได้ “ลดความยาว” เป็นหลัก แต่ช่วยจัดรูป role ให้ API ยอมรับ
  • ถ้ายังพังหลังจัดรูปแล้ว ค่อยไล่ตัด prompt ซ้ำ / ลด depth แยกต่างหาก

แนวทางเลือกแบบเร็ว (เช็กลิสต์)

  1. เริ่ม None → ทดสอบ Connect / คุยสั้น ๆ
  2. error เรื่อง role ซ้ำ → Merge
  3. error เรื่อง system หลายก้อน / ลำดับ role → Semi-strict
  4. error ว่าต้อง user ก่อน / assistant นำ → Strict (user first)
  5. API โบราณ / รับก้อนเดียว → Single user message
  6. มี tools จริง → เลือกกลุ่ม with tools · ไม่มี/ไม่รองรับ → no tools

หลังเปลี่ยนค่า แนะนำ: เปิดแชทใหม่สั้น ๆ ทดสอบ 1–2 เทิร์น ก่อนย้ายพรีเซ็ตหนักเข้าไป

ตั้งค่าคีย์ / endpoint ก่อน แล้วค่อยจูน post-processing

ลำดับที่พลาดบ่อยคือไปรื้อพรีเซ็ตทั้งก้อน ทั้งที่จริง ๆ แค่รูป messages ไม่เข้า endpoint

ถ้าต้องการคีย์พร้อมใช้กับ ST แบบ OpenAI-compatible หลายช่อง (ซื้อ Series ไหน ใช้ endpoint นั้น) ดูแพ็กได้ที่ หน้าสินค้า RVL Connect หรือเช็คคีย์ที่ check.html — ซัพพอร์ตคอมมูนิตี้ที่ Discord RVL Connect

สรุป

  • Prompt Post-Processing = ตัวจัดรูป messages ก่อนยิง API ไม่ใช่ตัวเปลี่ยนบุคลิกพรีเซ็ต
  • เรียงจากผ่อน → เข้ม: None → Merge → Semi-strict → Strict → Single user message
  • กลุ่ม no tools ตัด tool calls และไม่รองรับ Tool Calling
  • พรีเซ็ตยาว / multi-system / chat เก่า / custom endpoint มักต้องขยับจาก None ไปโหมดเข้มขึ้น
  • จูนค่านี้ก่อน แล้วค่อยโทษพรีเซ็ตหรือโมเดล

อ้างอิง: docs.sillytavern.app — Prompt Post-Processing

Prompt Post-Processing SillyTavern API Connections Strict alternating roles Merge consecutive roles custom endpoint SillyTavern พรีเซ็ต SillyTavern

อัปเดตล่าสุด: