หากคุณกำลังพัฒนาแอปพลิเคชันที่ใช้ AI และต้องการให้ AI ตอบกลับในรูปแบบที่เป็นระเบียบ อ่านง่าย และนำไปใช้ต่อได้ทันที Instructor คือเครื่องมือที่จะช่วยคุณได้มาก ในบทความนี้เราจะมาสอนการใช้งาน Instructor ตั้งแต่ขั้นพื้นฐานจนถึงการนำไปใช้จริง พร้อมตัวอย่างโค้ดที่ดาวน์โหลดไปรันได้เลย

Instructor คืออะไร

Instructor เป็นไลบรารี Python ที่ช่วยให้การสร้าง structured output (ผลลัพธ์ที่มีโครงสร้าง) จาก Large Language Model (โมเดล AI ขนาดใหญ่) เป็นเรื่องง่าย ปกติแล้ว AI จะตอบเป็นข้อความธรรมดา แต่บางครั้งเราต้องการข้อมูลที่เป็นระเบียบ เช่น ตาราง รายการ หรือรูปแบบ JSON ที่สามารถนำไปใช้ในโค้ดได้ทันที

สมมติว่าคุณต้องการให้ AI วิเคราะห์รีวิวสินค้าแล้วสรุปออกมาเป็นคะแนน ข้อดี และข้อเสีย ถ้าใช้วิธีปกติ คุณต้องเขียนโค้ดแยกวิเคราะห์ข้อความอีกที แต่ถ้าใช้ Instructor คุณกำหนดโครงสร้างที่ต้องการไว้ล่วงหน้า AI จะตอบกลับมาตรงกับโครงสร้างนั้นเลย

การติดตั้งและเตรียมความพร้อม

ก่อนจะเริ่ม เราต้องมี API key จาก สมัครที่นี่ ก่อน เพื่อเรียกใช้บริการ AI จาก HolySheep AI ซึ่งเป็นผู้ให้บริการ AI ที่มีความเร็วสูง (ต่ำกว่า 50 มิลลิวินาที) และราคาประหยัดมาก รองรับการชำระเงินผ่าน WeChat และ Alipay พร้อมอัตราแลกเปลี่ยนที่ดีมาก คุ้มค่ากว่าบริการอื่นถึง 85% เลยทีเดียว เมื่อสมัครเสร็จคุณจะได้รับเครดิตฟรีเพื่อทดลองใช้งาน

ขั้นตอนที่ 1: ติดตั้งไลบรารีที่จำเป็น

เปิด Terminal หรือ Command Prompt แล้วพิมพ์คำสั่งติดตั้งดังนี้

pip install instructor pydantic

หลังจากติดตั้งเสร็จ ให้สร้างไฟล์ Python ใหม่ขึ้นมาแล้วเขียนโค้ดตามตัวอย่างในบทความนี้ได้เลย

ขั้นตอนที่ 2: ตั้งค่าการเชื่อมต่อ

เราจะกำหนดค่าการเชื่อมต่อกับ HolySheep AI โดยใช้ base URL ที่ถูกต้อง ดังนี้

import instructor
from openai import OpenAI

ตั้งค่าการเชื่อมต่อกับ HolySheep AI

