AI
น้องๆ เคยสงสัยไหมว่าทำไม Chatbot สมัยนี้มันฉลาดจัง? ตอบคำถามได้แทบทุกเรื่อง แถมยังเขียนโค้ดให้เราได้อีก! เบื้องหลังความฉลาดพวกนี้ส่วนใหญ่ก็คือ OpenAI API นี่แหละครับ
OpenAI API มันคือชุดเครื่องมือที่ OpenAI (บริษัทที่สร้าง ChatGPT นั่นแหละ) เปิดให้นักพัฒนาอย่างพวกเราเอาไปใช้สร้างแอปพลิเคชันเจ๋งๆ ได้มากมาย ไม่ว่าจะเป็นสร้าง Chatbot, ช่วยเขียนคอนเทนต์, หรือแม้กระทั่งสร้างรูปภาพจากข้อความ (DALL-E) ก็ยังได้
แล้วทำไมมันถึงสำคัญ? สมัยผมทำร้านเน็ต SiamCafe ใหม่ๆ (ปี 2540 กว่าๆ) ถ้าอยากได้โปรแกรมอะไรซักอย่าง ต้องเขียนเองหมดทุกอย่าง ไม่มีใครมาช่วย แต่ยุคนี้แค่เรียก API ไม่กี่บรรทัด ก็ได้ฟีเจอร์เทพๆ มาใช้แล้ว ประหยัดเวลาไปเยอะมากๆ
แน่นอนว่าเราจะใช้ Python ในการเรียก OpenAI API ดังนั้นน้องๆ ต้องพอมีพื้นฐาน Python บ้างนะ ไม่ต้องถึงกับเทพ แต่ขอให้เขียน loop เป็น, เข้าใจเรื่อง function, และจัดการกับ data type พื้นฐานได้ก็พอ
ถ้าใครยังไม่เคยเขียน Python เลย แนะนำให้ลองไปหา tutorial ออนไลน์ดูก่อน มีเยอะแยะมากมายเลยครับ หรือถ้าขี้เกียจอ่าน ลองพิมพ์ใน ChatGPT ว่า "สอน Python เบื้องต้น" ก็ได้นะ มันสอนได้ละเอียดกว่าผมอีก!
ก่อนจะเรียก OpenAI API ได้ เราต้องมี API Key ก่อน ซึ่งก็เหมือน password ที่ใช้ยืนยันตัวตนว่าเราเป็นใคร และมีสิทธิ์ใช้งาน API นี้
วิธีขอ API Key ก็คือต้องไปสมัคร account ที่ OpenAI Platform แล้วก็ไปสร้าง API Key ใน dashboard ของเราเอง สมัยผมเริ่มทำ API ใหม่ๆ ก็งงๆ เหมือนกัน แต่ลองคลิกๆ ดู เดี๋ยวก็เข้าใจเองแหละ
สำคัญมากๆ คือ อย่าเอา API Key ไปเผยแพร่ให้คนอื่นรู้เด็ดขาด! เพราะถ้ามีคนเอา API Key เราไปใช้ ก็เท่ากับว่าเขาใช้เงินของเราไปฟรีๆ เลยนะ
การใช้งาน OpenAI API ผ่าน Python ไม่ได้ยากอย่างที่คิดครับ OpenAI มี library ที่ชื่อว่า openai มาให้เราใช้ ทำให้การเรียก API เป็นเรื่องง่ายมากๆ
openaiขั้นตอนแรกก็คือติดตั้ง library openai ก่อน ทำได้ง่ายๆ ผ่าน pip (Python package installer) โดยเปิด terminal หรือ command prompt แล้วพิมพ์คำสั่งนี้:
pip install openai
สมัยผมเริ่มเขียนโปรแกรมใหม่ๆ ต้อง config environment เองหมดทุกอย่าง ยุ่งยากสุดๆ แต่สมัยนี้ pip มันช่วยเราได้เยอะเลย สบายกว่าเยอะ!
หลังจากติดตั้ง library แล้ว เราต้องบอก Python ว่า API Key ของเราคืออะไร ทำได้โดยการตั้งค่า environment variable ที่ชื่อว่า OPENAI_API_KEY
วิธีตั้งค่า environment variable ก็ขึ้นอยู่กับ operating system ที่เราใช้ ถ้าเป็น Windows ก็เข้าไปตั้งค่าใน System Properties แต่ถ้าเป็น macOS หรือ Linux ก็ให้ export variable ใน terminal:
export OPENAI_API_KEY="YOUR_API_KEY"
อย่าลืมเปลี่ยน YOUR_API_KEY เป็น API Key ของเราจริงๆ นะ!
ทีนี้ก็ถึงเวลาเรียกใช้งาน API แล้ว! ลองดูตัวอย่างโค้ดนี้:
import openai
import os
openai.api_key = os.getenv("OPENAI_API_KEY")
response = openai.Completion.create(
engine="text-davinci-003",
prompt="เขียนบทกวีเกี่ยวกับ SiamCafe",
max_tokens=100,
n=1,
stop=None,
temperature=0.7,
)
print(response.choices[0].text)
โค้ดนี้จะเรียก API เพื่อให้ ChatGPT เขียนบทกวีเกี่ยวกับ SiamCafe ให้เรา ลองรันดูสิว่าจะได้ผลลัพธ์อะไรออกมา!
อธิบายโค้ดนิดนึง:
engine คือ model ที่เราจะใช้ (ในที่นี้คือ text-davinci-003 ซึ่งเป็น model ที่เก่งเรื่องการเขียน)prompt คือคำสั่งที่เราจะให้ ChatGPT ทำ (ในที่นี้คือ "เขียนบทกวีเกี่ยวกับ SiamCafe")max_tokens คือจำนวน token สูงสุดที่ ChatGPT จะสร้าง (ยิ่งมากยิ่งยาว แต่ก็เสียเงินเยอะขึ้น)n คือจำนวนบทกวีที่เราต้องการ (ในที่นี้คือ 1)temperature คือค่าที่กำหนดความ "สร้างสรรค์" ของ ChatGPT (ยิ่งสูงยิ่งสร้างสรรค์ แต่ก็อาจจะเพี้ยนๆ บ้าง)น้องๆ ลองเปลี่ยนค่าต่างๆ ในโค้ดดู แล้วดูว่าผลลัพธ์มันเปลี่ยนไปอย่างไร
OpenAI API ไม่ใช่ API เดียวในโลกนี้นะครับ ยังมี API อื่นๆ ที่ให้บริการคล้ายๆ กันอีกมากมาย แต่ละ API ก็มีข้อดีข้อเสียต่างกันไป ลองมาดูกันว่ามีอะไรบ้าง:
| API | ข้อดี | ข้อเสีย |
|---|---|---|
| OpenAI API |
|
|
| Google Cloud AI Platform |
|
|
| Hugging Face Hub |
|
|
สมัยผมทำร้านเน็ต SiamCafe ก็ต้องเลือกใช้เทคโนโลยีที่เหมาะสมกับ budget และความต้องการของเราเหมือนกัน เลือก API ก็เหมือนกันครับ ต้องดูว่าเราต้องการอะไร และมีงบประมาณเท่าไหร่
ถ้าเน้นความฉลาดและมีงบประมาณ OpenAI API ก็เป็นตัวเลือกที่ดี แต่ถ้าต้องการความถูกและ flexibility Google Cloud AI Platform หรือ Hugging Face Hub ก็เป็นตัวเลือกที่น่าสนใจ
สุดท้ายนี้ อยากจะฝากน้องๆ ว่าการเรียนรู้เทคโนโลยีใหม่ๆ เป็นสิ่งสำคัญมากๆ ในยุคนี้ ลองเอา OpenAI API ไปเล่นดู แล้วน้องๆ จะรู้ว่ามันมีอะไรให้ทำอีกเยอะแยะมากมายเลยครับ อย่าลืมแวะมาอ่านบทความอื่นๆ ใน SiamCafe Blog ด้วยนะ
ถ้ามีคำถามอะไร ถามมาได้เลยนะครับ ยินดีตอบเสมอ
น้องๆ หลายคนคงลองเล่น OpenAI API กันไปบ้างแล้วใช่มั้ย? สมัยผมทำร้านเน็ตฯ นี่นะ แค่มี Internet Explorer ก็หรูแล้ว (หัวเราะ) แต่ยุคนี้มัน AI ครองเมือง เราก็ต้องตามให้ทัน ทีนี้ มาดูกันว่ามีอะไรที่ผมอยากแชร์จากประสบการณ์ตรงบ้าง
อย่าคิดว่า AI มันเก่งทุกเรื่องนะ! มันเหมือนเด็กฉลาดที่ยังต้องการคนสอน ต้องป้อนข้อมูลให้ดี ถามคำถามให้เคลียร์ ไม่งั้นมันก็จะตอบแบบ "เอ๋อๆ" หรือไม่ก็ "มั่ว" มาให้
1. Prompt Engineering: ศิลปะการสั่ง AI
Prompt เนี่ย สำคัญสุดๆ! ลองนึกภาพว่าเราคุยกับเพื่อน ถ้าเราถามแบบวกวน เพื่อนก็งง Prompt ก็เหมือนกัน ต้องชัดเจน กระชับ ตรงประเด็น
สมัยผมเขียนโปรแกรมแรกๆ นี่นะ โค้ด "สปาเก็ตตี้" มาก (พันกันยุ่งเหยิง) Prompt ก็เหมือนกัน ถ้าเขียนไม่ดี AI ก็ "สปาเก็ตตี้" เหมือนกัน
# Bad Prompt
response = openai.Completion.create(
engine="davinci",
prompt="เขียนเรื่องอะไรก็ได้",
max_tokens=50
)
# Good Prompt
response = openai.Completion.create(
engine="davinci",
prompt="เขียนเรื่องสั้นเกี่ยวกับแมวที่พูดได้",
max_tokens=50
)
2. Temperature Control: ควบคุมความคิดสร้างสรรค์
Parameter temperature เนี่ย เป็นตัวกำหนด "ความบ้า" ของ AI (ฮ่าๆ) ถ้าตั้งไว้สูงๆ AI ก็จะสร้างสรรค์มาก แต่ก็อาจจะ "หลุด" ไปบ้าง ถ้าตั้งต่ำๆ ก็จะเน้นความถูกต้อง แต่ก็อาจจะ "น่าเบื่อ" ไปหน่อย
ตอนผมทำเกมออนไลน์ สมัยก่อนนะ ค่า temperature ก็เหมือนค่าความยากของเกม ถ้าสูงไป คนเล่นก็ "หัวร้อน" ถ้าต่ำไป คนเล่นก็ "เบื่อ" ต้องปรับให้พอดีๆ
response = openai.Completion.create(
engine="davinci",
prompt="เขียนเรื่องสั้นเกี่ยวกับแมวที่พูดได้",
max_tokens=50,
temperature=0.7 # ปรับค่าตรงนี้
)
3. Error Handling: รับมือกับความผิดพลาด
AI ไม่ใช่พระเจ้า! มันก็มี "เอ๋อ" บ้าง มี "เดี้ยง" บ้าง เราต้องเขียนโค้ดเผื่อไว้รับมือกับ error ที่อาจเกิดขึ้น
สมัยผมทำร้านเน็ตฯ ไฟดับบ่อยมาก! ผมต้องมี UPS (Uninterruptible Power Supply) ไว้สำรองไฟ โค้ดก็เหมือนกัน ต้องมี error handling ไว้สำรองความผิดพลาด
try:
response = openai.Completion.create(
engine="davinci",
prompt="เขียนเรื่องสั้นเกี่ยวกับแมวที่พูดได้",
max_tokens=50
)
print(response.choices[0].text)
except Exception as e:
print(f"Error: {e}")
4. Rate Limiting: อย่า "รัว" เกินไป
OpenAI เค้ามีจำกัดจำนวน request ที่เราส่งได้ต่อนาที (Rate Limiting) ถ้าเราส่ง "รัว" เกินไป เค้าก็จะบล็อกเรา
เหมือนตอนผมทำร้านเน็ตฯ ถ้ามีคนดาวน์โหลดไฟล์พร้อมๆ กันเยอะๆ เน็ตก็จะ "อืด" เราต้องจำกัดความเร็วในการดาวน์โหลดของแต่ละคน โค้ดก็เหมือนกัน ต้องหน่วงเวลาในการส่ง request ไป OpenAI
import time
for i in range(5):
try:
response = openai.Completion.create(
engine="davinci",
prompt="Hello",
max_tokens=5
)
print(response.choices[0].text)
except Exception as e:
print(f"Error: {e}")
time.sleep(1) # หน่วงเวลา 1 วินาที
OpenAI เค้ามีให้ใช้ฟรีบ้าง แต่ถ้าใช้เยอะๆ ก็ต้องจ่ายตังค์นะ เหมือนเล่นเกมออนไลน์ ถ้าอยากเทพ ก็ต้องเติมเงิน (ฮ่าๆ)
Engine แต่ละตัวก็เก่งไม่เหมือนกัน ลองศึกษาดูว่า Engine ไหนเหมาะกับงานของเรา SiamCafe Blog อาจมีข้อมูลเพิ่มเติมนะ
Prompt ไม่จำเป็นต้องยาว แต่ต้องชัดเจนและตรงประเด็น เหมือนเขียนอีเมล ไม่ต้องอ้อมค้อม
Temperature ขึ้นอยู่กับงาน ถ้าต้องการความสร้างสรรค์ ก็ตั้งสูงๆ ถ้าต้องการความถูกต้อง ก็ตั้งต่ำๆ
สำคัญมาก! โค้ดที่ดีต้องรับมือกับ error ได้ทุกรูปแบบ iCafeForex ก็ต้องมีระบบจัดการความเสี่ยงที่ดี
OpenAI API เป็นเครื่องมือที่ทรงพลัง แต่ต้องใช้ให้ถูกวิธี ต้องเข้าใจหลักการ Prompt Engineering, Temperature Control, Error Handling และ Rate Limiting ถ้าเข้าใจแล้ว น้องๆ ก็จะสามารถสร้างสรรค์อะไรเจ๋งๆ ได้อีกเยอะเลย