ساخت عوامل هوش مصنوعی مشترک با CrewAI

ساخت عوامل هوش مصنوعی مشترک با CrewAI

گره منبع: 3089434

معرفی

توسعه عامل هوش مصنوعی یکی از داغ ترین مرزهای نوآوری نرم افزار است. با پیشرفت کیفیت مدل های زبان بزرگ، شاهد افزایش ادغام عامل هوش مصنوعی با سیستم های نرم افزاری موجود خواهیم بود. با عوامل هوش مصنوعی، به جای پیمایش دستی در میان برنامه‌ها، می‌توان کارها را با دستورات صوتی یا حرکتی انجام داد. اما در حال حاضر، توسعه عامل در مرحله اولیه خود است. ما هنوز در حال گذراندن مرحله اولیه زیرساخت ها، ابزارها و چارچوب توسعه هستیم، مشابه اینترنت دهه 1990. بنابراین، در این مقاله، چارچوب دیگری برای توسعه عامل به نام CrewAI را مورد بحث قرار خواهیم داد.

عوامل هوش مصنوعی

اهداف یادگیری

  • با عوامل هوش مصنوعی آشنا شوید.
  • CrewAI را کاوش کنید - یک ابزار منبع باز برای ساخت عوامل.
  • یک گروه هوش مصنوعی مشترک برای نوشتن محتوا بسازید.
  • موارد استفاده واقعی از عوامل هوش مصنوعی را کاوش کنید.

این مقاله به عنوان بخشی از بلاگاتون علم داده.

جدول محتوا

عوامل هوش مصنوعی چیست؟

مدل‌های زبان در ترجمه، خلاصه‌نویسی و استدلال برتری دارند. با این حال، شما می توانید کارهای زیادی با آنها انجام دهید. یکی از راه‌های درک کامل پتانسیل استدلال این است که LLMها را عاملی کنیم. عوامل هوش مصنوعی LLM هایی هستند که با ابزارها و درخواست های مناسب تقویت شده اند. این عوامل می توانند مرور، حذف وب، اجرای پرس و جو SQL، عملیات فایل و موارد دیگر را خودکار کنند. نمایندگان از ظرفیت استدلال LLMها برای انتخاب ابزاری بر اساس نیازهای فعلی استفاده می کنند. اما به جای استفاده از یک عامل واحد برای یک کار، می‌توانیم بسیاری از آنها را برای انجام کارهای پیچیده ترکیب کنیم.

Langchain ابزار پیش فرضی است که هنگام بحث در مورد عوامل هوش مصنوعی به ذهن خطور می کند. با این حال، هماهنگ کردن دستی عوامل هوش مصنوعی برای انجام وظایف مشترک برای Langchain چالش برانگیز خواهد بود. اینجاست که CrewAI به تصویر می‌آید.

CrewAI چیست؟

CrewAI یک چارچوب متن باز برای سازماندهی نقش آفرینی و عوامل هوش مصنوعی مستقل است. این به ایجاد عوامل مشترک هوش مصنوعی برای دستیابی به اهداف پیچیده با سهولت کمک می کند. این چارچوب به گونه‌ای طراحی شده است که عوامل هوش مصنوعی را قادر می‌سازد تا نقش‌هایی را به عهده بگیرند، وظایف را محول کنند و اهداف را به اشتراک بگذارند، مانند یک خدمه در دنیای واقعی. اینها برخی از ویژگی های منحصر به فرد CrewAI هستند:

  • عوامل مبتنی بر نقش: ما می‌توانیم عواملی را با نقش‌ها، اهداف و پیشینه‌های خاص تعریف کنیم تا پیش از تولید پاسخ، زمینه بیشتری را به LLM بدهیم.
  • مدیریت وظایف: وظایف را با ابزارها تعریف کنید و به صورت پویا آنها را به عوامل اختصاص دهید.
  • تفویض اختیار بین عاملی: نمایندگان می توانند وظایفی را به سایر نمایندگان محول کنند تا به طور مؤثر همکاری کنند.

در زیر نمایشی از نقشه ذهنی CrewAI وجود دارد.

CrewAI

CrewAI به طور یکپارچه با اکوسیستم Langchain ادغام می شود. این بدان معناست که ما می توانیم از ابزارهای Langchain و ادغام های LLM با CrewAI استفاده کنیم. 

ساخت یک خدمه هوش مصنوعی مشترک

