01 Aug 2025 - 3 min read
สวัสดีครับทุกคน! วันนี้เราจะมาเจาะลึกเรื่องน่าสนใจในโลกของ AI นั่นคือ การสร้าง Agent ด้วย PydanticAI ครับ
PydanticAI เป็นเครื่องมือที่ช่วยให้เราสามารถสร้าง Agent ที่มีความสามารถในการจัดการข้อมูลและโต้ตอบกับผู้ใช้ได้อย่างมีประสิทธิภาพ ด้วยการใช้ประโยชน์จาก Pydantic ที่เป็นไลบรารีสำหรับการตรวจสอบข้อมูล (Data Validation) และการจัดการโมเดลข้อมูล (Data Modeling) ทำให้ Agent ของเรามีความ "ฉลาด" และ "เป็นระเบียบ" มากขึ้น
มาดูกันเลยว่าการสร้าง Agent ด้วย PydanticAI นั้นมีขั้นตอนอะไรบ้าง พร้อมตัวอย่างที่เข้าใจง่ายครับ!
ขั้นตอนการสร้าง Agent ด้วย PydanticAI
โดยหลักการแล้ว การสร้าง Agent ด้วย PydanticAI จะอาศัยการนิยาม "เครื่องมือ" (Tools) ที่ Agent สามารถใช้งานได้ และการนิยาม "Agent" ที่จะเลือกใช้เครื่องมือเหล่านั้นตามบริบทการสนทนา
1. นิยามเครื่องมือ (Define Tools)
เครื่องมือคือฟังก์ชันหรือชุดคำสั่งที่ Agent สามารถเรียกใช้งานได้ เพื่อทำภารกิจเฉพาะอย่าง เช่น การค้นหาข้อมูล, การคำนวณ, หรือการเรียกใช้ API ภายนอก
หัวใจสำคัญ: การใช้ Pydantic ในการกำหนด "Input Schema" และ "Output Schema" ของเครื่องมือแต่ละชิ้น * Input Schema: กำหนดว่าเครื่องมือต้องการข้อมูลอะไรบ้าง และต้องมีรูปแบบเป็นอย่างไร (เช่น ต้องเป็นตัวเลข, ต้องเป็นข้อความ, มีค่าสูงสุด/ต่ำสุดเท่าใด) * Output Schema: กำหนดว่าเครื่องมือจะส่งคืนข้อมูลอะไร และต้องมีรูปแบบเป็นอย่างไร
ตัวอย่าง: สมมติเราต้องการสร้าง Agent ที่สามารถบวกเลขได้
from pydantic import BaseModel
# Input Schema สำหรับฟังก์ชันบวกเลข
class AddToolInput(BaseModel):
num1: int # ต้องการตัวเลขจำนวนเต็มตัวแรก
num2: int # ต้องการตัวเลขจำนวนเต็มตัวที่สอง
# ฟังก์ชันบวกเลข (เครื่องมือของเรา)
def add_numbers(num1: int, num2: int) -> int:
"""รับตัวเลขสองตัวและส่งคืนผลบวก"""
return num1 + num2
# เราสามารถ "ห่อหุ้ม" ฟังก์ชันนี้ให้เข้ากับ PydanticAI ได้
# โดยทั่วไป PydanticAI จะมี Decorator หรือ Class ช่วยในการนี้
# (ตัวอย่างนี้เป็น conceptual มากกว่า code ที่รันได้โดยตรง)
# @tool(input_schema=AddToolInput)
# def add_numbers_tool(num1: int, num2: int) -> int:
# return add_numbers(num1, num2)
อธิบาย:
AddToolInput
คือ Model ที่บอกว่าฟังก์ชัน add_numbers
ต้องการ input คือ num1
และ num2
ซึ่งทั้งคู่ต้องเป็น int
add_numbers
คือฟังก์ชันที่ทำหน้าที่บวกเลขจริง ๆ2. สร้าง Agent
Agent จะรับหน้าที่ในการทำความเข้าใจคำสั่งของผู้ใช้ (User Prompt) และเลือกเครื่องมือที่เหมาะสมที่สุดในการตอบสนอง
ตัวอย่าง (Conceptual):
# สมมติว่าเรามี PydanticAI Framework ที่ช่วยในการสร้าง Agent
from pydanticai import Agent, Tool
# กำหนด Tools ทั้งหมดที่ Agent สามารถใช้ได้
# ในตัวอย่างนี้ เรามีแค่ add_numbers_tool
# (สมมติว่า add_numbers_tool คือฟังก์ชัน add_numbers ที่ถูกห่อหุ้มด้วย Decorator จาก PydanticAI แล้ว)
tools = [
Tool(name="AddTool", func=add_numbers_tool, input_schema=AddToolInput)
]
# สร้าง Agent
my_agent = Agent(tools=tools)
# สั่งให้ Agent ทำงาน
response = my_agent.run("Please add 5 and 10")
print(response) # คาดว่าผลลัพธ์จะเป็น 15
อธิบาย:
tools
โดยระบุชื่อฟังก์ชัน, ตัวฟังก์ชันเอง, และ Input Schema ของฟังก์ชันนั้น ๆAgent
โดยส่ง tools
เข้าไป Agent จะรู้จักเครื่องมือที่เรามีmy_agent.run("Please add 5 and 10")
Agent จะ:
add_numbers_tool
5
และ 10
มาจากคำสั่ง5
และ 10
ตรงกับ AddToolInput
(เป็น integer)add_numbers_tool(num1=5, num2=10)
15
15
เป็นผลลัพธ์ข้อดีของการใช้ PydanticAI ในการสร้าง Agent
ตัวอย่างการประยุกต์ใช้จริง (เพิ่มเติม)
สรุป
PydanticAI เป็นแนวทางที่ทรงพลังในการสร้าง Agent ที่มีความสามารถและน่าเชื่อถือ โดยการนำ Pydantic มาใช้ในการนิยามเครื่องมือ ทำให้ Agent ของเราสามารถจัดการกับข้อมูลได้อย่างมีโครงสร้าง ชัดเจน และปลอดภัย
หวังว่าโพสต์นี้จะเป็นประโยชน์ในการเริ่มต้นสร้าง Agent ของคุณนะครับ! หากมีคำถามหรือข้อสงสัย ถามมาได้เลยครับ 👇