client = instructor.patch( OpenAI( base_url="https://api.holysheep.ai/v1", api_key="YOUR_HOLYSHEEP_API_KEY" # ใส่ API key ของคุณที่นี่ ) )

การสร้าง Schema สำหรับ Structured Output

ขั้นตอนต่อไปคือการกำหนดโครงสร้างข้อมูลที่เราต้องการให้ AI ตอบกลับ เราจะใช้ Pydantic ซึ่งเป็นไลบรารีสำหรับกำหนดโครงสร้างข้อมูลใน Python

ตัวอย่างที่ 1: วิเคราะห์รีวิวสินค้า

from pydantic import BaseModel
from typing import Optional

กำหนดโครงสร้างข้อมูลสำหรับรีวิวสินค้า

class ProductReview(BaseModel): rating: int # คะแนนจาก 1-5 summary: str # สรุปรีวิว pros: list[str] # ข้อดี cons: list[str] # ข้อเสีย recommend: bool # แนะนำหรือไม่ sentiment: str # ความรู้สึกทั่วไป (positive/negative/neutral)

ส่งข้อความไปให้ AI วิเคราะห์

review_text = """ ซื้อมือถือเครื่องนี้มาใช้ได้ 2 เดือนแล้ว กล้องสวยมาก โดยเฉพาะตอนถ่ายตอนกลางคืน แต่แบตเตอรี่อาจจะไม่ค่อยอึดเท่าไหร่ ใช้ได้แค่วันเดียว ชาร์จเร็วดี แต่ราคาแพงไปหน่อย ถ้าราคาถูกกว่านี้จะดีมาก """ response = client.chat.completions.create( model="gpt-4o-mini", messages=[ {"role": "system", "content": "คุณเป็นผู้เชี่ยวชาญในการวิเคราะห์รีวิวสินค้า"}, {"role": "user", "content": f"วิเคราะห์รีวิวนี้: {review_text}"} ], response_model=ProductReview )

แสดงผลลัพธ์

print(f"คะแนน: {response.rating}/5") print(f"สรุป: {response.summary}") print(f"ข้อดี: {response.pros}") print(f"ข้อเสีย: {response.cons}") print(f"แนะนำ: {'ใช่' if response.recommend else 'ไม่'}") print(f"ความรู้สึก: {response.sentiment}")

ผลลัพธ์ที่ได้จะเป็นข้อมูลที่มีโครงสร้างชัดเจน พร้อมนำไปใช้งานต่อได้ทันที เช่น เก็บลงฐานข้อมูลหรือส่งไปแสดงในเว็บไซต์

ตัวอย่างที่ 2: สกัดข้อมูลจากบทความ

from pydantic import BaseModel
from typing import Optional

กำหนดโครงสร้างข้อมูลบทความข่าว

class NewsArticle(BaseModel): title: str # หัวข้อข่าว publish_date: str # วันที่เผยแพร่ author: Optional[str] = None # ผู้เขียน (อาจไม่มีก็ได้) category: str # หมวดหมู่ summary: str # สรุปข่าว key_points: list[str] # ประเด็นสำคัญ sentiment: str # ความรู้สึก (positive/negative/neutral) article_text = """ รัฐบาลประกาศมาตรการกระตุ้นเศรษฐกิจวงเงิน 50,000 ล้านบาท นายกรัฐมนตรีเปิดเผยว่ามาตรการนี้จะช่วยเหลือผู้ประกอบการ SMEs และกระตุ้นการบริโภคภายในประเทศ คาดว่าจะส่งผลดีต่อตลาดหุ้น และภาคอสังหาริมทรัพย์ในไตรมาสหน้า """ response = client.chat.completions.create( model="gpt-4o-mini", messages=[ {"role": "system", "content": "คุณเป็นบรรณาธิการข่าวที่มีความเชี่ยวชาญ"}, {"role": "user", "content": f"สกัดข้อมูลจากบทความนี้: {article_text}"} ], response_model=NewsArticle )

แสดงผลลัพธ์ในรูปแบบ JSON

import json print(json.dumps(response.model_dump(), ensure_ascii=False, indent=2))

การใช้งานขั้นสูง

การตรวจสอบข้อมูล (Validation)

Instructor สามารถตรวจสอบข้อมูลที่ได้รับจาก AI ได้ด้วย เช่น ถ้าเรากำหนดว่าคะแนนต้องอยู่ระหว่าง 1-5 แต่ AI ตอบมาว่า 10 ระบบจะแจ้งเตือนให้แก้ไข

from pydantic import BaseModel, Field, field_validator
from typing import Optional

class ValidatedProductReview(BaseModel):
    rating: int = Field(ge=1, le=5)  # คะแนนต้องอยู่ระหว่าง 1-5
    summary: str = Field(min_length=10)  # สรุปต้องมีอย่างน้อย 10 ตัวอักษร
    pros: list[str] = Field(min_length=1)  #