บทนำ

สร้าง AI Chat Bot ด้วย Python สำหรับผู้เริ่มต้น
AI Chat Bot กำลังเป็นที่นิยมมากขึ้นเรื่อยๆ ในยุคที่ AI กำลังเปลี่ยนแปลงโลก Chat Bot คือโปรแกรมที่สามารถสนทนากับมนุษย์ได้ เหมือนที่คุณเคยคุยกับ ChatGPT หรือ Google Bard นั่นเอง!
บทความนี้จะพาคุณสร้าง Chat Bot ของตัวเองด้วย Python และ OpenAI API แบบที่คุณไม่จำเป็นต้องเคยเขียนโค้ดมาก่อนก็ทำได้! เพียงแค่ทำตามขั้นตอนง่ายๆ คุณจะมี Chat Bot เป็นของตัวเองภายใน 30 นาที
เตรียมความพร้อม: ติดตั้งโปรแกรมที่จำเป็น
1. ติดตั้ง Python
Python คือภาษาโปรแกรมมิ่งที่เราจะใช้เขียน Chat Bot
- เข้าไปที่ เว็บไซต์ Python
- กดปุ่ม "Download Python 3.x.x" (เลือกเวอร์ชันล่าสุด)
- เปิดไฟล์ที่ดาวน์โหลดมาและติดตั้ง โดยตรวจสอบให้แน่ใจว่าได้เลือก "Add Python to PATH"
2. ขอ OpenAI API Key
API Key คือรหัสที่ใช้เชื่อมต่อกับบริการของ OpenAI
- ลงทะเบียนที่ OpenAI
- หลังจากเข้าสู่ระบบ ไปที่เมนู "API Keys"
- กดปุ่ม "Create new secret key"
- บันทึก Key ไว้ (ระวัง! คุณจะเห็นมันได้ครั้งเดียวเท่านั้น)
⚠️ หมายเหตุ: OpenAI API มีค่าใช้จ่าย แต่จะได้เครดิตฟรี $5 เมื่อลงทะเบียนใหม่ ซึ่งเพียงพอสำหรับการทดลองใช้
3. ติดตั้ง Package ที่จำเป็น
Package คือชุดเครื่องมือสำเร็จรูปที่เราจะนำมาใช้สร้าง Chat Bot
เปิดโปรแกรม Command Prompt (Windows) หรือ Terminal (Mac/Linux) และพิมพ์คำสั่งนี้:
pip install openai python-dotenv streamlit
เรากำลังติดตั้ง 3 สิ่งนี้:
- openai: ใช้เชื่อมต่อกับ AI ของ OpenAI
- python-dotenv: ช่วยจัดการข้อมูลส่วนตัว เช่น API Key
- streamlit: ใช้สร้างหน้าเว็บแอปพลิเคชันอย่างง่าย
การสร้างโครงสร้างโปรเจกต์
ก่อนอื่น เราต้องสร้างโฟลเดอร์และไฟล์ที่จำเป็นสำหรับโปรเจกต์ของเรา
1. สร้างโฟลเดอร์สำหรับโปรเจกต์
- สร้างโฟลเดอร์ใหม่บนคอมพิวเตอร์ของคุณ ตั้งชื่อว่า "chatbot"
- เปิดโฟลเดอร์นี้
2. สร้างไฟล์ภายในโปรเจกต์
ในโฟลเดอร์ "chatbot" ให้สร้างไฟล์ต่อไปนี้:
chatbot/
├── .env # เก็บ API key (ไฟล์ลับ)
├── app.py # โค้ดหลักของเรา
└── requirements.txt # รายการ package ที่ใช้
3. สร้างไฟล์ .env
ไฟล์นี้จะเก็บข้อมูลส่วนตัวของคุณ (API Key) โดยไม่ต้องเปิดเผยในโค้ด
ใช้โปรแกรม Notepad (Windows) หรือ TextEdit (Mac) สร้างไฟล์ชื่อ ".env" แล้วใส่ข้อความนี้:
OPENAI_API_KEY=your-api-key-here
แทนที่ your-api-key-here
ด้วย API Key ที่คุณได้จาก OpenAI
💡 เคล็ดลับ: ในบาง OS อาจมองไม่เห็นไฟล์ที่ขึ้นต้นด้วย "." ถ้าเกิดปัญหานี้ ให้สร้างเป็น "env.txt" ก่อน แล้วเปลี่ยนชื่อเป็น ".env"
4. สร้างไฟล์ requirements.txt
ไฟล์นี้จะบอกว่าโปรเจกต์ของเราต้องใช้ package อะไรบ้าง
สร้างไฟล์ชื่อ "requirements.txt" และใส่ข้อความนี้:
openai==0.28.1
python-dotenv==1.0.0
streamlit==1.26.0
เขียนโค้ด Chat Bot ทีละขั้นตอน
ถึงเวลาเขียนโค้ดแล้ว! เราจะแบ่งเป็นส่วนๆ เพื่อให้เข้าใจง่าย
1. สร้างไฟล์ app.py
สร้างไฟล์ชื่อ "app.py" ในโฟลเดอร์ "chatbot" แล้วเริ่มเขียนโค้ดตามขั้นตอนต่อไปนี้
2. นำเข้า Package ที่จำเป็น
เริ่มต้นด้วยการบอก Python ว่าเราจะใช้เครื่องมืออะไรบ้าง
# นำเข้า package ที่จำเป็น
import streamlit as st # ใช้สร้างหน้าเว็บ
import openai # ใช้เชื่อมต่อกับ OpenAI
from dotenv import load_dotenv # ใช้โหลดไฟล์ .env
import os # ใช้อ่านค่า environment variable
3. โหลด API Key
ต่อไปเราจะดึง API Key จากไฟล์ .env
# โหลด API key จากไฟล์ .env
load_dotenv() # โหลดข้อมูลจากไฟล์ .env
openai.api_key = os.getenv("OPENAI_API_KEY") # ดึง API Key มาใช้งาน
4. สร้างหน้า UI ด้วย Streamlit
ต่อไปเราจะสร้างหน้าตาของแอปพลิเคชัน
# สร้างหน้า UI ของแอปพลิเคชัน
st.title("🤖 AI Chat Bot ของฉัน") # สร้างหัวข้อ
st.write("สวัสดี! ฉันคือ AI Chat Bot ที่พร้อมคุยกับคุณ พิมพ์ข้อความด้านล่างได้เลย")
5. เก็บประวัติการแชท
เราต้องสร้างตัวแปรเพื่อเก็บประวัติการสนทนา
# เก็บประวัติการแชท
if "messages" not in st.session_state: # ตรวจสอบว่ามีประวัติหรือยัง
# ถ้ายังไม่มี ให้สร้างรายการว่างไว้
st.session_state.messages = []
6. แสดงประวัติการแชท
แสดงข้อความที่เคยคุยกันไว้บนหน้าจอ
# แสดงประวัติการแชททั้งหมด
for message in st.session_state.messages:
# สร้างกล่องข้อความตามบทบาท (ผู้ใช้/bot)
with st.chat_message(message["role"]):
# แสดงข้อความในกล่อง
st.markdown(message["content"])
7. รับข้อความจากผู้ใช้
สร้างช่องสำหรับให้ผู้ใช้พิมพ์ข้อความ
# รับข้อความจากผู้ใช้
if prompt := st.chat_input("พิมพ์ข้อความของคุณที่นี่..."):
# เพิ่มข้อความของผู้ใช้ลงในประวัติ
st.session_state.messages.append({"role": "user", "content": prompt})
# แสดงข้อความของผู้ใช้
with st.chat_message("user"):
st.markdown(prompt)
8. ส่งข้อความไปยัง OpenAI
ส่งข้อความไปถาม AI และรับคำตอบกลับมา
# ส่งข้อความไปยัง OpenAI
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": m["role"], "content": m["content"]}
for m in st.session_state.messages]
)
9. แสดงคำตอบจาก AI
รับคำตอบจาก AI และแสดงบนหน้าจอ
# ดึงข้อความตอบกลับจาก AI
assistant_response = response.choices[0].message["content"]
# เพิ่มคำตอบลงในประวัติ
st.session_state.messages.append(
{"role": "assistant", "content": assistant_response}
)
# แสดงคำตอบ
with st.chat_message("assistant"):
st.markdown(assistant_response)
⚠️ หมายเหตุ: เรียกใช้บรรทัด 8-9 กับทุกรายการใน
st.session_state.messages
เพื่อส่งทั้งประวัติไปให้ OpenAI AI จะได้เข้าใจบริบทการสนทนา
10. รวมโค้ดทั้งหมด
นี่คือโค้ดเต็มๆ ทั้งหมดของไฟล์ app.py:
import streamlit as st
import openai
from dotenv import load_dotenv
import os
# โหลด API key
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
# สร้าง UI
st.title("🤖 AI Chat Bot ของฉัน")
st.write("สวัสดี! ฉันคือ AI Chat Bot ที่พร้อมคุยกับคุณ พิมพ์ข้อความด้านล่างได้เลย")
# เก็บประวัติการแชท
if "messages" not in st.session_state:
st.session_state.messages = []
# แสดงประวัติการแชท
for message in st.session_state.messages:
with st.chat_message(message["role"]):
st.markdown(message["content"])
# รับข้อความจากผู้ใช้
if prompt := st.chat_input("พิมพ์ข้อความของคุณที่นี่..."):
st.session_state.messages.append({"role": "user", "content": prompt})
with st.chat_message("user"):
st.markdown(prompt)
# ส่งข้อความไปยัง OpenAI
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": m["role"], "content": m["content"]}
for m in st.session_state.messages]
)
# แสดงคำตอบ
assistant_response = response.choices[0].message["content"]
st.session_state.messages.append(
{"role": "assistant", "content": assistant_response}
)
with st.chat_message("assistant"):
st.markdown(assistant_response)
รันโปรแกรมและทดสอบ Chat Bot
1. รันโปรแกรม
เปิด Command Prompt หรือ Terminal ให้อยู่ในโฟลเดอร์ "chatbot" แล้วพิมพ์คำสั่ง:
streamlit run app.py
เบราว์เซอร์จะเปิดขึ้นโดยอัตโนมัติที่ http://localhost:8501
💡 เคล็ดลับ: ถ้าไม่รู้วิธีเปิด Command Prompt/Terminal ให้อยู่ในโฟลเดอร์ "chatbot" ลองวิธีนี้:
- Windows: คลิกขวาที่โฟลเดอร์ "chatbot" แล้วเลือก "Open command window here" หรือ "Open in Terminal"
- Mac: คลิกขวาที่โฟลเดอร์ "chatbot" แล้วเลือก "New Terminal at Folder"
2. ทดสอบ Chat Bot
ตอนนี้คุณจะเห็นหน้าเว็บที่มีชื่อ "🤖 AI Chat Bot ของฉัน" ลองทดสอบโดย:
- พิมพ์ข้อความลงในช่องด้านล่าง เช่น "สวัสดี AI!"
- กด Enter
- รอสักครู่ แล้ว AI จะตอบกลับ
⚠️ หมายเหตุ: ถ้าเกิดข้อผิดพลาด "OpenAI API Error" ให้ตรวจสอบว่า:
- คุณได้สร้างไฟล์ .env ถูกต้อง
- API Key ที่ใส่ถูกต้อง
- คุณมีเครดิตเหลือใน OpenAI Account
3. แก้ไขโค้ดและรีเฟรช
คุณสามารถแก้ไขไฟล์ app.py และทดลองเพิ่มฟีเจอร์ใหม่ได้ตลอดเวลา เช่น:
- เปลี่ยนสีของ UI โดยใช้
st.markdown("""<style> ... </style>""", unsafe_allow_html=True)
- เพิ่มคำแนะนำให้ AI โดยเพิ่ม system message ในการสนทนา
- เพิ่มปุ่มลบประวัติการแชท
ทุกครั้งที่บันทึกไฟล์ Streamlit จะรีเฟรชอัตโนมัติ!
ปรับแต่ง Chat Bot ให้ฉลาดขึ้น
ตอนนี้คุณมี Chat Bot ทำงานได้แล้ว แต่เรายังทำให้มันฉลาดขึ้นได้อีก!
1. เพิ่มคำแนะนำให้ AI
เราสามารถเพิ่ม "คำสั่ง" ให้ AI รู้ว่าควรทำตัวยังไง
เพิ่มโค้ดนี้ต่อจากบรรทัดที่สร้าง st.session_state.messages = []
:
# เพิ่มคำแนะนำเริ่มต้นให้ AI (ผู้ใช้จะไม่เห็นข้อความนี้)
st.session_state.messages.append({
"role": "system",
"content": "คุณคือผู้ช่วย AI ที่เป็นมิตร ชื่อ 'น้องเผ็ด' ให้ข้อมูลที่ถูกต้อง " +
"ตอบสั้นๆ เป็นกันเอง และใส่ emoji ในการตอบทุกครั้ง"
})
2. เพิ่มปุ่มล้างประวัติการแชท
เพิ่มปุ่มล้างประวัติเพื่อเริ่มการสนทนาใหม่
เพิ่มโค้ดนี้ไว้หลังจากบรรทัด st.title("🤖 AI Chat Bot ของฉัน")
:
# เพิ่มปุ่มล้างประวัติการแชท
if st.button("ล้างประวัติการสนทนา"):
st.session_state.messages = []
# เพิ่มคำแนะนำเริ่มต้นให้ AI อีกครั้ง
st.session_state.messages.append({
"role": "system",
"content": "คุณคือผู้ช่วย AI ที่เป็นมิตร ชื่อ 'น้องเผ็ด' ให้ข้อมูลที่ถูกต้อง " +
"ตอบสั้นๆ เป็นกันเอง และใส่ emoji ในการตอบทุกครั้ง"
})
st.rerun() # รีเฟรชหน้าเว็บ
3. เพิ่มตัวเลือกโมเดล AI
ให้ผู้ใช้เลือกว่าจะใช้โมเดล AI แบบไหน
เพิ่มโค้ดนี้ก่อนส่วนที่รับข้อความจากผู้ใช้:
# เพิ่มตัวเลือกโมเดล
model = st.selectbox(
"เลือกโมเดล AI:",
["gpt-3.5-turbo", "gpt-4"],
index=0 # เลือกตัวแรกเป็นค่าเริ่มต้น
)
และแก้ไขส่วนที่ส่งข้อความไปยัง OpenAI:
# ส่งข้อความไปยัง OpenAI
response = openai.ChatCompletion.create(
model=model, # ใช้โมเดลที่ผู้ใช้เลือก
messages=[{"role": m["role"], "content": m["content"]}
for m in st.session_state.messages]
)
⚠️ หมายเหตุ: โมเดล gpt-4 จะใช้เครดิตมากกว่า gpt-3.5-turbo แต่จะฉลาดกว่า
4. แสดงไอคอนกำลังโหลด
เพิ่มไอคอนกำลังโหลดระหว่างรอคำตอบจาก AI
เปลี่ยนโค้ดส่วนที่ส่งข้อความไปยัง OpenAI เป็น:
# แสดงไอคอนกำลังโหลด
with st.chat_message("assistant"):
with st.spinner("กำลังคิด..."):
# ส่งข้อความไปยัง OpenAI
response = openai.ChatCompletion.create(
model=model,
messages=[{"role": m["role"], "content": m["content"]}
for m in st.session_state.messages]
)
# ดึงข้อความตอบกลับจาก AI
assistant_response = response.choices[0].message["content"]
# เพิ่มคำตอบลงในประวัติ
st.session_state.messages.append(
{"role": "assistant", "content": assistant_response}
)
# แสดงคำตอบ
st.markdown(assistant_response)
สรุป
สรุป: คุณได้เรียนรู้อะไรไปบ้าง
ยินดีด้วย! 🎉 ตอนนี้คุณได้สร้าง AI Chat Bot เป็นของตัวเองเรียบร้อยแล้ว
สิ่งที่คุณได้เรียนรู้:
- วิธีติดตั้ง Python และ Package ที่จำเป็น
- วิธีขอและใช้ OpenAI API Key
- วิธีสร้าง UI ด้วย Streamlit
- วิธีเชื่อมต่อกับ AI ของ OpenAI
- วิธีจัดการประวัติการสนทนา
แนวทางพัฒนาต่อ
จากนี้คุณสามารถพัฒนา Chat Bot ของคุณต่อยอดได้อีกมากมาย เช่น:
- เพิ่มความสามารถในการแปลงข้อความเป็นเสียง
- เพิ่มการอัปโหลดรูปภาพหรือไฟล์
- สร้าง Chat Bot ที่เชี่ยวชาญเฉพาะด้าน เช่น สอนภาษา, ให้คำแนะนำสุขภาพ
- เพิ่มการบันทึกประวัติการสนทนาลงฐานข้อมูล
หากมีข้อสงสัยหรือต้องการเรียนรู้เพิ่มเติม สามารถติดตามบทความอื่นๆ ของเราได้ที่เว็บไซต์ "เผ็ดน้อย" เพราะความรู้ไม่จำเป็นต้องยาก แต่ต้องเข้าใจได้!