การสร้างตัวแทน AI ที่ทำงานร่วมกันด้วย CrewAI

การสร้างตัวแทน AI ที่ทำงานร่วมกันด้วย CrewAI

โหนดต้นทาง: 3089434

บทนำ

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

ตัวแทน AI

วัตถุประสงค์การเรียนรู้

  • เรียนรู้เกี่ยวกับตัวแทน AI
  • สำรวจ CrewAI – เครื่องมือโอเพ่นซอร์สสำหรับตัวแทนการสร้าง
  • สร้างทีมงาน AI ที่ทำงานร่วมกันเพื่อเขียนเนื้อหา
  • สำรวจกรณีการใช้งานจริงของตัวแทน AI

บทความนี้เผยแพร่โดยเป็นส่วนหนึ่งของไฟล์ Blogathon วิทยาศาสตร์ข้อมูล

สารบัญ

AI Agent คืออะไร?

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

Langchain เป็นเครื่องมือเริ่มต้นที่นึกถึงเมื่อพูดถึงตัวแทน AI อย่างไรก็ตาม การจัดระบบตัวแทน AI ด้วยตนเองเพื่อดำเนินงานร่วมกันอาจเป็นเรื่องท้าทายสำหรับ Langchain นี่คือจุดที่ CrewAI เข้ามาในภาพ

CrewAI คืออะไร?

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

  • ตัวแทนตามบทบาท: เราสามารถกำหนดตัวแทนด้วยบทบาท เป้าหมาย และเรื่องราวเบื้องหลังที่เฉพาะเจาะจง เพื่อให้บริบทเพิ่มเติมแก่ LLM ก่อนการสร้างคำตอบ
  • การจัดการงาน: กำหนดงานด้วยเครื่องมือและมอบหมายงานให้กับตัวแทนแบบไดนามิก
  • การมอบหมายระหว่างตัวแทน: เจ้าหน้าที่สามารถมอบหมายงานให้กับตัวแทนอื่น ๆ เพื่อทำงานร่วมกันได้อย่างมีประสิทธิภาพ

ด้านล่างนี้คือการนำเสนอแผนที่ความคิดของ CrewAI

ลูกเรือเอไอ

CrewAI ผสานรวมกับระบบนิเวศของ Langchain ได้อย่างราบรื่น ซึ่งหมายความว่าเราสามารถใช้เครื่องมือ Langchain และการผสานรวม LLM กับ CrewAI ได้ 

การสร้างทีมงาน AI ที่ทำงานร่วมกัน

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

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

มาเจาะลึกการเขียนโค้ดกัน

เช่นเดียวกับโปรเจ็กต์ Python อื่นๆ ให้สร้างสภาพแวดล้อมเสมือนและติดตั้งการขึ้นต่อกัน เราจำเป็นต้องมีห้องสมุด Crewai และการใช้งานของ Langchain Google GenAI- คุณสามารถใช้ LLM อื่นๆ ได้ เช่น โมเดลที่เข้าถึงได้แบบเปิด ร่วมกันขนาดใดก็ได้หรือโมเดล OpenAI

pip install crewai langchain-google-genai

ขั้นตอนต่อไปคือการกำหนด LLM และตัวแทนการทำงานร่วมกันของเรา สร้างไฟล์แยกต่างหากชื่อ agent.py เพื่อกำหนดเอเจนต์

import os

from crewai import Agent
from langchain.tools import tool
from langchain_google_genai import GoogleGenerativeAI

GOOGLE_API_KEY = "Your Key"
llm = GoogleGenerativeAI(
           model="gemini-pro", 
           google_api_key=GOOGLE_API_KEY
           )

เรามากำหนดเครื่องมือบันทึกไฟล์กันดีกว่า

class FileTools:

    @tool("Write File with content")
    def write_file(data: str):
        """Useful to write a file to a given path with a given content. 
           The input to this tool should be a pipe (|) separated text 
           of length two, representing the full path of the file, 
           including the ./lore/, and the written content you want to write to it.
        """
        try:
            path, content = data.split("|")
            path = path.replace("n", "").replace(" ", "").replace("`", "")
            if not path.startswith("./lore"):
                path = f"./lore/{path}"
            with open(path, "w") as f:
                f.write(content)
            return f"File written to {path}."
        except Exception:
            return "Error with the input format for the tool."

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

มากำหนดตัวแทนกันดีกว่า

idea_analyst = Agent(
    role = "Idea Analyst",
    goal = "Comprehensively analyse an idea to prepare blueprints for the article to be written",
    backstory="""You are an experienced content analyst, well versed in analyzing 
    an idea and preparing a blueprint for it.""",
    llm = llm,
    verbose=True
)
writer = Agent(
    role = "Fiction Writer",
    goal = "Write compelling fantasy and sci-fi fictions from the ideas given by the analyst",
    backstory="""A renowned fiction-writer with 2 times NYT 
    a best-selling author in the fiction and sci-fi category.""",
    llm=llm,
    verbose=True
)