برای درک بهتر CrewAI، بیایید عوامل هوش مصنوعی مشترک برای نوشتن محتوای خلاقانه بسازیم. برای این کار، عامل ها، ابزارها و وظایف مربوطه را برای هر عامل تعریف می کنیم. از آنجایی که این تیم یک تیم برای نوشتن محتوا است، ما سه عامل جداگانه مانند یک تحلیلگر ایده، یک نویسنده و یک ویرایشگر را تعریف خواهیم کرد. به هر عامل وظیفه ای محول خواهد شد.

عامل تحلیلگر مسئول تجزیه و تحلیل ایده و تهیه یک طرح جامع برای نوشتن محتوا خواهد بود. عامل Writer پیش نویس مقاله را آماده می کند و در نهایت ویرایشگر مسئولیت قالب بندی، ویرایش و تصحیح پیش نویس را بر عهده خواهد داشت. همانطور که می دانیم، CrewAI به ما امکان می دهد عوامل را با ابزارهای سفارشی تقویت کنیم. ویرایشگر را با ابزاری تقویت می کنیم تا آن را در دیسک محلی ذخیره کنیم. اما برای انجام همه این موارد، ما به یک LLM نیاز داریم. در اینجا از مدل Gemini گوگل استفاده خواهیم کرد.

بیایید به کدنویسی بپردازیم

مانند هر پروژه پایتون، یک محیط مجازی ایجاد کنید و وابستگی ها را نصب کنید. ما به کتابخانه Crewai و اجرای Langchain نیاز خواهیم داشت Google GenAI. می‌توانید از سایر LLM‌ها، مانند مدل‌های دسترسی آزاد استفاده کنید با همهر مقیاس، یا مدل های OpenAI.

pip install crewai langchain-google-genai

گام بعدی این است که LLM و نمایندگان مشترک خود را تعریف کنیم. یک فایل جداگانه با نام agents.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 مطابقت داشته باشند. تابع انتظار دارد یک رشته واحد با دو قسمت، یک مسیر فایل، و محتوای جدا شده توسط یک لوله (|). رشته های doc متد نیز به عنوان زمینه اضافه شده برای تابع استفاده می شود. بنابراین، مطمئن شوید که اطلاعات دقیقی در مورد روش ارائه می دهید.

بیایید عوامل را تعریف کنیم

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 استفاده می شود تا زمینه بیشتری را ارائه دهد. عامل ویرایشگر یک ابزار نوشتن مرتبط با آن دارد.

مورد بعدی تعریف وظایف است. برای این کار، یک فایل tasks.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 را ایجاد کنید که در آن Agents و Tasks را برای ایجاد یک خدمه کاربردی جمع آوری می کنیم.

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__ اولیه سازی می شود و خدمه را شروع می کند. هنگامی که اسکریپت را اجرا می کنید، می توانید زنجیره اقدامات را در ترمینال یا نوت بوک مشاهده کنید. وظایف به ترتیبی که توسط خدمه تعریف شده است اجرا می شود. در اینجا یک عکس فوری از گزارش اجرا آمده است.

نماینده نهایی

این گزارش اجرای عامل نهایی است. یعنی ویرایشگر پیش نویس دریافتی از عامل نویسنده را ویرایش می کند و از ابزار نوشتن فایل برای ذخیره فایل با نام فایل مناسب استفاده می کند.

این گردش کار کلی برای ایجاد عوامل هوش مصنوعی مشترک با CrewAI است. می‌توانید سایر ابزارهای Langchain را جفت کنید یا ابزارهای سفارشی را با اعلان کارآمد برای انجام کارهای پیچیده‌تر ایجاد کنید.

در اینجا مخزن GitHub برای کدها است: sunilkumardash9/ContentWritingAgents.

Replit Repository: Sunil-KumarKu17/CollborativeAIAgent

موارد استفاده در دنیای واقعی

