ข้ามไปยังเนื้อหาหลัก

CrewAI: คู่มือพร้อมตัวอย่างของระบบ Multi AI Agent

CrewAI เป็นแพลตฟอร์มที่ช่วยให้นักพัฒนาสร้างและปรับใช้เวิร์กโฟลว์อัตโนมัติด้วยเอเจนต์ AI หลายตัวที่ทำงานร่วมกันเพื่อทำงานซับซ้อนได้
· 9 นาที อ่าน

สำรวจด้วย AI

เอเจนต์ AI คือผู้ช่วยที่สามารถทำงานและโต้ตอบกับโลกภายนอกได้ ต่างจากระบบดั้งเดิมที่ยึดตามกฎตายตัว เอเจนต์สามารถเรียนรู้และปรับตัวเข้ากับสถานการณ์ใหม่ ๆ ได้ ลองนึกถึงซอฟต์แวร์ที่สามารถรับรู้สภาพแวดล้อมและตัดสินใจลงมือทำ

แต่เอเจนต์ AI ต่างจากเอนทิตี AI อื่น ๆ อย่างไร เช่น โมเดลภาษาขนาดใหญ่ ที่หลายคนคุ้นชื่อกัน?

ในบทความนี้ ฉันจะตอบคำถามนี้และแนะนำ CrewAI เฟรมเวิร์ก Python แบบโอเพนซอร์สที่ออกแบบมาเพื่อทำให้การพัฒนาระบบ AI แบบหลายเอเจนต์ง่ายขึ้น เราจะสำรวจความแตกต่างระหว่างเอเจนต์กับโมเดลภาษา อภิปรายว่าทำไมเฟรมเวิร์กเอเจนต์จึงสำคัญต่อการพัฒนาแอปพลิเคชัน AI และสาธิตว่า CrewAI ทำให้เอเจนต์ทำงานร่วมกันเพื่อให้ได้ผลลัพธ์ที่ยอดเยี่ยมได้อย่างไร

เอเจนต์ AI vs. LLMs

มาคลายความเข้าใจผิดที่พบบ่อยเกี่ยวกับความต่างระหว่างเอเจนต์และโมเดลภาษาขนาดใหญ่ (LLMs) ทั้งสองอยู่ในตระกูลปัญญาประดิษฐ์เหมือนกัน แต่มีความสามารถที่ต่างกันชัดเจน

AI Agents vs LLMs

โมเดลภาษา เช่น ChatGPT และ Gemini มีความเชี่ยวชาญอย่างยิ่งในการใช้ภาษา ผ่านการฝึกบนข้อความและโค้ดจำนวนมหาศาล ทำให้เข้าใจและสร้างภาษาที่คล้ายกับการสื่อสารของมนุษย์ได้

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

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

โดยสรุป โมเดลภาษาเปรียบเหมือนสมอง ส่วนเอเจนต์คือมือ เมื่อนำมารวมกันจึงทรงพลัง

ด้วยบทบาทสำคัญของเอเจนต์ในแอปพลิเคชัน AI แล้ว เราจะจัดการความซับซ้อนเมื่อมีเอเจนต์หลายตัวต้องทำงานร่วมกันอย่างไร นี่คือจุดที่เฟรมเวิร์กเอเจนต์เข้ามามีบทบาท

ความจำเป็นของเฟรมเวิร์กเอเจนต์

ความต้องการเฟรมเวิร์กเอเจนต์เกิดจากความซับซ้อนที่เพิ่มขึ้นของแอปพลิเคชัน AI โดยเฉพาะระบบที่มีเอเจนต์หลายตัวร่วมมือกันเพื่อเป้าหมายเดียว มาดูกันว่าทำไมเฟรมเวิร์กเอเจนต์จึงสำคัญ

การจัดสรรและประสานงาน

เมื่อระบบ AI ขยายใหญ่ขึ้น มักประกอบด้วยเอเจนต์จำนวนมากที่มีความสามารถหลากหลาย การจัดการปฏิสัมพันธ์เหล่านี้และทำให้ทำงานสอดประสานกันจึงยากขึ้นเรื่อย ๆ

เฟรมเวิร์กเอเจนต์มอบสภาพแวดล้อมที่มีโครงสร้างสำหรับจัดวางกิจกรรมของเอเจนต์ กำหนดบทบาทและความรับผิดชอบ และปรับปรุงการสื่อสาร

ในระบบหลายเอเจนต์ ประเด็นสำคัญคือการจัดสรรงานให้เอเจนต์ที่เหมาะสมที่สุดและบริหารทรัพยากรร่วมกันอย่างมีประสิทธิภาพ เฟรมเวิร์กเอเจนต์มีระบบแบบไดนามิกเพื่อการจัดสรรงาน การเจรจาทรัพยากร และการแก้ไขความขัดแย้ง

