เขียนโค้ดให้สนุกขึ้น: เมื่อ LLM กลายเป็นผู้ช่วยไขปริศนาคู่ใจ
4 วิธีใช้ Prompt สั่งให้ AI ช่วยเขียน อธิบาย แปล และแก้บั๊กโค้ด
Large Language Models ไม่ได้เก่งแต่เรื่องภาษา แต่ยังสามารถเปลี่ยนเรื่องโค้ดดิ้งยาก ๆ ให้กลายเป็นเครื่องมือทางวิทยาศาสตร์ได้ ลองนึกภาพว่าเราสามารถสั่งให้คอมพิวเตอร์ช่วยคำนวณสูตรฟิสิกส์ที่ซับซ้อน หรือจำลองการเปลี่ยนแปลงทางเคมีง่าย ๆ ได้ มันจะเจ๋งแค่ไหน วันนี้พี่แอดมินมายกตัวอย่างให้ทุกคนดูกันค่ะ
1. ให้ AI สร้างเครื่องมือคำนวณทางวิทยาศาสตร์ (Prompts for writing code)
ในวิชาวิทยาศาสตร์ ไม่ว่าจะเป็นฟิสิกส์ เคมี หรือชีววิทยา เรามักจะเจอสูตรและการคำนวณเต็มไปหมดเลยใช่ไหมคะ ซึ่งเจ้า LLMs นั้นสามารถช่วยเราสร้างโปรแกรมคำนวณเล็ก ๆ ขึ้นมา เพื่อใช้ตรวจสอบความเข้าใจ หรือช่วยประหยัดเวลาคำนวณด้วยมือได้เยอะเลย
ตัวอย่าง:
สิ่งที่เราสั่ง (Input):
ช่วยเขียนฟังก์ชัน Python สำหรับคำนวณพลังงานจลน์ (Kinetic Energy)
โดยรับมวล (หน่วยเป็นกิโลกรัม) และความเร็ว (หน่วยเป็นเมตรต่อวินาที)
เป็นอินพุต สูตรคือ KE = 0.5 · m · v²
สิ่งที่ AI สร้างให้ (Output):
def calculate_kinetic_energy(mass, velocity):
"""
ฟังก์ชันสำหรับคำนวณพลังงานจลน์
mass: มวลของวัตถุ (kg)
velocity: ความเร็วของวัตถุ (m/s)
คืนค่าพลังงานจลน์ (Joules)
"""
kinetic_energy = 0.5 * mass * (velocity ** 2)
return kinetic_energy
# ตัวอย่างการเรียกใช้งานฟังก์ชัน
m = float(input("ป้อนค่ามวล (kg): "))
v = float(input("ป้อนค่าความเร็ว (m/s): "))
ke = calculate_kinetic_energy(m, v)
print(f"วัตถุมวล {m:.2f} kg เคลื่อนที่ด้วยความเร็ว {v:.2f} m/s จะมีพลังงานจลน์ {ke:.2f} จูล")
2. แปลโค้ดยากๆ ให้เข้าใจง่าย สไตล์นักอธิบายมือโปร (Prompts for explaining code)
เคยไหมครับที่เจอโค้ดวิทยาศาสตร์ที่คนอื่นเขียนไว้ แล้วงงว่ามันทำงานยังไง? ไม่ต้องห่วงครับ เราสามารถโยนโค้ดนั้นให้ LLMs ช่วยอธิบายการทำงานทีละส่วน เพื่อให้เราเข้าใจหลักการและผลลัพธ์ของมันได้ง่ายขึ้นเยอะ
ตัวอย่าง:
สิ่งที่เราส่งไปให้ AI อธิบาย (Input):
ช่วยอธิบายโค้ดนี้หน่อยครับ ว่ามันทำงานอย่างไร
``````python
# โค้ด Python สำหรับจำลองการเติบโตของประชากรอย่างง่าย
def population_growth(initial_population, growth_rate, time_periods):
population = initial_population
print(f"เริ่มต้น: ประชากร {population} ตัว")
for period in range(1, time_periods + 1):
growth = population * growth_rate
population += growth
print(f"หลังคาบที่ {period}: ประชากร {int(population)} ตัว (เพิ่มขึ้น {int(growth)} ตัว)")
return int(population)
# กำหนดค่าเริ่มต้น
p0 = 100 # ประชากรเริ่มต้น
r = 0.1 # อัตราการเติบโตต่อคาบ (10%)
t = 5 # จำนวนคาบเวลา
final_pop = population_growth(p0, r, t)
print(f"\nประชากรสุดท้ายหลังจาก {t} คาบเวลา: {final_pop} ตัว")
สิ่งที่ AI อธิบายกลับมา (Output):
โค้ดนี้เป็นการจำลองการเติบโตของประชากรแบบทบต้น (Exponential Growth) ง่ายๆ ครับ:
- ฟังก์ชัน `population_growth` จะรับค่า **ประชากรเริ่มต้น**, **อัตราการเติบโต**, และ **จำนวนช่วงเวลา** เข้ามา
- จากนั้นมันจะวนลูปตามจำนวนช่วงเวลาที่เรากำหนด
- ในแต่ละรอบ มันจะคำนวณว่ามีประชากร **เพิ่มขึ้นเท่าไหร่** (โดยเอาประชากรปัจจุบันคูณกับอัตราการเติบโต)
- แล้วก็เอาจำนวนที่เพิ่มขึ้นนี้ **ไปบวกกับประชากรเดิม**
- สุดท้ายก็จะคืนค่าประชากรทั้งหมดเมื่อจบการจำลอง
โค้ดนี้เจ๋งตรงที่เอาไปอธิบายเรื่องการเพิ่มจำนวนของแบคทีเรียในวิชาชีววิทยา หรือจะเอาไปเปรียบเทียบกับเรื่องดอกเบี้ยทบต้นในวิชาคณิตศาสตร์ก็ได้ครับ
3. เปลี่ยนขั้นตอนการทดลอง ให้กลายเป็นโค้ดอัตโนมัติ (Prompts for translating code)
ในการทดลองทางวิทยาศาสตร์ มักจะมีขั้นตอนที่ชัดเจนและทำซ้ำๆ LLMs สามารถช่วยเราเปลี่ยนขั้นตอนเหล่านั้นให้กลายเป็นโค้ดคอมพิวเตอร์ได้ ทำให้การทำงานของเราเร็วและแม่นยำขึ้นมาก
ตัวอย่าง:
สิ่งที่เราสั่ง (Input):
ผมมีขั้นตอนสำหรับการหาค่าเฉลี่ยของค่าที่วัดได้หลายๆ ครั้งดังนี้:
1. รับรายการของค่าที่วัดได้ (เช่น ความยาว, น้ำหนัก, อุณหภูมิ)
2. หาผลรวมของค่าทั้งหมด
3. นับว่ามีข้อมูลทั้งหมดกี่ตัว
4. เอาผลรวมมาหารด้วยจำนวนข้อมูลเพื่อหาค่าเฉลี่ย
5. แสดงผลค่าเฉลี่ยออกมา
ช่วยเปลี่ยนขั้นตอนพวกนี้เป็นโค้ด Python ให้หน่อยครับ
สิ่งที่ AI สร้างให้ (Output):
def calculate_average_measurement(measurements):
"""
คำนวณค่าเฉลี่ยจากลิสต์ของค่าที่วัดได้
measurements: ลิสต์ของตัวเลข (ค่าที่วัดได้)
คืนค่าค่าเฉลี่ย หรือ None ถ้าลิสต์ว่าง
"""
if not measurements:
print("ไม่มีข้อมูลการวัด")
return None
total_sum = sum(measurements)
count = len(measurements)
average = total_sum / count
return average
# ตัวอย่างการใช้งาน
length_data = [10.2, 10.1, 10.3, 10.2, 10.0]
avg_length = calculate_average_measurement(length_data)
if avg_length is not None:
print(f"ค่าเฉลี่ยของความยาวที่วัดได้: {avg_length:.2f} cm")
4. เป็นนักจับบั๊กและโค้ดรีวิวเวอร์ส่วนตัว (Prompts for debugging and reviewing code)
บางครั้งโค้ดที่เราเขียนอาจมีข้อผิดพลาดเล็กๆ น้อยๆ ซ่อนอยู่ ทำให้ผลลัพธ์เพี้ยนไป ไม่ต้องนั่งปวดหัวหาเองครับ ให้ LLMs ช่วยเป็นตาที่สามในการตรวจสอบและให้คำแนะนำได้เลย
ตัวอย่าง:
โค้ดที่มีบั๊กที่เราส่งไป (Input):
# สูตรนี้มีอะไรผิดหรือเปล่า?
def celsius_to_fahrenheit(celsius):
fahrenheit = celsius * (9/5 + 32)
return fahrenheit
c = 25
f = celsius_to_fahrenheit(c)
print(f"{c} องศาเซลเซียส เท่ากับ {f} องศาฟาเรนไฮต์")
สิ่งที่ AI ช่วยตรวจ (Output):
โค้ดนี้มีจุดผิดพลาดเล็กน้อยที่ลำดับการคำนวณทางคณิตศาสตร์ครับ
จากโค้ด `fahrenheit = celsius * (9/5 + 32)` โปรแกรมจะคำนวณในวงเล็บก่อน คือเอา `9/5` (เท่ากับ 1.8) ไปบวกกับ `32` ได้ `33.8` แล้วค่อยเอาไปคูณกับ `celsius` ซึ่งทำให้ผลลัพธ์ผิดครับ
สูตรที่ถูกต้องคือ ต้องคูณ `celsius` กับ `9/5` ก่อน แล้วค่อยนำผลลัพธ์ไปบวกกับ `32` ครับ
**โค้ดที่แก้ไขแล้ว:**
```python
def celsius_to_fahrenheit(celsius):
# แก้ไขโดยใส่วงเล็บให้ถูกต้องตามลำดับการคำนวณ
fahrenheit = (celsius * 9/5) + 32
return fahrenheit
ผลลัพธ์ที่ถูกต้องควรจะเป็น: 25°C เท่ากับ 77.0°F ซึ่ง LLMs สามารถชี้จุดที่ผิดพลาดเรื่องลำดับการคำนวณ (Order of Operations) ซึ่งเป็นเรื่องสำคัญมากในทางวิทยาศาสตร์ได้ครับ
---
#### **หัวใจสำคัญที่ต้องจำ: LLM คือผู้ช่วยสุดเจ๋ง ไม่ใช่คนที่จะมาแทนที่เรา**
แม้ว่า LLMs จะเก่งกาจและช่วยงานเราได้เยอะมาก ตั้งแต่ **ช่วยคิด, ช่วยเขียน, ช่วยอธิบาย, ไปจนถึงช่วยแก้บั๊ก** แต่สิ่งสำคัญที่สุดที่เราต้องไม่ลืมคือ **การตรวจสอบและทดสอบ** โค้ดที่ได้จาก AI ทุกครั้งนะครับ
เพราะ AI ก็ยังเป็นแค่เครื่องมือที่เรียนรู้จากข้อมูลมหาศาล บางครั้งมันอาจจะเข้าใจผิด หรือให้โค้ดที่ไม่สมบูรณ์ 100% ก็ได้ ดังนั้น ทักษะความเข้าใจในหลักการเขียนโปรแกรมและการคิดวิเคราะห์ของเรายังคงเป็นสิ่งที่สำคัญที่สุดเสมอครับ