editor = Agent(
    role= "Content Editor",
    goal = "Edit contents written by writer",
    backstory="""You are an experienced  editor with years of 
    experience in editing books and stories.""",
    llm = llm,
    tools=[FileTools.write_file],
    verbose=True
)

เรามีตัวแทนสามคน ซึ่งแต่ละคนมีบทบาท เป้าหมาย และเรื่องราวเบื้องหลังที่แตกต่างกัน ข้อมูลนี้ใช้เป็นพรอมต์สำหรับ LLM เพื่อให้บริบทเพิ่มเติม ตัวแทนบรรณาธิการมีเครื่องมือการเขียนที่เกี่ยวข้องกัน

สิ่งต่อไปคือการกำหนดงาน สำหรับสิ่งนี้ ให้สร้างไฟล์อื่นที่ jobs.py

from textwrap import dedent


class CreateTasks:

    def expand_idea():
        return dedent(""" Analyse the given task {idea}. Prepare comprehensive pin-points
                for accomplishing the given task.
                Make sure the ideas are to the point, coherent, and compelling.
                Make sure you abide by the rules. Don't use any tools.
                
                RULES:
                - Write ideas in bullet points.
                - Avoid adult ideas.
            """)
    def write():
        return dedent("""Write a compelling story in 1200 words based on the blueprint 
        ideas given by the Idea 
              analyst.
              Make sure the contents are coherent, easily communicable, and captivating.
               Don't use any tools.

              Make sure you abide by the rules.

              RULES:
              - Writing must be grammatically correct.
              - Use as little jargon as possible

              """)
    def edit():
        return dedent("""
    Look for any grammatical mistakes, edit, and format if needed.
    Add title and subtitles to the text when needed.
    Do not shorten the content or add comments.
    Create a suitable filename for the content with the .txt extension.
    You MUST use the tool to save it to the path ./lore/(your title.txt).
            """)

งานที่นี่คือแผนปฏิบัติการโดยละเอียดที่คุณคาดหวังให้เจ้าหน้าที่ดำเนินการ

สุดท้าย สร้างไฟล์ main.py ที่เรารวบรวมตัวแทนและงานเพื่อสร้างทีมงานที่ใช้งานได้

from textwrap import dedent

from crewai import Crew, Task

from agents import editor, idea_analyst, writer
from tasks import CreateTasks


class ContentWritingCrew():
    def __init__(self, idea):
        self.idea = idea
    def __call__(self):
        tasks = self._create_tasks()
        crew = Crew(
            tasks=tasks,
            agents=[idea_analyst, writer, editor],
            verbose=True
            )
        result = crew.kickoff()
        return result

    def _create_tasks(self):
        idea = CreateTasks.expand_idea().format(idea=self.idea)
        expand_idea_task = Task(
            description=idea,
            agent = idea_analyst
        )
        write_task =  Task(
            description=CreateTasks.write(),
            agent=writer
        )
        edit_task = Task(
            description=CreateTasks.edit(),
            agent=editor
        )
        return [expand_idea_task, write_task, edit_task]

if __name__ == "__main__":
    dir = "./lore"
    if not os.path.exists(dir):
        os.mkdir(dir)
    idea = input("idea: ")
    my_crew = ContentWritingCrew(idea=idea)
    result = my_crew()
    print(dedent(result))

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

ตัวแทนขั้นสุดท้าย

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

นี่คือขั้นตอนการทำงานทั่วไปสำหรับการสร้างตัวแทน AI ที่ทำงานร่วมกันกับ CrewAI คุณสามารถจับคู่เครื่องมือ Langchain อื่นๆ หรือสร้างเครื่องมือแบบกำหนดเองพร้อมการแจ้งเตือนที่มีประสิทธิภาพเพื่อทำงานที่ซับซ้อนมากขึ้นได้

นี่คือที่เก็บ GitHub สำหรับรหัส: sunilkumardash9/ContentWritingAgents.

ทำซ้ำพื้นที่เก็บข้อมูล: Sunil-KumarKu17/CollaborativeAIAgent

กรณีการใช้งานจริง