โมดูลาร์และนำกลับมาใช้ใหม่

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

นอกจากนี้ เฟรมเวิร์กเอเจนต์มักใช้สถาปัตยกรรมแบบกำหนดบทบาท ทำให้นักพัฒนามอบบทบาทเฉพาะให้เอเจนต์ ซึ่งกำหนดความสามารถและสิทธิ์ได้ การออกแบบเชิงบทบาทนี้ทำให้ระบบเป็นระเบียบและจัดการง่าย สามารถเพิ่ม ลบ หรือปรับแก้เอเจนต์ได้โดยกระทบสถาปัตยกรรมน้อย ความยืดหยุ่นนี้ช่วยให้ระบบวิวัฒน์และปรับตัวตามความต้องการใหม่ ๆ ได้โดยไม่ต้องรื้อทำใหม่มาก

ความสามารถในการปรับตัวและการเรียนรู้

สภาพแวดล้อมจริงมักมีพลวัต คาดเดาไม่ได้ และเปลี่ยนแปลงตลอดเวลา เฟรมเวิร์กเอเจนต์ช่วยให้อเอเจนต์รับรู้การเปลี่ยนแปลงรอบตัวและปรับพฤติกรรมตามนั้น ความสามารถนี้ทำให้เอเจนต์ทำงานได้อย่างมีประสิทธิภาพแม้ในสถานการณ์ซับซ้อนและผันผวน จึงรับมือความท้าทายในโลกจริงได้ดีขึ้น

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

และเมื่อพูดถึงเฟรมเวิร์กเอเจนต์ ขอแนะนำหนึ่งในเครื่องมือที่กำลังโดดเด่นในชุมชน AI: CrewAI

CrewAI คืออะไร

CrewAI เป็นเฟรมเวิร์ก Python แบบโอเพนซอร์สที่สร้างขึ้นจากบล็อกสำคัญสองส่วนที่เสริมกันคือ

  • Crews — ทีมของเอเจนต์ AI ที่ร่วมมือกันโดยอัตโนมัติผ่านการตัดสินใจตามบทบาท — และ
  • Flows — เวิร์กโฟลว์พร้อมใช้งานจริงแบบขับเคลื่อนด้วยเหตุการณ์ ที่ให้คุณควบคุมงานอัตโนมัติได้

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

CrewAI logo

เฟรมเวิร์กนี้มาพร้อมเครื่องมือหลากหลาย รวมถึงเสิร์ชเอนจินและโมเดลภาษา ช่วยให้เอเจนต์โต้ตอบกับโลกภายนอก รวบรวมข้อมูล และลงมือทำเพื่อให้บรรลุเป้าหมาย

การออกแบบและความสามารถในการสเกลของ CrewAI ทำให้เหมาะกับการพัฒนาแอปหลายเอเจนต์ทั้งแบบพื้นฐานและซับซ้อน สนับสนุนแนวทางการทำงานร่วมกันเพื่อแก้ปัญหาและตัดสินใจภายในระบบ AI

มาดูคุณสมบัติสำคัญบางอย่างที่ทำให้ CrewAI เป็นเครื่องมือทรงพลังสำหรับสร้างระบบหลายเอเจนต์

  • การออร์เคสเตรตเอเจนต์: CrewAI ทำให้เอเจนต์ทุกตัวย่อมรู้บทบาทของตน พร้อมเครื่องมือกำหนดและประสานพฤติกรรมของเอเจนต์ให้ทำงานสอดประสาน
  • สถาปัตยกรรมแบบกำหนดบทบาท: เสมือนมอบเครื่องดนตรีต่างชนิดให้กับนักดนตรี CrewAI ช่วยกำหนดบทบาท ความสามารถ และสิทธิ์ของเอเจนต์ ทำให้ระบบเป็นโมดูลาร์และมีโครงสร้างแม้ในความซับซ้อน
  • การสื่อสารที่ยืดหยุ่น: CrewAI รองรับช่องทางสื่อสารหลากหลาย ช่วยให้เอเจนต์แลกเปลี่ยนข้อมูลได้อย่างราบรื่น เปรียบเหมือนมีทั้งแชทส่วนตัว กลุ่มสนทนา และโทรโข่งในที่เดียว
  • การเชื่อมต่อเครื่องมือ: CrewAI ทำให้เอเจนต์โต้ตอบกับโลกผ่านเครื่องมือต่าง ๆ ได้ เครื่องมือเหล่านี้ช่วยให้ค้นหาข้อมูลบนเว็บ เข้าใจภาษา วิเคราะห์ข้อมูล และทำงานแบบกำหนดเอง
  • การสเกล: CrewAI ถูกออกแบบให้สเกลได้อย่างราบรื่น เพื่อให้ระบบหลายเอเจนต์ตอบสนองและมีประสิทธิภาพเมื่อเติบโตขึ้น

