เฉลยโจทย์: โมเดลภาษาขนาดใหญ่#

1. วิเคราะห์อารมณ์ผู้พูด#

import openai

def analyze_emotion(text):
    prompt = f"""บทสนทนา:
{text}

จงวิเคราะห์อารมณ์ของผู้พูดในข้อความข้างต้น และระบุว่าเป็นหนึ่งในประเภทต่อไปนี้:
'ดีใจ', 'เศร้า', 'โกรธ', 'แปลกใจ', หรือ 'อื่นๆ'
ตอบเพียงคำเดียวในบรรทัดเดียว เช่น: เศร้า
"""
    response = openai.ChatCompletion.create(
        model="gpt-4",
        messages=[{"role": "user", "content": prompt}]
    )
    return response.choices[0].message['content'].strip()

2. สรุปความ#

def convert_to_bullet_points(text, num_points):
    if num_points > 8:
        print("ห้ามระบุเกิน 8 ข้อ")
        return []

    prompt = f"""ข้อความ:
{text}

จงสรุปเนื้อหาจากข้อความข้างต้น โดยที่บทสรุปจะต้องมีลักษณะดังนี้
- เป็น bullet point ทั้งหมด {num_points} ข้อเท่านั้น
- ไม่ต้องมีสัญลักษณ์ใด ๆ นำหน้าบทสรุปแต่ละข้อ 
- แต่ละข้ออยู่คนละบรรทัด 
- ห้ามมีข้อความอื่น ๆ นอกเหนือจากบทสรุปติดมาด้วย
"""
    response = openai.ChatCompletion.create(
        model="gpt-4",
        messages=[{"role": "user", "content": prompt}]
    )
    return response.choices[0].message['content'].strip().split('\n')

3. ตรวจเรียงความ#

import json

def grade_feedback_essay(essay):
    prompt = f"""เรียงความ:
{essay}

จากเรียงความข้างต้น ให้คืน output ในรูปแบบ JSON ดังนี้

grade: คะแนนของเรียงความนี้จาก 1 ถึง 5 โดยมีเกณฑ์ดังนี้:
- 1 = ต่ำกว่ามาตรฐานระดับมัธยมปลาย
- 3 = เทียบเท่าระดับมัธยมปลาย
- 5 = เทียบเท่าระดับคนวัยทำงาน

feedback: ข้อเสนอแนะในการพัฒนาการเขียนเรียงความ โดยต้องมีลักษณะดังนี้
- เป็นภาษาไทย 
- ยกส่วนของเรียงความที่ต้องการแก้ไขให้เด่นชัด
"""
    response = openai.ChatCompletion.create(
        model="gpt-4",
        messages=[{"role": "user", "content": prompt}]
    )
    return json.loads(response.choices[0].message['content'])

4. วิเคราะห์คำศัพท์#

import pandas as pd
from io import StringIO

def analyze_vocab(article, output_csv_path):
    prompt = f"""บทความภาษาอังกฤษ:
{article}

จงดึงคำศัพท์สำคัญจากบทความนำมาจัดอยู่ในรูปแบบของ csv ที่มีคอลัมน์ดังนี้
word: คำ
translation_th: คำแปลไทย 
difficulty: ระดับความยากของคำศัพท์ (ง่าย / ปานกลาง / ยาก) 
example: ดึงประโยคในบทความที่มีคำ ๆ นั้นอยู่ 

ห้ามนำเอาข้อความอย่างอื่นนอกเหนือจากข้อมูลใน csv ติดมาด้วย
"""
    response = openai.ChatCompletion.create(
        model="gpt-4",
        messages=[{"role": "user", "content": prompt}]
    )
    csv_text = response.choices[0].message['content']
    df = pd.read_csv(StringIO(csv_text))
    df.to_csv(output_csv_path, index=False)
    return df