AI
December 2, 2023

OpenAI with Guardrail

เมื่อเรามี AI Chatbot แล้วถ้าเป็น Chatbot ที่ต้องการให้ถามตอบเฉพาะด้าน เราก็จะต้องมีสิ่งหนึ่งที่เอาไว้ป้องกันไม่ให้คนถามออกนอกเรื่อง ซึ่งก็คือ Guardrail ใช่ค่ะ วันนี้เราจะมาแนะนำให้รู้จักการทำ OpenAI with Guardrail ถ้าคุณต้องการคุม Chatbot ให้ตอบได้แค่เรื่องที่คุณต้องการ คุณต้องอ่านบทความนี้ค่ะ

สำหรับ Guideline พาร์ทแรกก็ยังเป็นในมุมมองของ Product เช่นเคย เราจะเล่าที่มา และเทคนิคต่าง ๆ ที่ได้เลือกใช้ในการทำ Demo เพื่อให้ทุกคนได้เรียนรู้ไปพร้อมกันค่ะ งั้นถ้าเราพร้อมแล้ว เราก็มาเริ่มกันเลย!

บทความนี้ยังคงอ้างอิง Demo ของทาง Vulture Prime เช่นเคยค่ะ โดย Demo ในรอบนี้ เราได้ทำเป็น Chatbot โดยได้แบ่ง 2 ฝั่ง เป็นฝั่ง user และฝั่ง admin โดยจะเป็นการจำลองว่า user คือผู้เข้ามาใช้งาน Chatbot ถามตอบคำถาม และ admin คือเจ้าของ Chatbot หรือคนกำหนดเกณฑ์การถามคำถาม Chatbot นี้

โดย user จะสามารถถามตอบคำถามได้เหมือน Chatbot ก่อนหน้าที่เราทำ แต่จะมีจุดต่างที่จะถามตอบได้เฉพาะที่เข้าเกณฑ์เท่านั้น เช่น Chatbot นี้ตั้งเกณฑ์ไว้ว่าถามได้เฉพาะเรื่องที่เกี่ยวข้องกับสัตว์เท่านั้น ถ้า user ถามคำถามอื่น ๆ ที่ไม่เกี่ยวข้องกับสัตว์ Chatbot ก็จะตอบกลับมาว่าไม่สามารถตอบคำถามนี้ได้

ในขณะที่ admin จะมีสิทธิ์ตั้งเกณฑ์การตั้งคำถามจำนวนกี่ข้อก็ได้ สามารถเพิ่มและล้างเกณฑ์ได้ใน Chatbot ส่วนของ admin ซึ่งจะแสดงเกณฑ์ทั้งหมดที่ได้ถูกใช้งานอยู่ ณ ขณะนี้ด้วย

Guardrail Feature for Content Moderation

อย่างที่บอกไปข้างต้น Guardrail มีไว้สำหรับผู้ที่ต้องการสร้าง Chatbot แบบกำหนดหัวข้อที่จะสามารถถามตอบได้ เพื่อควบคุมให้อยู่ในกฎเกณฑ์ที่ทางเว็บไซต์กำหนดไว้ ป้องกันไม่ให้ผิดวัตถุประสงค์ของ Chatbot ที่สร้างขึ้น หรือเพื่อป้องกันไม่ให้ข้อมูลที่ได้จาก Chatbot หลุดกรอบจนเกินไป จนอาจสร้างความเสียหายให้แก่เว็บไซต์ ดังนั้นเราจึงมี Guardrail ไว้เป็น Solution นั่นเอง

ซึ่งการสร้าง OpenAI with Guardrail ก็จะมีสิ่งที่ต้องทำดังนี้

Question Embedding with OpenAI Embedding

เมื่อ user ถามคำถามเข้ามา หรือที่เราเรียกว่า Prompt ก็จะถูกนำเข้า Model Embedding ซึ่งมีหน้าที่แปลงข้อมูลจาก format ต่าง ๆ ให้เป็น Vector เพื่อให้สะดวกต่อการนำไปใช้ต่อ โดยจะนำเอาไปเปรียบเทียบกับเกณฑ์ซึ่งจะถูกจัดเก็บไว้ในรูปแบบของ Vector เช่นกัน จึงต้องแปลงเป็น Vector เพื่อให้นำไปใช้เปรียบเทียบความเหมือนกันได้ โดยในที่นี้ Prompt ของเราก็ถูก Embedding ด้วย OpenAI Embedding ค่ะ

Vector Database for Storing Rules

