Botnoi Voice
1 พ.ค. 2566
Label
UX/UI
คงไม่ต้องอธิบายสรรพคุณว่า ChatGPT ช่วยพวกเรายังไงได้บ้าง จะสะดวกมาก ๆ ถ้าเราสามารถนำมันไปใช้ใน LINE สามารถถามโน่นถามนี่ โดยไม่ต้องเข้าเว็บ ข้อจำกัดเล็กน้อยก็คือ อาจจะต้องเป็นคนที่เขียนโปรแกรมเป็นเพื่อทำการเชื่อมต่อ
จากคลิปนี้ เราจะเห็นได้ว่า เราสามารถทำอะไรได้มากมาย ไม่ว่าจะถามเกี่ยวกับปัญหาโลกร้อน เขียน resume บวกเลข จัดทริป
วันนี้ ในบทความนี้ ผมจะสอนให้คนที่เขียนโปรแกรมไม่เป็นเลย สามารถนำ ChatGPT ไปเชื่อมต่อกับ LINE OA ง่าย ๆ โดยไม่ต้องเขียน Code สักบรรทัด เริ่มจาก
1. สร้าง Chatbot เชื่อมต่อกับ LINE OA
ก่อนอื่นเราจะต้องไปสร้าง LINE OA ก่อน LINE OA จะเป็นช่องทางหรือ Channel ที่คนจะติดต่อสื่อสารกับ ChatGPT
1a. สร้าง LINE OA
เข้าไปที่ https://manager.line.biz/ หลังจาก Log-in เข้าไปแล้ว มองไปด้านซ้าย จะมีปุ่มให้กดสร้างใหม่ (ตามรูป ข้อ 1)
กรอกข้อมูล ทำตามขั้นตอน (ตามรูป ข้อ 2)
จะได้ LINE OA และมี QR Code เพื่อเชิญชวนให้คนมาใช้งาน (ตามรูป ข้อ 3)
![](https://framerusercontent.com/images/HWtbhtFAK7MHSnWerAj6DtGt2XA.png)
1b. สร้าง Chatbot ใน platform ของ BOTNOI
เข้าไปที่ https://botnoi.ai เมื่อเข้ามาแล้วก็ให้ทำการ Log-in
มุมขวาบน จะมีปุ่มให้กดสร้าง Chatbot (New Chatbot)
กรอกข้อมูล Chatbot แล้วกด Create (ตามรูป ข้อ 1)
มุมซ้ายล่างสุด มีเมนู setting ที่เป็นเฟือง กดแล้วเลือกเมนู Connection (ตามรูป ข้อ 2)
ให้เลือก LINE ซึ่งจะมีวิธีเชื่อมต่อ 2 รูปแบบด้วยกัน การเชื่อมต่อแบบง่าย ให้กด LINE Modular Setting (ตามรูป ข้อ 3)
จากนั้น ให้กดเลือกบัญชี (ตามรูป ข้อ 4) เลือกเชื่อมต่อกับ LINE OA ที่สร้างไว้ก่อนหน้า แล้วกดปุ่มเชื่อมต่อ (ตามรูปข้อ 5)
![](https://framerusercontent.com/images/mvWqwdXE1DkC43pberuVd7rdAo.png)
2. ไปเอา API Key จาก OpenAI
3. สร้าง API Object ในเครื่องมือ BOTNOI
API คืออะไร? API อธิบายให้คนไม่ใช่สาย tech ฟัง มันคล้าย ๆ กับเว็บที่มี URL แต่ว่าแทนที่เราจะใส่ URL แล้วเราจะได้เว็บ เราจะได้ data ที่มี key กับ value แทน อาทิ นี่คือตัวอย่าง คำตอบที่ได้จาก API จะเป็นลักษณะแบบนี้ ที่เค้าเรียกว่า JSON format
{
"id": "cmpl-uqkvlQyYK7bGYrRHQ0eXlWi7",
"object": "text_completion",
"created": 1589478378,
"model": "text-davinci-003",
"choices": [
{
"text": "\n\nThis is indeed a test",
"index": 0,
"logprobs": null,
"finish_reason": "length"
}
],
"usage": {
"prompt_tokens": 5,
"completion_tokens": 7,
"total_tokens": 12
}
}
3a. ก่อนอื่นเราจะต้องเข้าใจว่า เราจะเรียกใช้ API ของ OpenAI ยังไง ถ้าเราดูจากเอกสาร documentation การใช้งาน ตามลิงค์นี้ https://platform.openai.com/docs/api-reference/completions/create
เราจะเจอว่า วิธีการเรียกใช้ API สำหรับการถาม (completions) จะต้องใช้อย่างนี้
curl https://api.openai.com/v1/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "text-davinci-003",
"prompt": "Say this is a test",
"max_tokens": 7,
"temperature": 0
}'
อธิบายค่าต่าง ๆ ที่เป็นพารามิเตอร์สำหรับการใช้งาน
ในส่วนของ Header -H ก็จะมี
Content-Type คือ ลักษณะของข้อมูล ซึ่งจะเป็น json
Authorization คือ key เพื่อหัก point ในการใช้งานนั่นเอง
สำหรับในส่วนของ Body -d ก็จะมี
model ก็ตามที่เราอยากใช้ แต่ละตัวความแม่น ความเร็วก็ต่างกัน สามารถลองทดลองกันดู
![](https://framerusercontent.com/images/vb071nusjuXsYbGhhqqU4zb0kM0.png)
สำหรับ prompt ก็คือ input หรือข้อความที่เราจะถาม ChatGPT เช่น ถามเกี่ยวกับบวกลบคูณหาร หรือทั่ว ๆ ไปเช่น เสือมีพันธ์อะไรบ้าง
max_token ก็คือ ความยาวของข้อความ ใน documentation ใส่แค่ 7 ซึ่งมันน้อยเกินไป ก็ให้ปรับให้เป็นสัก 1,000 ก็แล้วกัน ถ้าอยากได้ยาวกว่านั้นก็ใส่เพิ่ม (แต่ยิ่งยาวมากก็ต้องจ่ายมากนะ)
สุดท้ายก็คือ temperature ตัวนี้ คือถ้าเราใส่ค่าเยอะ ความ random ของคำตอบ มันก็จะสูงเพิ่มขึ้น
![](https://framerusercontent.com/images/XiZqsBvvijIYfJjnn8gxJnVccE.png)
3b. สร้าง API object ในเครื่องมือ BOTNOI
หากใครไม่เคยใช้เครื่องมือใช้แชทบอทของ BOTNOI เลย สามารถเริ่มต้นจากการศึกษา playlist นี้ครับ youtube playlist tutorial
โดยเข้าไปที่เครื่องสร้างแชทบอท BOTNOI จากนั้นก็ไปที่ในส่วนของ API Object เลือกว่าจะสร้างเป็นแบบ Post แล้วกรอกข้อมูลตามวิธีเรียกใช้ API ChatGPT (หัวข้อ 2a.) โดยโครงสร้างจะมีอยู่ด้วยกัน 3 ส่วนได้แก่ ส่วน URL ส่วนของ Header แล้วก็ส่วนของ Body แล้วให้เปลี่ยนค่าตรง prompt เป็น <<keyword>>
![](https://framerusercontent.com/images/Yo4pmwEtSQbKqrDJ7O627wfRUhk.png)
อธิบายก็คือระบบ BOTNOI จะเก็บข้อความที่ user ทักเข้ามาล่าสุด ในแชทบอท ไปเก็บไว้ในตัวแปร keyword ซึ่งเมื่อมีการเรียกใช้ API ระบบก็จะดึงค่าในตัวแปร keyword ส่งไปยังค่าของ prompt ที่ได้ลงทะเบียนไว้
4. ผูก API Object ที่สร้างขึ้นกับหัวข้อหรือ Intent แล้วแสดงผลลัพธ์ออกมา
สุดท้ายเราสามารถนำเอา API Object ไปผูกกับ Intent หรือหัวข้อใด ๆ แต่ในตัวอย่างนี้ผมจะผูก API Object นี้ กับ Fallback นั่นหมายความว่า หากข้อความที่ user ส่งเข้ามาในแชทบอท ไม่ตรงกับ Intent ใด ๆ ก็ให้เรียกใช้ API Object ChatGPT
ซึ่งผมคิดว่าก็น่าจะทำให้ Chatbot ดูฉลาดดี หัวข้อใด ๆ ที่เราอยากให้ Chatbot ตอบตามที่เราต้องการ ก็เทรน Intent ตามปกติ เช่น ขอโปรโมชั่น ถามเวลาเปิดปิดร้าน แต่อะไรที่นอกเหนือจากที่เราสอน Chatbot ไป ก็ให้ ChatGPT ตอบ
วิธีการผูกนั้น ก็คือ
![](https://framerusercontent.com/images/7g6syguklIXi59eLs9wGhTzotqY.png)
4a. ให้ไปที่ tab Train Bot ด้านซ้าย เลือก Default Fallback แล้วกดที่ BOT RESPONSE
4b. กด Existing Objects แล้วเลือก API object ที่สร้างไว้
4c. ให้ใส่ <<API_chatgpt-test.choices.0.text>> เพื่อดึงค่าออกมาจาก response API ที่ได้มา
อธิบายค่า c เพิ่ม จาก response ที่ได้จาก API จะเป็นดังนี้ครับ
{
"id": "cmpl-uqkvlQyYK7bGYrRHQ0eXlWi7",
"object": "text_completion",
"created": 1589478378,
"model": "text-davinci-003",
"choices": [
{
"text": "\n\nThis is indeed a test",
"index": 0,
"logprobs": null,
"finish_reason": "length"
}
],
"usage": {
"prompt_tokens": 5,
"completion_tokens": 7,
"total_tokens": 12
}
}
เราต้องการ “text” ที่เป็นคำตอบจาก API ดังนั้น เราจะต้อง .choices ซึ่งเป็น array เพื่อไปที่ object ตัวแรก ของ array ก็จึงต้อง .0 แล้วจากนั้นเพื่อไปที่ text เราก็จะต้อง .text อีกครั้ง ดังนั้นเราจะต้องใส่ <<API_chatgpt-test.choices.0.text>> เพื่อดึงคำตอบออกมาโชว์ผ่าน chatbot ครับ
ก็เป็นอันเสร็จสิ้นนะครับ สุดท้ายผมได้ทำคลิปให้ทุกคนทำตามได้ครับ
สำหรับใครที่สนใจสร้างแชทบอท BOTNOI มีเครื่องมือที่สามารถใช้พัฒนา AI แชทบอท ที่ซับซ้อนแต่ง่ายในการพัฒนา ทดลองได้ที่ได้ https://botnoi.ai และมี playlist ลิงค์สอนที่ -> youtube playlist tutorial
ส่วนหากใครสนใจใช้บริการ BOTNOI ในสร้างแชทบอท หรือให้คำปรึกษาเกี่ยวกับ AI & Data science ติดต่อได้ผ่านเวป -> Botnoi และ FB Page Botnoi Consulting นะครับ
Back