สวัสดีครับ วันนี้ผมจะมาสอนเทคนิคการใช้งาน CrewAI ตั้งแต่เริ่มต้น สำหรับคนที่ยังไม่เคยเขียนโค้ด API มาก่อนเลยก็อ่านตามได้ครับ เราจะไปทีละขั้นอย่างละเอียด
CrewAI คืออะไร และทำไมต้องเรียนรู้
CrewAI เป็นเครื่องมือที่ช่วยให้เราสร้าง "ตัวแทน AI" หลายตัวให้ทำงานร่วมกันเหมือนทีมงานจริงๆ ครับ ลองนึกภาพว่าเรามีพนักงาน AI หลายคน แต่ละคนมีหน้าที่แตกต่างกัน เช่น คนหนึ่งค้นหาข้อมูล อีกคนวิเคราะห์ และอีกคนเขียนรายงาน เมื่อรวมกันก็จะทำงานได้ครบวงจรมากขึ้น
**ทำไมต้องใช้ HolySheep AI ในการเรียนนี้:** [สมัครที่นี่](https://www.holysheep.ai/register) เพราะบริการนี้มีความเร็วสูงมากที่ 50 มิลลิวินาที ราคาประหยัดสุดเมื่อเทียบกับบริการอื่น โดยอัตราแลกเปลี่ยน ¥1 เท่ากับ $1 ทำให้ประหยัดได้ถึง 85% แถมยังรองรับการจ่ายเงินผ่าน WeChat และ Alipay ได้สะดวก และเมื่อลงทะเบียนใหม่จะได้รับเครดิตฟรีทันทีครับ
การติดตั้งโปรแกรมพื้นฐาน
ก่อนจะเริ่มสร้าง Agent เราต้องเตรียมเครื่องมือก่อนครับ ทำตามนี้เลย
ขั้นตอนที่ 1: ติดตั้ง Python
Python คือภาษาที่ใช้เขียนโค้ดสำหรับ CrewAI ครับ ให้ไปที่เว็บไซต์ python.org แล้วกดปุ่มดาวน์โหลดเวอร์ชันล่าสุด เมื่อติดตั้งเสร็จแล้ว ให้เปิดโปรแกรม Command Prompt หรือ Terminal แล้วพิมพ์คำสั่งตรวจสอบว่าติดตั้งสำเร็จหรือไม่
python --version
ถ้าขึ้นหมายเลขเวอร์ชัน เช่น Python 3.11 หมายความว่าพร้อมใช้งานแล้วครับ
ขั้นตอนที่ 2: สร้างโฟลเดอร์สำหรับงาน
ให้สร้างโฟลเดอร์ใหม่ในเครื่องคอมพิวเตอร์ เช่น ตั้งชื่อว่า my_crew แล้วเปิด Terminal ไปที่โฟลเดอร์นั้น
cd my_crew
ขั้นตอนที่ 3: ติดตั้ง CrewAI และโปรแกรมที่จำเป็น
พิมพ์คำสั่งด้านล่างนี้เพื่อติดตั้งทุกอย่างที่ต้องใช้ในครั้งเดียว
pip install crewai crewai-tools python-dotenv
รอสักครู่จนติดตั้งเสร็จ อาจใช้เวลาประมาณ 2-3 นาทีครับ
การสร้าง Agent ตัวแรกของเรา
Agent คืออะไร
Agent ก็เหมือน "คน" ในทีมของเรา มี 3 ส่วนสำคัญดังนี้
**1. ชื่อ (Name):** ตั้งชื่อให้ Agent เพื่อให้รู้ว่าทำหน้าที่อะไร
**2. บทบาท (Role):** กำหนดว่า Agent นี้เป็นใครในทีม เช่น นักวิจัย ผู้เขียน หรือผู้ตรวจสอบ
**3. เป้าหมาย (Goal):** บอกว่า Agent นี้ต้องบรรลุอะไร
โค้ดพื้นฐานสำหรับ Agent เดี่ยว
ให้สร้างไฟล์ใหม่ชื่อ first_agent.py แล้วเขียนโค้ดดังนี้ครับ
import os
from crewai import Agent
from langchain_openai import ChatOpenAI
ตั้งค่า API Key สำหรับเชื่อมต่อกับ HolySheep AI
os.environ["OPENAI_API_KEY"] = "YOUR_HOLYSHEEP_API_KEY"
กำหนดให้ใช้ HolySheep แทน OpenAI โดยตรง
llm = ChatOpenAI(
model="gpt-4o",
openai_api_base="https://api.holysheep.ai/v1",
openai_api_key=os.environ["OPENAI_API_KEY"]
)
สร้าง Agent ตัวแรก
researcher = Agent(
role="นักวิจัยข้อมูล",
goal="ค้นหาและรวบรวมข้อมูลที่ถูกต้องเกี่ยวกับหัวข้อที่กำหนด",
backstory="คุณเป็นนักวิจัยมืออาชีพที่มีประสบการณ์ในการค้นหาข้อมูลมากกว่า 10 ปี",
allow_delegation=False,
llm=llm
)
ทดสอบว่า Agent ทำงานได้ไหม
print("Agent ถูกสร้างสำเร็จแล้ว!")
print(f"ชื่อ: {researcher.role}")
print(f"เป้าหมาย: {researcher.goal}")
เมื่อรันโค้ดนี้ จะเห็นว่า Agent ถูกสร้างขึ้นมาเรียบร้อยครับ
การสร้างทีม Agent หลายตัว
ต่อไปเราจะสร้างทีมที่มี 3 Agent ทำงานร่วมกันครับ
แนวคิดการทำงานเป็นทีม
ในการทำงานจริง เรามักต้องการ Agent หลายตัวทำหน้าที่ต่างกัน เช่น
**Agent ที่ 1 - นักวิจัย:** ค้นหาข้อมูลจากแหล่งต่างๆ
**Agent ที่ 2 - นักเขียน:** นำข้อมูลมาเขียนเป็นบทความ
**Agent ที่ 3 - บรรณาธิการ:** ตรวจสอบความถูกต้องและปรับปรุงบทความ
โค้ดสำหรับสร้างทีม 3 Agent
import os
from crewai import Agent, Crew, Task, Process
from langchain_openai import ChatOpenAI
ตั้งค่า API Key - แทนที่ YOUR_HOLYSHEEP_API_KEY ด้วย Key จริงของคุณ
os.environ["OPENAI_API_KEY"] = "YOUR_HOLYSHEEP_API_KEY"
เชื่อมต่อกับ HolySheep AI
llm = ChatOpenAI(
model="gpt-4o",
openai_api_base="https://api.holysheep.ai/v1",
openai_api_key=os.environ["OPENAI_API_KEY"]
)
สร้าง Agent ที่ 1: นักวิจัย
researcher = Agent(
role="นักวิจัยข้อมูล",
goal="รวบรวมข้อมูลที่ถูกต้องและน่าเชื่อถือเกี่ยวกับหัวข้อที่ได้รับ",
backstory="คุณเป็นนักวิจัยที่มีความเชี่ยวชาญในการค้นหาข้อมูลจากแหล่งที่เชื่อถือได้",
allow_delegation=False,
llm=llm
)
สร้าง Agent ที่ 2: นักเขียน
writer = Agent(
role="นักเขียนบทความ",
goal="เขียนบทความที่น่าสนใจและเข้าใจง่ายจากข้อมูลที่ได้รับ",
backstory="คุณเป็นนักเขียนมืออาชีพที่สามารถเขียนเนื้อหาให้ดึงดูดใจผู้อ่าน",
allow_delegation=False,
llm=llm
)
สร้าง Agent ที่ 3: บรรณาธิการ
editor = Agent(
role="บรรณาธิการ",
goal="ตรวจสอบและปรับปรุงบทความให้สมบูรณ์ที่สุด",
backstory="คุณเป็นบรรณาธิการที่มีสายตาที่คมกริบในการจับข้อผิดพลาด",
allow_delegation=False,
llm=llm
)
กำหนดงานให้แต่ละ Agent
task1 = Task(
description="ค้นหาข้อมูลเกี่ยวกับประโยชน์ของการเรียนรู้ภาษาอังกฤษ",
agent=researcher
)
task2 = Task(
description="เขียนบทความ 500 คำจากข้อมูลที่นักวิจัยหามา",
agent=writer
)
task3 = Task(
description="ตรวจสอบความถูกต้องและปรับปรุงบทความ",
agent=editor
)
รวมทุกอย่างเป็นทีม
my_crew = Crew(
agents=[researcher, writer, editor],
tasks=[task1, task2, task3],
process=Process.sequential
)
print("ทีมของเราพร้อมแล้ว!")
print("ประกอบด้วย:")
print("1. นักวิจัย - ค้นหาข้อมูล")
print("2. นักเขียน - เขียนบทความ")
print("3. บรรณาธิการ - ตรวจสอบบทความ")
การกำหนดวิธีการทำงานร่วมกัน
วิธีที่ 1: ทำงานตามลำดับ (Sequential)
วิธีนี้ Agent แรกทำเสร็จก่อน แล้วค่อยส่งงานให้ Agent ถัดไป ทำให้งานเรียบร้อยและมีลำดับชัดเจนครับ เหมาะสำหรับงานที่ต้องอาศัยผลลัพธ์จากขั้นตอนก่อนหน้า
วิธีที่ 2: ทำงานพร้อมกัน (Hierarchical)
วิธีนี้ Manager จะเป็นคนแบ่งงานให้ลูกน้องทำ แต่ละคนทำงานพร้อมกันแล้วส่งผลกลับมา ทำให้เสร็จเร็วกว่าแต่ต้องกำหนดการควบคุมให้ชัดเจน
โค้ดตัวอย่างการเลือกวิธีทำงาน
# วิธีที่ 1: ทำงานตามลำดับ
crew_sequential = Crew(
agents=[researcher, writer, editor],
tasks=[task1, task2, task3],
process=Process.sequential # ทำทีละขั้นตอน
)
วิธีที่ 2: ทำงานแบบมีผู้จัดการ
manager = Agent(
role="ผู้จัดการโปรเจกต์",
goal="ดูแลให้งานเสร็จทันเวลาและมีคุณภาพ",
backstory="คุณมีประสบการณ์ในการบริหารโปรเจกต์มากว่า 15 ปี",
allow_delegation=True,
llm=llm
)
crew_hierarchical = Crew(
agents=[manager, researcher, writer, editor],
tasks=[task1, task2, task3],
process=Process.hierarchical # มีผู้จัดการบริหารงาน
)
print("เลือกวิธีการทำงานได้ตามความเหมาะสมของโปรเจกต์")
การให้ Agent ส่งต่องานกัน
การส่งต่องานระหว่าง Agent เป็นสิ่งสำคัญมากในการทำงานเป็นทีมครับ เราต้องบอกให้ชัดเจนว่า Agent นี้ควรส่งงานให้ใครต่อ
โค้ดกำหนดการส่งต่องาน
# กำหนดให้นักวิจัยส่งงานให้นักเขียนโดยอัตโนมัติ
task1 = Task(
description="ค้นหาข้อมูลเกี่ยวกับเทคนิคการเรียนรู้อย่างมีประสิทธิภาพ",
agent=researcher,
expected_output="รายงานข้อมูลที่ครอบคลุม 5 หัวข้อหลัก"
)
task2 = Task(
description="เขียนบทความจากรายงานของนักวิจัย",
agent=writer,
context=[task1], # รับงานจาก task1 มาใช้
expected_output="บทความ 500 คำ มีโครงสร้างชัดเจน"
)
task3 = Task(
description="ตรวจสอบบทความและแก้ไขข้อผิดพลาด",
agent=editor,
context=[task2], # รับงานจาก task2 มาตรวจสอบ
expected_output="บทความที่พร้อมเผยแพร่"
)
print("งานถูกเชื่อมโยงกันแล้ว:")
print("นักวิจัย -> นักเขียน -> บรรณาธิการ")
การรันทีม Agent ให้ทำงานจริง
หลังจากตั้งค่าทุกอย่างเรียบร้อยแล้ว มาดูวิธีสั่งให้ทีมทำงานกันครับ
# รวมทีมเป็น Crew พร้อมทำงาน
final_crew = Crew(
agents=[researcher, writer, editor],
tasks=[task1, task2, task3],
process=Process.sequential
)
สั่งให้ทำงาน
print("เริ่มสั่งให้ทีมทำงาน...")
result = final_crew.kickoff()
แสดงผลลัพธ์
print("\n========== ผลลัพธ์สุดท้าย ==========")
print(result)
บันทึกผลลัพธ์ลงไฟล์
with open("result.txt", "w", encoding="utf-8") as f:
f.write(str(result))
print("\nบันทึกผลลัพธ์ลงไฟล์ result.txt แล้ว")
เมื่อรันโค้ดนี้ ระบบจะเริ่มทำงานตามลำดับ อาจใช้เวลาประมาณ 1-3 นาทีขึ้นอยู่กับความซับซ้อนของงานครับ
การตรวจสอบว่า Agent ทำอะไรบ้าง
บางครั้งเราอยากรู้ว่าแต่ละ Agent ทำอะไรไปแล้วบ้าง ให้ใช้โค้ดด้านล่างครับ
# ดูรายละเอียดการทำงานของแต่ละ Agent
print("รายงานความคืบหน้า:")
print("=" * 50)
for idx, task in enumerate(final_crew.tasks):
print(f"\nงานที่ {idx + 1}: {task.description}")
print(f"ผู้รับผิดชอบ: {task.agent.role}")
if task.output:
print(f"ผลลัพธ์: {task.output}")
else:
print(f"สถานะ: กำลังดำเนินการ")
print("\n" + "=" * 50)
print("งานเสร็จสมบูรณ์!")
ข้อผิดพลาดที่พบบ่อยและวิธีแก้ไข
กรณีที่ 1: แจ้ง错误 "API Key ไม่ถูกต้อง"
**อาการ:** เมื่อรันโค้ดแล้วขึ้นข้อผิดพลาดเกี่ยวกับ API Key
**สาเหตุ:** Key ที่ใส่ไม่ตรงกับที่ HolySheep สร้างให้ หรือยังไม่ได้ใส่ Key จริง
**วิธีแก้ไข:** ให้ไปที่หน้าบัญชีผู้ใช้ของ HolySheep แล้วคัดลอก Key มาใส่แทนที่ YOUR_HOLYSHEEP_API_KEY ครับ
# วิธีแก้ไข: ตรวจสอบว่าใส่ Key ถูกต้อง
import os
วิธีที่ 1: ใส่ Key โดยตรงในโค้ด (ไม่แนะนำสำหรับงานจริง)
os.environ["OPENAI_API_KEY"] = "sk-your-real-key-from-holysheep"
วิธีที่ 2: อ่าน Key จากไฟล์ .env (แนะนำ)
from dotenv import load_dotenv
load_dotenv() # อ่านไฟล์ .env อัตโนมัติ
api_key = os.getenv("HOLYSHEEP_API_KEY")
if api_key:
os.environ["OPENAI_API_KEY"] = api_key
print("API Key พร้อมใช้งานแล้ว")
else:
print("กรุณาตั้งค่า HOLYSHEEP_API_KEY ในไฟล์ .env")
กรณีที่ 2: ข้อความผิดพลาด "Connection Timeout"
**อาการ:** โค้ดค้างนานแล้วขึ้นข้อผิดพลาด Timeout
**สาเหตุ:** เครือข่ายช้าหรือ API ตอบสนองช้า
**วิธีแก้ไข:** เพิ่มการตั้งค่า timeout และลองใช้ endpoint ที่ใกล้บ้านที่สุด
# วิธีแก้ไข: เพิ่มการตั้งค่า timeout
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="gpt-4o",
openai_api_base="https://api.holysheep.ai/v1",
openai_api_key=os.environ["OPENAI_API_KEY"],
request_timeout=120, # รอได้สูงสุด 120 วินาที
max_retries=3 # ลองใหม่ได้ 3 ครั้งถ้าล้มเหลว
)
ถ้าใช้ OpenAI SDK โดยตรง
from openai import OpenAI
client = OpenAI(
api_key=os.environ["OPENAI_API_KEY"],
base_url="https://api.holysheep.ai/v1",
timeout=120.0,
max_retries=3
)
print("ตั้งค่า timeout เรียบร้อยแล้ว")
กรณีที่ 3: Agent ไม่ทำงานตามที่กำหนด
**อาการ:** Agent ทำอะไรไม่ได้ตามบทบาทที่กำหนด
**สาเหตุ:** กำหนดคำอธิบายบทบาทหรือเป้าหมายไม่ชัดเจน
**วิธีแก้ไข:** เขียนคำอธิบายให้ละเอี
แหล่งข้อมูลที่เกี่ยวข้อง
บทความที่เกี่ยวข้อง