แล้ว CrewAI มีประโยชน์อย่างไรบ้าง มาสำรวจกัน

CrewAI Flows และ Crews

CrewAI สร้างขึ้นจากบล็อกสำคัญสองส่วนที่ทำงานร่วมกัน เพื่อรับมือได้ตั้งแต่งานของเอเจนต์อย่างง่ายไปจนถึงไปป์ไลน์ระดับโปรดักชันที่ซับซ้อน

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

Flows คือเลเยอร์ออร์เคสเตรตเหนือ Crews ช่วยเชื่อมหลาย Crew เข้าด้วยกัน เพิ่มลอจิกเชิงเงื่อนไขระหว่างสเต็ป จัดการสเตตข้ามไปป์ไลน์ และทริกเกอร์การกระทำตามเหตุการณ์ หาก Crew ให้ความเป็นอิสระ Flow จะให้การควบคุม

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

สำหรับผู้เริ่มต้น ส่วนใหญ่จะเริ่มจาก Crews และค่อยใช้ Flows เมื่อจำเป็นต้องการความเสถียรระดับโปรดักชัน Flows คือหนทางสำหรับการสเกล

ประโยชน์ของการใช้ CrewAI

CrewAI ทำให้เอเจนต์ AI หลายตัวร่วมมือ แบ่งปันความรู้ และประสานการกระทำเพื่อเป้าหมายร่วมกันได้

ด้วยการทำให้งานกระจายและการจัดการทรัพยากรเป็นอัตโนมัติ CrewAI ช่วยให้เอเจนต์โฟกัสกับบทบาทของตนเองโดยมีภาระงานต่ำ

เฟรมเวิร์กยังสนับสนุนความยืดหยุ่น ให้เอเจนต์ปรับพฤติกรรมตามเงื่อนไขหรือเป้าหมายที่เปลี่ยนไปได้

นอกจากนี้ CrewAI ยังทำให้กระบวนการพัฒนาง่ายขึ้น ด้วยแพลตฟอร์มที่ใช้งานสะดวกสำหรับการสร้างและจัดการระบบหลายเอเจนต์

benefits of CrewAI

จุดแข็งสำคัญอีกอย่างของ CrewAI คือการเชื่อมต่อกับเครื่องมือหลากหลาย ขยายความสามารถของเอเจนต์ให้โต้ตอบกับภายนอกและรวบรวมข้อมูลได้

CrewAI รองรับเครื่องมืออย่างเสิร์ชเอนจิน โมเดลภาษา เครื่องมือวิเคราะห์ข้อมูล และฟังก์ชันที่สร้างเอง ช่วยให้เอเจนต์ทำงานเกินขีดความสามารถหลัก เช่น ดึงข้อมูลจากเว็บ หรือวิเคราะห์ข้อมูลซับซ้อน

ภาคปฏิบัติ: สร้างเครื่องมือค้นหาบนเว็บด้วย CrewAI

มาลงมือสร้างเวิร์กโฟลว์โดยใช้เครื่องมือของ CrewAI เพื่อสกัดเนื้อหาจากเว็บไซต์ แล้วทำ RAG กับเนื้อหานั้นกัน 

จำเป็นต้องเขียนโค้ดเพื่อให้เครื่องมือทำงาน ก่อนเริ่ม ให้ติดตั้งแพ็กเกจ crewai-tools และ crewai ด้วย pip:

# Install CrewAI with tools support
pip install 'crewai[tools]'

# Or using uv (recommended by CrewAI for dependency management)
uv add 'crewai[tools]'

เมื่อติดตั้งแพ็กเกจแล้ว ทำตามขั้นตอนด้านล่าง ในตัวอย่างนี้ เราจะใช้สามเครื่องมือ: ScrapeWebsiteTool สำหรับสกัดข้อมูลจากเว็บไซต์ FileWriterTool สำหรับเขียนไฟล์ และ TXTSearchTool เพื่อค้นหาคอนเท็กซ์สำหรับ RAG มาเริ่มกันเลย

ขั้นตอนที่ 1: สกัดข้อมูลจากเว็บไซต์