เจ้าหน้าที่ AI อัตโนมัติสามารถมีกรณีการใช้งานได้มากมาย จากผู้ช่วยส่วนตัวไปจนถึงผู้สอนเสมือนจริง ต่อไปนี้เป็นกรณีการใช้งานบางส่วนของตัวแทน AI

  • ผู้ช่วย AI ส่วนบุคคล: ผู้ช่วยส่วนตัวจะเข้ามาเป็นส่วนหนึ่งของเราเร็วๆ นี้ ผู้ช่วยที่เหมือนกับ Jarvis ที่ประมวลผลข้อมูลทั้งหมดของคุณจะให้ข้อมูลเชิงลึกในขณะที่คุณดำเนินการและจัดการงานเล็กๆ น้อยๆ ได้ด้วยตัวเอง
  • ล่ามรหัส: ล่ามโค้ดของ OpenAI เป็นตัวอย่างที่ยอดเยี่ยมของตัวแทน AI ล่ามสามารถเรียกใช้สคริปต์ Python ใด ๆ และส่งออกผลลัพธ์เพื่อตอบสนองต่อข้อความแจ้ง นี่ถือเป็นตัวแทนที่ประสบความสำเร็จมากที่สุดในปัจจุบัน
  • ผู้สอนเสมือนจริง: เมื่อเทคโนโลยี AI พัฒนาขึ้น เราก็สามารถคาดหวังผู้สอนเสมือนจริงในหลายสาขา เช่น การศึกษา การฝึกอบรม ฯลฯ
  • ซอฟต์แวร์ตัวแทนแรก: กรณีการใช้งานที่มีศักยภาพมหาศาลของตัวแทน AI อยู่ในการพัฒนาซอฟต์แวร์ครั้งแรกของตัวแทน แทนที่จะเรียกดูและคลิกปุ่มด้วยตนเองเพื่อทำสิ่งต่างๆ ให้สำเร็จ เจ้าหน้าที่ AI จะดำเนินการให้สำเร็จโดยอัตโนมัติตามคำสั่งเสียง
  • คอมพิวเตอร์เชิงพื้นที่: ในขณะที่เทคโนโลยี AR/VR พัฒนาขึ้น เจ้าหน้าที่ AI จะมีบทบาทสำคัญในการเชื่อมช่องว่างระหว่างโลกเสมือนจริงและโลกแห่งความเป็นจริง

สรุป

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

 ประเด็นที่สำคัญ

  • เจ้าหน้าที่ AI ใช้ประโยชน์จากความสามารถในการให้เหตุผลของ LLM ในการเลือกเครื่องมือที่เหมาะสมเพื่อทำงานที่ซับซ้อนให้สำเร็จ
  • CrewAI เป็นเฟรมเวิร์กโอเพ่นซอร์สสำหรับการสร้างตัวแทน AI ที่ทำงานร่วมกัน
  • คุณลักษณะเฉพาะของ CrewAI ประกอบด้วยตัวแทนตามบทบาท การมอบหมายระหว่างตัวแทนโดยอัตโนมัติ และการจัดการงานที่ยืดหยุ่น
  • CrewAI ผสานรวมเข้ากับระบบนิเวศของ Langchain ที่มีอยู่ได้อย่างราบรื่น เราสามารถใช้เครื่องมือ Langchain และการผสานรวม LLM กับ CrewAI

คำถามที่พบบ่อย

ไตรมาสที่ 1 ตัวแทน AI คืออะไร?

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

ไตรมาสที่ 2 LLM ที่ดีที่สุดที่จะใช้กับตัวแทน AI คืออะไร?

ตอบ ขึ้นอยู่กับกรณีการใช้งานและงบประมาณของคุณ GPT 4 มีความสามารถมากที่สุดแต่มีราคาแพง ในขณะที่รุ่น GPT 3.5, Mixtral และ Gemini Pro มีคุณสมบัติน้อยกว่าแต่รวดเร็วและราคาถูก

ไตรมาสที่ 3 CrewAI คืออะไร?

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

ไตรมาสที่ 4 CrewAI ใช้ทำอะไร?

A. CrewAI มอบสิ่งที่เป็นนามธรรมระดับสูงสำหรับการสร้างตัวแทน AI ที่ทำงานร่วมกันสำหรับขั้นตอนการทำงานที่ซับซ้อน

คำถามที่ 5 ความแตกต่างระหว่าง CrewAi และ Autogen คืออะไร?

ตอบ: ใน Autogen การโต้ตอบของตัวแทนในการเตรียมการจำเป็นต้องมีการเขียนโปรแกรมเพิ่มเติม ซึ่งอาจกลายเป็นเรื่องซับซ้อนและยุ่งยากเมื่อขนาดของงานเพิ่มมากขึ้น

สื่อที่แสดงในบทความนี้ไม่ได้เป็นของ Analytics Vidhya และถูกใช้ตามดุลยพินิจของผู้เขียน

ประทับเวลา:

เพิ่มเติมจาก การวิเคราะห์ วิทยา