عوامل هوش مصنوعی مستقل می توانند موارد استفاده زیادی داشته باشند. از دستیاران شخصی گرفته تا مربیان مجازی. در اینجا چند مورد استفاده از عوامل هوش مصنوعی آورده شده است.

  • دستیار هوش مصنوعی شخصی: دستیاران شخصی به زودی بخشی جدایی ناپذیر ما خواهند شد. یک دستیار جارویس مانند که تمام داده‌های شما را پردازش می‌کند، بینشی را در حین رفتن به شما ارائه می‌کند و به تنهایی وظایف بی‌اهمیت را انجام می‌دهد.
  • مفسران کد: مفسر کد OpenAI نمونه ای درخشان از یک عامل هوش مصنوعی است. مفسر می تواند هر اسکریپت پایتون را اجرا کند و نتایج را در پاسخ به یک اعلان متنی خروجی دهد. این بدون شک موفق ترین نماینده تا به امروز است.
  • مربیان مجازی: همانطور که فناوری هوش مصنوعی در حال پیشرفت است، می‌توانیم منتظر مربیان مجازی در بسیاری از زمینه‌ها مانند آموزش، آموزش و غیره باشیم.
  • نرم افزار عامل اول: یک مورد بزرگ بالقوه استفاده از عوامل هوش مصنوعی در توسعه نرم افزار عامل اول است. به جای مرور دستی و کلیک کردن روی دکمه ها برای انجام کارها، عوامل هوش مصنوعی به طور خودکار آنها را بر اساس دستورات صوتی انجام می دهند.
  • محاسبات فضایی: با تکامل فناوری AR/VR، عوامل هوش مصنوعی نقش مهمی در پر کردن شکاف بین دنیای مجازی و واقعی خواهند داشت.

نتیجه

ما هنوز در مراحل اولیه توسعه عامل هوش مصنوعی هستیم. در حال حاضر، برای بهترین نتیجه ممکن از سوی عوامل هوش مصنوعی، باید به GPT-4 تکیه کنیم، و این گران است. اما از آنجایی که مدل‌های منبع باز به GPT-4 می‌رسند، گزینه‌های بهتری برای اجرای کارآمد عوامل هوش مصنوعی با هزینه معقول دریافت خواهیم کرد. از سوی دیگر، چارچوب های توسعه عامل به سرعت در حال پیشرفت است. همانطور که به جلو می رویم، چارچوب ها عوامل را قادر می سازند تا کارهای پیچیده تری را انجام دهند.

 گیرنده های کلیدی

  • عوامل هوش مصنوعی از ظرفیت استدلال LLMها برای انتخاب ابزارهای مناسب برای انجام وظایف پیچیده استفاده می کنند.
  • CrewAI یک چارچوب منبع باز برای ساخت عوامل هوش مصنوعی مشترک است.
  • ویژگی منحصر به فرد CrewAI شامل عوامل مبتنی بر نقش، تفویض اختیار بین عاملی مستقل و مدیریت وظایف انعطاف پذیر است.
  • CrewAI به طور یکپارچه با اکوسیستم Langchain موجود ادغام می شود. ما می توانیم از ابزارهای Langchain و ادغام های LLM با CrewAI استفاده کنیم.

پرسش و پاسخهای متداول

Q1. عوامل هوش مصنوعی چیست؟

الف. عوامل هوش مصنوعی برنامه‌های نرم‌افزاری هستند که با محیط خود در تعامل هستند، تصمیم می‌گیرند و برای رسیدن به هدف نهایی اقدام می‌کنند.

Q2. بهترین LLM برای استفاده با عوامل هوش مصنوعی چیست؟

A. این بستگی به موارد استفاده و بودجه شما دارد. GPT 4 تواناترین اما گران قیمت است، در حالی که مدل های GPT 3.5، Mixtral و Gemini Pro دارای کیفیت کمتری هستند اما سریع و ارزان هستند.

Q3. CrewAI چیست؟

A. CrewAI یک چارچوب منبع باز برای سازماندهی نقش آفرینی و عوامل هوش مصنوعی مستقل است. این به ایجاد عوامل مشترک هوش مصنوعی برای دستیابی به اهداف پیچیده با سهولت کمک می کند.

Q4. CrewAI برای چه مواردی استفاده می شود؟

A. CrewAI یک انتزاع سطح بالا برای ساخت عوامل هوش مصنوعی مشترک برای گردش های کاری پیچیده فراهم می کند.

Q5. تفاوت بین CrewAi و Autogen چیست؟

الف. در Autogen، تعامل عوامل هماهنگ کننده به برنامه ریزی اضافی نیاز دارد که با افزایش مقیاس وظایف می تواند پیچیده و دست و پا گیر شود.

رسانه نشان داده شده در این مقاله متعلق به Analytics Vidhya نیست و به صلاحدید نویسنده استفاده می شود.

تمبر زمان:

بیشتر از تجزیه و تحلیل Vidhya