เริ่มจากอิมพอร์ตไลบรารีที่จำเป็นและอินิเทียไลซ์ ScrapeWebsiteTool เครื่องมือนี้ใช้สำหรับดึงเนื้อหาจากเว็บไซต์ ในที่นี้ตั้งค่าให้สกัดเนื้อหาจากหน้า "Artificial Intelligence" ของวิกิพีเดีย

from crewai_tools import ScrapeWebsiteTool, FileWriterTool, TXTSearchTool
import requests

# Initialize the tool, potentially passing the session
tool = ScrapeWebsiteTool(website_url='https://en.wikipedia.org/wiki/Artificial_intelligence')  

# Extract the text
text = tool.run()
print(text)

ขั้นตอนที่ 2: เขียนข้อความที่สกัดได้ลงไฟล์

ต่อไปใช้ FileWriterTool เพื่อบันทึกข้อความที่สกัดได้ลงในไฟล์ชื่อ ai.txt 

# Initialize the tool
file_writer_tool = FileWriterTool()

# Write content to a file in a specified directory
result = file_writer_tool._run(filename='ai.txt', content = text, directory = '', overwrite=True)
print(result)

ขั้นตอนที่ 3: ตั้งค่าเครื่องมือค้นหาข้อความ

ตั้งค่าอีกเครื่องมือหนึ่งเพื่อค้นหาเนื้อหาในไฟล์ ai.txt ที่เพิ่งบันทึกไว้ พร้อมทั้งตั้งตัวแปรแวดล้อมสำหรับคีย์ OpenAI API

import os
from crewai_tools import TXTSearchTool

os.environ['OPENAI_API_KEY'] = 'API-KEY'

# Initialize the tool with a specific text file, so the agent can search within the given text file's content
tool = TXTSearchTool(txt='ai.txt')

ขั้นตอนที่ 4: สร้างเอเจนต์สำหรับงานและรัน

สร้างเอเจนต์นักวิเคราะห์ข้อมูลในบทบาทผู้สอน หน้าที่ของเอเจนต์นี้คือการตอบคำถาม "Natural Language Processing คืออะไร" โดยอิงจากข้อความที่ค้นหาในไฟล์

from crewai import Agent, Task, Crew

context = tool.run('What is natural language processing?')

data_analyst = Agent(
    role='Educator',
    goal=f'Based on the context provided, answer the question - What is Natural Language Processing? Context - {context}',
    backstory='You are a data expert',
    verbose=True,
    allow_delegation=False,
    tools=[tool]
)

test_task = Task(
    description="Using the provided context, answer the question: What is Natural Language Processing?",
    tools=[tool],
    agent=data_analyst,
    expected_output='A clear, 2-3 paragraph explanation of Natural Language Processing, covering its definition, key techniques, and common applications.'
)

crew = Crew(
    agents=[data_analyst],
    tasks=[test_task]
)

output = crew.kickoff()

crew agent output

เปรียบเทียบ CrewAI กับ LangGraph และ AutoGen

ทางเลือกหลักของ CrewAI คือ LangGraph และ AutoGen ของ Microsoft จุดแข็งที่สุดของ CrewAI คือพาราไดม์เอเจนต์แบบกำหนดบทบาท กล่าวคือ เมื่อกำหนดเอเจนต์ด้วยบทบาท เป้าหมาย และประวัติย่อ จะได้พฤติกรรมที่คล้ายกับการทำงานเป็นทีมของมนุษย์

LangGraph ให้การควบคุมโฟลว์การรันที่มากกว่า ผ่านแนวทางแบบกราฟ แต่ต้องทำความเข้าใจกราฟแบบมีทิศทางและแนวคิดการจัดการสเตต สำหรับนักพัฒนาส่วนใหญ่ที่ใหม่กับระบบหลายเอเจนต์ CrewAI มักเป็นเส้นทางที่เร็วกว่าไปสู่ต้นแบบที่ใช้งานได้

สรุป

CrewAI คือแพลตฟอร์มที่ใช้งานได้จริงสำหรับจัดการระบบหลายเอเจนต์ ไม่ว่าจะเป็นการสกัดเนื้อหาหรือการมอบหมายงาน เฟรมเวิร์กนี้สนับสนุนการทำงานร่วมกันระหว่างเอเจนต์ และช่วยให้พวกเขาปรับตัวและพัฒนาได้

ด้วยการผสานเครื่องมือและจัดระเบียบโครงสร้าง CrewAI ทำให้นักพัฒนาจัดการปฏิสัมพันธ์ของเอเจนต์ กระจายงาน และรักษาประสิทธิภาพได้ง่ายขึ้น

หัวข้อ