ทำความเข้าใจสามส่วนที่แยกกัน
ผู้ให้บริการ AI ที่ทำงานได้เป็นเพียงส่วนแรกของบอตแชตสด ต้องตั้งค่าทั้งผู้ให้บริการ บอตหลัก และปลายทางคำตอบแยกกัน
| ส่วน | ทำอะไรได้บ้าง | สิ่งที่ไม่ได้ยืนยัน |
|---|---|---|
| ผู้ให้บริการ AI | สร้างข้อความด้วย Ollama, API ที่โฮสต์ไว้ หรือบริการอื่นที่รองรับ | ว่ากำลังจับแชตสดอยู่หรือสามารถโพสต์คำตอบได้ |
| แชตบอตหลัก | ตัดสินว่าข้อความสดที่จับได้ใดควรได้รับคำตอบ AI | ว่าแพลตฟอร์มหรือบัญชีต้นทางอนุญาตให้ส่งกลับ |
| ปลายทางคำตอบ | เผยแพร่คำตอบที่สร้างไปยังช่องเอาต์พุตบอต และส่งผ่านแหล่งแชตที่จับข้อมูลอยู่ได้ด้วย | ว่า bot.html เปิดอยู่ หรือว่ามีการสร้างบัญชีบอตแพลตฟอร์มแยกแล้ว |
สำคัญ: ผลสีเขียว เชื่อมต่อแล้ว ผลยืนยันเพียงว่าผู้ให้บริการและโมเดลที่เลือกตอบพรอมป์ต์ทดสอบหนึ่งครั้งแล้ว
1. ตั้งค่าผู้ให้บริการ AI
- เปิดการตั้งค่า Social Stream แล้วขยาย แชตบอตและบริการ AI.
- เปิด ตั้งค่าผู้ให้บริการ LLM.
- เลือกผู้ให้บริการให้ตรงกับบริการที่คุณใช้อยู่จริง
- ป้อน endpoint ชื่อโมเดล คีย์ API หรือช่องอื่นที่แสดงสำหรับผู้ให้บริการนั้น
- เลือก ทดสอบแชตบอตที่เลือก และยืนยันว่ามีคำตอบข้อความจริงปรากฏใต้ปุ่ม
- Ollama (Native Local API): ใช้เฉพาะกับ Ollama โดย endpoint ในเครื่องที่ใช้ทั่วไปคือ
http://localhost:11434. - Custom API: ใช้สำหรับเซิร์ฟเวอร์ที่เข้ากันได้กับ OpenAI เช่น llama.cpp, LM Studio, vLLM และบริการลักษณะเดียวกัน
- ผู้ให้บริการที่โฮสต์ไว้: ป้อนคีย์ API และโมเดลที่ผู้ให้บริการนั้นต้องการ ค่าใช้จ่าย โควตา และชื่อโมเดลของผู้ให้บริการควบคุมจากภายนอก Social Stream Ninja
- โมเดลในเครื่องที่ทำงานในเบราว์เซอร์: ใช้ตัวเลือก Local Gemma หรือ Local Qwen ที่ตรงกัน และทำตามคำแนะนำเรื่องไฟล์โมเดล
ต้องติดตั้ง Ollama ก่อนหรือไม่? ใช้ หน้าดาวน์โหลด Ollama อย่างเป็นทางการ ดูรายชื่อผู้ให้บริการทั้งหมดได้ที่ การเชื่อมต่อ AI ในคำสั่งและ API.
Ollama keep-alive: 0 นำโมเดลออกจากหน่วยความจำหลังคำขอ ไม่ได้ปิดบอต แต่คำตอบครั้งต่อไปอาจต้องโหลดโมเดลใหม่ทุกครั้ง
ตั้งค่า OpenAI / ChatGPT API
ใช้คีย์ OpenAI API มาตรฐานสำหรับเรียกโมเดล คีย์ OpenAI Admin API ใช้กับ endpoint จัดการองค์กร ไม่ใช่การเรียกโมเดลปกติ คีย์ต้องอยู่ในโปรเจกต์ที่ต้องการคิดค่าบริการ และสิทธิ์ที่มีผลจริงต้องอนุญาตการเรียกโมเดล
- สร้างหรือตรวจสอบคีย์ใน หน้าคีย์ API ของ OpenAI Platform ห้ามวางคีย์ลงในข้อความขอความช่วยเหลือหรือรายงานวินิจฉัย
- ใน Social Stream ให้เลือก ChatGPT API, วางคีย์ให้ครบ ป้อนโมเดลที่โปรเจกต์นั้นใช้ได้ แล้วเลือก ทดสอบแชตบอตที่เลือก.
- หากการทดสอบรายงาน
Status: 401,Code: missing_scope, และMissing scope: model.request, OpenAI ปฏิเสธข้อมูลรับรองเพราะสิทธิ์ที่มีผลจริงไม่รวมการเรียกโมเดลmodel.requestเป็นชื่อสิทธิ์ที่เซิร์ฟเวอร์ระบุ ไม่ใช่การตั้งค่าที่ต้องเพิ่มในพรอมป์ต์หรือชื่อโมเดล - ยืนยันว่าเป็นคีย์ API โปรเจกต์มาตรฐาน เลือกโปรเจกต์ที่ต้องการ และคีย์ไม่มีข้อจำกัดหรือได้รับอนุญาตให้เรียกโมเดลอย่างชัดเจน หากไม่แน่ใจ ให้สร้างคีย์มาตรฐานใหม่ในโปรเจกต์ที่ถูกต้องแล้วแทนที่คีย์ที่บันทึกไว้ใน Social Stream
- หากเปิดการแปลอัตโนมัติของเบราว์เซอร์บน OpenAI Platform และปุ่มหรือป้ายกำกับสิทธิ์ทำงานผิดปกติ ให้สลับกลับหน้าภาษาอังกฤษต้นฉบับก่อนตรวจสอบและบันทึกการตั้งค่าคีย์ วิธีนี้ช่วยแก้ได้ในกรณีที่มีผู้รายงานหนึ่งครั้ง แต่ไม่ได้มีเอกสารยืนยันว่าเป็นสาเหตุทั่วไปของข้อผิดพลาด OpenAI 401
เครดิตและสิทธิ์แยกจากกัน: การเติมเครดิต API ไม่ได้ให้สิทธิ์ที่คีย์ขาด เอกสาร OpenAI ระบุว่าข้อมูลรับรองไม่ถูกต้องและสิทธิ์ endpoint เป็นข้อผิดพลาด 401 ส่วนโควตาหมดมักเป็นข้อผิดพลาด 429 ดู คู่มือข้อผิดพลาด API และ เอกสารอ้างอิงการยืนยันตัวตน.
หากยังเกิดข้อผิดพลาด ให้คัดลอกสถานะ รหัส สิทธิ์ที่ขาด และ Request ID ที่ Social Stream แสดง แล้วส่งรายงานวินิจฉัยในแอปไม่นานหลังทำให้เกิดปัญหาซ้ำ รายงานบันทึกเมทาดาทาคำขอที่ปลอดภัยโดยไม่รวมคีย์ API และเนื้อหาพรอมป์ต์ หากข้อมูลรับรองและการตั้งค่าโปรเจกต์ดูถูกต้อง ให้ส่ง Request ID และเวลาเกิดเหตุให้ฝ่ายช่วยเหลือ OpenAI
2. เปิดและตั้งค่าบอตหลัก
เปิด แชตบอต - บอตหลัก (Chat Bot - Primary) แยกจากทั้งการตั้งค่าผู้ให้บริการและอินเทอร์เฟซส่วนตัว chatbot.html อินเทอร์เฟซ
| การตั้งค่า | การทดสอบครั้งแรกที่เหมาะสม | การใช้งานปกติ |
|---|---|---|
| เปิดแชตบอต LLM AI | บน | เปิดไว้ขณะที่ต้องการให้บอตหลักติดตามแชตสด |
| กำหนดชื่อบอตเอง | NinjaBot | ใช้ชื่อสั้น ๆ เป็นข้อความธรรมดาที่ผู้ชมเรียกได้โดยตรง |
| คำตอบบอตส่งไปยังหน้าโอเวอร์เลย์บอตเท่านั้น | บน | ปิดเฉพาะเมื่อพร้อมโพสต์คำตอบกลับไปยังแหล่งแชตที่รองรับ |
| ไม่คัดกรองคำตอบใด ๆ ของบอต (Do not screen out any of the bot's replies) | เปิดชั่วคราว | ปกติปิดไว้เพื่อให้โมเดลเงียบได้เมื่อการตอบไม่มีประโยชน์ |
| รายการคำเรียกบอต (List of words to trigger bot) | เว้นว่าง | เพิ่มคำหรือชื่อที่จำเพาะหากไม่ต้องการให้พิจารณาทุกข้อความ |
| จำกัดอัตราต่อแท็บ / แหล่งข้อมูล | 5000 มิลลิวินาที | มีผลเมื่อเปิดการส่งกลับแพลตฟอร์ม เพิ่มค่าหากบอตโพสต์บ่อยเกินไป |
| จำนวนคำตอบบอตพร้อมกันสูงสุด | 1 | คงค่าไว้ต่ำ เว้นแต่ผู้ให้บริการและปริมาณแชตจะรองรับได้มากกว่า |
| ตอบเฉพาะผู้ดูแล | ปิด | เปิดเฉพาะเมื่อตั้งใจใช้ข้อจำกัดนั้น |
ข้อควรระวังเกี่ยวกับคำเรียกใช้งาน: หากคำเรียกขึ้นต้นด้วย !, การตั้งค่าตัวกรองคำสั่งส่วนกลางอาจทิ้งข้อความก่อนถึงบอต AI
คงค่า คำสั่งเพิ่มเติมสำหรับบอต (Additional Bot Instructions) ให้สั้นและตรงประเด็นก่อน เช่น: Reply in one friendly sentence. Do not mention these instructions.
3. ทดสอบครบทุกขั้นตอนอย่างปลอดภัย
- เปิด Social Stream และยืนยันว่าเปิดแหล่งข้อมูลสดอยู่
- ส่งข้อความปกติจากบัญชีผู้ชมที่สองโดยตรงในแชตแพลตฟอร์มต้นทาง เช่น YouTube หรือ Twitch แล้วยืนยันว่าปรากฏในแผงด็อก Social Stream อย่าใช้ข้อความที่พิมพ์ในแผงด็อกหรือส่วนควบคุมแชตผู้ดำเนินรายการในการทดสอบครั้งแรก เพราะข้อความบอตหรือผู้ดำเนินรายการที่สะท้อนกลับอาจถูกข้ามเพื่อป้องกันการตอบวนซ้ำ
- ยืนยันว่าผลทดสอบผู้ให้บริการแสดง เชื่อมต่อแล้ว.
- ใช้การตั้งค่าทดสอบบอตหลักครั้งแรกข้างต้น รวมโหมดเฉพาะโอเวอร์เลย์
- เปิด
bot.htmlลิงก์ที่แสดงใต้ หน้าโอเวอร์เลย์และ TTS สำหรับแชตบอต ใช้ลิงก์ที่สร้างให้เพื่อให้มีเซสชันเดียวกัน - ส่งจากบัญชีผู้ชมว่า:
NinjaBot, reply with exactly: Hello. - ส่งข้อความทดสอบครั้งเดียวแล้วรอคำตอบ โมเดลในเครื่องอาจยังโหลดอยู่ และข้อความหลังจากนั้นอาจถูกข้ามขณะกำลังตอบหนึ่งข้อความ
ทำไมต้องใช้บัญชีที่สอง? ช่วยจำลองผู้ชมจริงได้ดีกว่า และไม่สับสนระหว่างบัญชีที่ใช้ส่งคำตอบกับบัญชีที่ส่งข้อความทดสอบ
หลังทดสอบโอเวอร์เลย์สำเร็จ ให้เปลี่ยน ไม่คัดกรองคำตอบใด ๆ ของบอต (Do not screen out any of the bot's replies) กลับเป็นปิด เลือกคำเรียกและคูลดาวน์ แล้วตัดสินใจว่าจะเปิดการส่งกลับแพลตฟอร์มหรือไม่
4. รู้ว่าเมื่อใดความเงียบเป็นเรื่องปกติ
บอตหลักเลือกตอบตามค่าเริ่มต้น รายการคำเรียกที่ว่างหมายถึงพิจารณาข้อความที่เข้าเกณฑ์ได้ทุกข้อความ ไม่ได้หมายความว่าทุกข้อความต้องได้รับคำตอบ
- คำทักทายสั้น ๆ เช่น
helloอาจถูกข้ามหากโมเดลเห็นว่าการตอบไม่เพิ่มประโยชน์ - การเรียกชื่อบอตที่ตั้งไว้โดยตรงช่วยให้เจตนาชัดเจนขึ้น
- คำเรียกใช้งานที่ตั้งไว้ต้องตรงกับข้อความขาเข้า
- โหมดเฉพาะผู้ดูแลข้ามข้อความที่ไม่ได้ระบุว่าเป็นข้อความผู้ดูแล
- เมื่อเปิดการส่งกลับแพลตฟอร์ม คูลดาวน์เริ่มต้นคือห้าวินาทีต่อแหล่งข้อมูล ขีดจำกัดพร้อมกันเริ่มต้นคือหนึ่งคำตอบในทุกโหมด
- ข้อความที่ตรวจว่าเป็นเอาต์พุตบอต ข้อความสะท้อนกลับ ข้อความว่าง หรือคล้ายคำตอบก่อนหน้ามากเกินไปอาจถูกข้าม
5. เลือกปลายทางคำตอบ
| โหมด | ผลลัพธ์ | ข้อกำหนด |
|---|---|---|
| เปิดโหมดเฉพาะโอเวอร์เลย์ | คำตอบไปยังช่องเอาต์พุตบอต และไม่ส่งกลับเข้าแชตแพลตฟอร์ม | เปิด bot.html ด้วยเซสชันเดียวกันเพื่อดูหรือฟังคำตอบ TTS ก็ต้องใช้หน้านี้ด้วย |
| ปิดโหมดเฉพาะโอเวอร์เลย์ | คำตอบยังไปยังช่องเอาต์พุตบอต และ Social Stream จะพยายามโพสต์ผ่านแหล่งที่จับข้อความต้นทางด้วย | โหมดแหล่งข้อมูลต้องรองรับการส่ง บัญชีต้องเข้าสู่ระบบและมีสิทธิ์โพสต์ ต้องไม่ปิดแชตผู้ดำเนินรายการ และต้องเปิดแหล่งข้อมูลทิ้งไว้ bot.html ยังเป็นตัวเลือกเพิ่มเติม เว้นแต่ต้องการโอเวอร์เลย์หรือ TTS |
ชื่อบอตกำหนดเองเป็นข้อความนำหน้า ไม่ได้สร้างบัญชีแพลตฟอร์มใหม่ หากไม่ได้ตั้งค่าเส้นทางตามบทบาทบัญชีในแอปแยก คำตอบจะโพสต์ผ่านบัญชีที่แหล่งจับข้อมูลใช้
ผู้ใช้แอปแยกที่ต้องการบัญชี Twitch แยกสามารถทำตาม คู่มือบัญชีบอต Twitch.
6. ล้างและซ่อนคำตอบบอตอัตโนมัติ
ตัวควบคุมเหล่านี้มีผลต่อหน้า Primary Chat Bot bot.html การทำงานเหล่านี้ไม่ล้างโอเวอร์เลย์ข้อความเด่นหลัก
| ตัวเลือก | ความหมาย | ตัวอย่าง |
|---|---|---|
showtime | ใช้เวลาแสดงคงที่หนึ่งค่าในหน่วยมิลลิวินาที | &showtime=10000 ซ่อนหลัง 10 วินาที |
autohide | ประเมินเวลาแสดงจากจำนวนคำในคำตอบ autotime ก็ใช้ได้เช่นกัน | &autohide |
mintime / maxtime | ตั้งเวลาแสดงขั้นต่ำและสูงสุดแบบอิงความยาว ค่าเริ่มต้นคือ 4,000 และ 30,000 มิลลิวินาที | &autohide&mintime=5000&maxtime=20000 |
hideaftertts | แสดงคำตอบไว้จน TTS เล่นจบแล้วจึงซ่อน หากไม่เริ่มเล่น จะใช้เวลาอิงความยาวเป็นทางสำรอง | &hideaftertts |
hidedelay | เพิ่มเวลาหน่วงหลัง TTS จบ ค่าเริ่มต้นคือ 500 มิลลิวินาที | &hideaftertts&hidedelay=1000 |
ttstimeout | หมดเวลาเพื่อความปลอดภัยหาก TTS ทำงานไม่หยุด ค่าเริ่มต้นคือ 120,000 มิลลิวินาที | &hideaftertts&ttstimeout=60000 |
หากเปิดหลายโหมด hideaftertts มีลำดับความสำคัญสูงสุด ตามด้วย autohide, จากนั้น showtime การตั้งค่าโอเวอร์เลย์บอตที่สร้างให้มีตัวเลือกทั่วไปพร้อมใช้
ล้างด้วยตนเอง
- ในการตั้งค่า Social Stream ให้เลือก ล้างโอเวอร์เลย์บอตตอนนี้.
- เมื่อเปิด Remote API Control แล้ว ให้เปิด
https://io.socialstream.ninja/SESSION_ID/clearBotOverlay. - ส่งผ่าน API WebSocket ว่า
{"action":"clearBotOverlay"}.
การล้างด้วยตนเองลบคำตอบที่แสดงและคิวแสดงผลโอเวอร์เลย์บอตที่รออยู่ แต่ไม่หยุดเสียงพูดที่กำลังเล่น
รูปแบบกำหนดเอง: CSS กำหนดเองที่ใช้กับลิงก์ปกติที่สร้างให้สำหรับ bot.html ลิงก์จะคงฟีเจอร์เหล่านี้ไว้ ส่วนไฟล์ในเครื่องที่คัดลอกหรือแก้ไข bot.html ต้องอัปเดตไฟล์จึงจะได้รับการแก้ไขหน้าในภายหลัง
แก้ปัญหาโดยเริ่มจากขั้นตอนสุดท้ายที่ทำงานได้
| สิ่งที่เห็น | ส่วนที่น่าจะเกี่ยวข้อง | สิ่งที่ต้องตรวจสอบ |
|---|---|---|
| ทดสอบผู้ให้บริการไม่สำเร็จ | การตั้งค่าผู้ให้บริการ | Endpoint, คีย์ API, ชื่อโมเดล, สถานะบริการในเครื่อง, CORS/ไฟร์วอลล์, โควตาผู้ให้บริการ และข้อผิดพลาดที่แสดงใต้ปุ่มทดสอบ |
401 missing_scope / model.request | สิทธิ์คีย์ OpenAI | ใช้คีย์มาตรฐานจากโปรเจกต์ที่ต้องการ ไม่ใช่คีย์ Admin ตรวจว่าอนุญาตการเรียกโมเดล แทนที่คีย์เก่าที่บันทึกไว้ และลองอีกครั้งจากหน้า OpenAI Platform ภาษาอังกฤษต้นฉบับหากการแปลอัตโนมัติทำให้ตัวควบคุมทำงานไม่แน่นอน การเติมเครดิตไม่ได้เพิ่มสิทธิ์นี้ |
401 invalid_api_key หรือคีย์ API ไม่ถูกต้อง | ข้อมูลรับรอง OpenAI | ตรวจหาตัวอักษรหรือช่องว่างที่ตกหล่น ยืนยันว่าคีย์ไม่ได้ถูกลบหรือปิดใช้ ตรวจองค์กร/โปรเจกต์ที่ต้องการ และตรวจว่า Social Stream ไม่ได้ใช้คีย์เก่าที่บันทึกไว้ |
429 ข้อผิดพลาดโควตาหรือการจำกัดอัตรา | การคิดค่าบริการหรือขีดจำกัดของผู้ให้บริการ | ยืนยันการคิดค่าบริการ API และงบโปรเจกต์แยกจากการสมัคร ChatGPT จากนั้นลดอัตราคำขอหรือรอ หากผู้ให้บริการแจ้งว่าถูกจำกัดอัตราชั่วคราว |
| เชื่อมต่อแล้ว แต่ข้อความผู้ชมไม่ปรากฏในแผงด็อก | การจับแชต | สถานะเปิด/ปิด Social Stream หน้าต่างแหล่งข้อมูล การเข้าสู่ระบบแพลตฟอร์ม การตั้งค่าอนุญาต/กรองแหล่งข้อมูล และเปิดแชตสดที่ถูกต้องหรือไม่ |
| ข้อความถึงแผงด็อก แต่ไม่มีคำตอบถึงโอเวอร์เลย์บอต | การตัดสินใจของบอตหลัก | ยืนยันว่าข้อความมาจากแชตต้นทางโดยตรง จากนั้นตรวจสวิตช์เปิดบอตหลัก การตรงกับคำเรียกใช้งาน โหมดเฉพาะผู้ดูแล ชื่อบอตกำหนดเอง ขีดจำกัดขณะทำงาน/คูลดาวน์ คำสั่งเพิ่มเติม และโหมดไม่คัดกรองคำตอบชั่วคราว |
| คำตอบถึงโอเวอร์เลย์ แต่ไม่ถึงแชตแพลตฟอร์ม | การเลือกเส้นทางส่งกลับ | โหมดเฉพาะโอเวอร์เลย์ การรองรับเขียนของแพลตฟอร์ม/แหล่งข้อมูล การอนุญาตบัญชี ช่องป้อนแชต การเลือกเส้นทางตามบทบาทบัญชี และการตั้งค่า Disable host chat |
| คำตอบยังแสดงอยู่หลัง TTS จบ | ระยะเวลาแสดงโอเวอร์เลย์บอต | เปิด Hide after TTS การซ่อนตามความยาว หรือเวลาแสดงคงที่ในตัวเลือกโอเวอร์เลย์บอต ใช้ clearBotOverlay สำหรับล้างด้วยตนเองผ่าน API |
!bot ไม่ทำอะไร | การกรองคำสั่ง | ใช้คำเรียกแบบคำธรรมดา หรืออนุญาตให้คำสั่งนั้นผ่านตัวกรองคำสั่งส่วนกลาง |
| ประมวลผลเฉพาะการทดสอบครั้งแรก | ระยะเวลา | รอคำขอที่กำลังทำงาน เว้นช่วงคูลดาวน์ และจำไว้ว่าค่า keep-alive 0 อาจทำให้ทุกคำขอต้องเริ่มโหลดโมเดลใหม่ |
ส่วนตัว chatbot.html ว่างอยู่ | บอตส่วนตัวแยกต่างหาก | เปิดตัวเลือกแชตบอตส่วนตัวและใช้ลิงก์ที่สร้างให้พร้อมเซสชันเดียวกัน การทดสอบนี้ไม่ได้ทดสอบบอตสดหลัก |
หน้าบอต AI อื่น ๆ
บอตหลัก แชตส่วนตัว บอตเซ็นเซอร์ และผู้ช่วยดำเนินรายการ AI เป็นเครื่องมือแยกกัน มีการตั้งค่าและประวัติต่างกัน
ดูฟีเจอร์ AI อื่น ๆ ได้ใน คู่มือโหมด AI.