เกณฑ์หรือ Rule นั้น เราได้ใช้ Vector Database ในการเก็บ เพื่อให้เปรียบเทียบ Similarity ได้อย่างรวดเร็วและถูกต้อง โดยในที่นี้เราได้เลือกใช้ Chroma เป็น Vector Database อีกเช่นเคยค่ะ

โดยกระบวนการก่อนหน้าที่จะถูกนำมาเก็บใน Vector Database นั้น Rule ก็จะผ่าน Embedding Model เพื่อแปลงเป็น Vector มาเช่นเดียวกับ Prompt โดยเมื่อ admin ได้ใส่ Rule เข้ามา ก็จะถูกแปลงเป็น Vector และส่งต่อไปเก็บยัง Vector Database ต่อไป จนกระทั่ง admin ได้ทำการล้างค่าก็จะทำการลบค่าทั้งหมดใน Database ทิ้งไปค่ะ

Similarity Comparison with Predefined Rules

จากด้านบนที่บอกว่าเราแปลง Prompt เป็น Vector เพื่อใช้ในการเปรียบเทียบกับเกณฑ์ เพราะการที่เราจะรู้ว่า Prompt นั้นยังอยู่ในเกณฑ์หรือไม่ เราใช้วิธีการเปรียบเทียบด้วย Vector หรือการหา Similarity โดยเราสามารถกำหนดเปอร์เซ็นต์ (%) ความคล้ายว่ามีความคล้ายกับ Rule กี่เปอร์เซ็นต์ ถ้าความคล้ายไม่ถึงเปอร์เซ็นต์ที่กำหนดก็ไม่ให้ดำเนินการส่ง Prompt ไปยัง OpenAI ต่อ แต่ถ้าเกินก็ให้ดำเนินการต่อไป เช่น

  • ถ้าเรากำหนดค่า Similarity ว่าต้องมีความคล้ายกันมากกว่า 99% จึงจะส่งไปยัง OpenAI ต่อ
  • ถ้า Prompt ที่เข้ามามี Similarity 80% ก็จะตอบเป็น Error Message กลับไป ถ้า Prompt ที่เข้ามามี Similarity 99.5% ก็จะถูกส่งต่อไปยัง OpenAI และตอบคำถามกลับมา

ยกตัวอย่างเช่น เราได้กำหนดเกณฑ์ว่า ให้ถามคำถามที่เกี่ยวข้องกับแมวเท่านั้น โดย Similarity ต้องมากกว่า 85%

  • Prompt A : ประเทศไทยมีสัตว์สงวนมีอะไรบ้าง → Similarity = 79% Error Message
  • Prompt B : สายพันธุ์แมวที่คนนิยมเลี้ยงมากที่สุด → Similarity = 86% ไปต่อยัง OpenAI

Admin Interface for Rule Management and User Interface for Chat Interactions

สำหรับ user เพื่อให้ง่ายต่อการใช้งานจึงมี UI เพื่อให้สามารถถามตอบคำถามในรูปแบบ Chat ได้สะดวกรวดเร็ว ในขณะที่ฝั่ง admin เพื่อให้ง่ายต่อการจัดการ Chatbot การกำหนด Rule จึงมี UI ในส่วนของ Admin เช่นกัน โดยขณะออกแบบให้คำนึงถึง UX ของผู้ใช้งานทุกคนด้วย เพื่อให้การใช้งานเป็นไปอย่างราบรื่นและไม่ทำให้เกิดความสับสนมากที่สุด

Backend, Deployment and API Gateway

เช่นเคยค่ะ เรายังคงเลือกใช้ Backend เป็น FastAPI, Deploy ลงบน EC2 และใช้ API Gateway เพื่อจัดการ CORS สำหรับใครที่สนใจอยากเรียนรู้เพิ่มเติมเกี่ยวกับการใช้งาน Cloud หรือ API Gateway ก็สามารถไปอ่านบทความตามนี้ได้ค่ะ

ขายของแบบที่สุด → รวมบทความเกี่ยวกับ Cloud Computing ทั้งหมด

ซึ่งถ้าจากทั้งหมดที่เล่าไปก็จะมี user flow ดังนี้

Admin

User

และนี่ก็คือ OpenAI with Guardrail ซึ่งเราก็หวังว่าบทความนี้จะเป็นประโยชน์กับทุกคนที่สนใจไม่มากก็น้อย สำหรับใครที่ยังมีข้อสงสัย มี Feedback หรือต้องการสอบถามเพิ่มเติมสามารถติดต่อที่ Facebook Page : Vulture Prime ได้เลย ไว้พบกันบทความหน้าค่ะ 👋

Aa

© 2023, All Rights Reserved, VulturePrime co., ltd.