Xây dựng các đại lý AI hợp tác với CrewAI

Xây dựng các đại lý AI hợp tác với CrewAI

Nút nguồn: 3089434

Giới thiệu

Phát triển tác nhân AI là một trong những lĩnh vực nóng nhất của đổi mới Phần mềm. Khi chất lượng của Mô hình ngôn ngữ lớn phát triển, chúng ta sẽ chứng kiến ​​​​sự gia tăng tích hợp tác nhân AI với các hệ thống phần mềm hiện có. Với các tác nhân AI, có thể hoàn thành các tác vụ bằng lệnh thoại hoặc cử chỉ thay vì điều hướng thủ công qua các ứng dụng. Nhưng hiện tại, việc phát triển đại lý đang ở giai đoạn sơ khai. Chúng tôi vẫn đang trải qua giai đoạn đầu phát triển cơ sở hạ tầng, công cụ và khung, tương tự như Internet của những năm 1990. Vì vậy, trong bài viết này, chúng ta sẽ thảo luận về một khuôn khổ khác để phát triển đại lý có tên là CrewAI.

Đại lý AI

Mục tiêu học tập

  • Tìm hiểu về các tác nhân AI.
  • Khám phá CrewAI – một công cụ nguồn mở dành cho các đại lý xây dựng.
  • Xây dựng nhóm AI hợp tác để viết nội dung.
  • Khám phá các trường hợp sử dụng thực tế của tác nhân AI.

Bài báo này đã được xuất bản như một phần của Blogathon Khoa học Dữ liệu.

Mục lục

Đại lý AI là gì?

Các mô hình ngôn ngữ vượt trội về khả năng dịch thuật, tóm tắt và lý luận. Tuy nhiên, bạn có thể làm được rất nhiều điều với họ. Một trong những cách để nhận ra đầy đủ tiềm năng lý luận là làm cho LLM trở nên có tính chất tác nhân. Tác nhân AI là LLM được tăng cường bằng các công cụ và lời nhắc phù hợp. Các tác nhân này có thể tự động hóa việc duyệt, loại bỏ web, thực thi truy vấn SQL, thao tác tệp, v.v. Các tác nhân sử dụng khả năng suy luận của LLM để chọn một công cụ dựa trên các yêu cầu hiện tại. Nhưng thay vì sử dụng một tác nhân duy nhất cho một nhiệm vụ, chúng ta có thể tập hợp nhiều tác nhân để hoàn thành các tác vụ phức tạp.

Langchain là công cụ mặc định được nghĩ đến khi thảo luận về các tác nhân AI. Tuy nhiên, việc điều phối thủ công các tác nhân AI để thực hiện các nhiệm vụ cộng tác sẽ là một thách thức với Langchain. Đây là nơi CrewAI xuất hiện.

CrewAI là gì?

Phi hành đoànAI là một khung mã nguồn mở để điều phối các tác nhân AI tự trị và nhập vai. Nó giúp tạo ra các tác nhân AI hợp tác để hoàn thành các mục tiêu phức tạp một cách dễ dàng. Khung này được thiết kế để cho phép các tác nhân AI đảm nhận vai trò, giao nhiệm vụ và chia sẻ mục tiêu, giống như một nhóm trong thế giới thực. Đây là một số tính năng độc đáo của CrewAI:

  • Tác nhân dựa trên vai trò: Chúng tôi có thể xác định tác nhân với vai trò, mục tiêu và lý lịch cụ thể để cung cấp thêm ngữ cảnh cho LLM trước khi tạo câu trả lời.
  • Quản lý tác vụ: Xác định nhiệm vụ bằng các công cụ và tự động phân công chúng cho các tổng đài viên.
  • Phân quyền giữa các tác nhân: Các tác nhân có thể ủy thác nhiệm vụ cho các tác nhân khác để cộng tác hiệu quả.

Dưới đây là hình ảnh minh họa của bản đồ tư duy CrewAI.

Phi hành đoànAI

CrewAI tích hợp liền mạch với hệ sinh thái Langchain. Điều này có nghĩa là chúng tôi có thể sử dụng các công cụ Langchain và tích hợp LLM với CrewAI. 

Xây dựng đội ngũ AI hợp tác

Để hiểu rõ hơn về CrewAI, hãy cùng xây dựng các tác nhân AI cộng tác để viết nội dung sáng tạo. Đối với điều này, chúng tôi sẽ xác định các tác nhân, công cụ và nhiệm vụ tương ứng cho từng tác nhân. Vì đây là nhóm viết nội dung nên chúng tôi sẽ xác định ba tác nhân riêng biệt, như nhà phân tích ý tưởng, người viết và biên tập viên. Mỗi đại lý sẽ được giao một nhiệm vụ.

Tác nhân phân tích sẽ chịu trách nhiệm phân tích ý tưởng và chuẩn bị một kế hoạch chi tiết toàn diện để viết nội dung. Tác nhân Nhà văn sẽ chuẩn bị bản nháp cho bài viết và cuối cùng, người biên tập sẽ chịu trách nhiệm định dạng, chỉnh sửa và sửa chữa bản nháp. Như chúng ta đã biết, CrewAI cho phép chúng tôi tăng cường các đại lý bằng các công cụ tùy chỉnh. Chúng tôi sẽ tăng cường trình chỉnh sửa bằng một công cụ để lưu nó vào đĩa cục bộ. Nhưng để hoàn thành tất cả những điều này, chúng ta cần có LLM. Ở đây, chúng tôi sẽ sử dụng mô hình Gemini của Google.

Hãy đi sâu vào mã hóa

Giống như bất kỳ dự án Python nào, hãy tạo một môi trường ảo và cài đặt các phần phụ thuộc. Chúng ta sẽ cần thư viện Crewai và việc triển khai Langchain Google GenAI. Bạn có thể sử dụng các LLM khác, như các mô hình truy cập mở từ Cùng nhauBất kỳ quy mô nàohoặc các mô hình OpenAI.

pip install crewai langchain-google-genai

Bước tiếp theo là xác định LLM và Đại lý hợp tác của chúng tôi. Tạo một tệp riêng biệt có tên là Agent.py để xác định các tác nhân.

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
           )

Hãy xác định công cụ lưu tập tin.

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."

Phương thức write_file ở trên được trang trí bằng chức năng công cụ của Langchain. Vì CrewAI sử dụng Langchain một cách kỹ lưỡng nên các công cụ này phải tuân thủ các quy ước của Langchain. Hàm mong đợi một chuỗi có hai phần, đường dẫn tệp và nội dung được phân tách bằng dấu gạch ngang (|). Các chuỗi tài liệu phương thức cũng được sử dụng làm ngữ cảnh bổ sung cho hàm. Vì vậy, hãy đảm bảo bạn cung cấp thông tin chi tiết về phương pháp.

Hãy xác định các tác nhân

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
)

Chúng tôi có ba đặc vụ, mỗi đặc vụ có vai trò, mục tiêu và cốt truyện khác nhau. Thông tin này được sử dụng như một lời nhắc để LLM cung cấp thêm ngữ cảnh. Tác nhân biên tập có một công cụ viết được liên kết với nó.

Việc tiếp theo là xác định nhiệm vụ. Để thực hiện việc này, hãy tạo một tệp khác task.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).
            """)

Các nhiệm vụ ở đây là các kế hoạch hành động chi tiết mà bạn mong đợi các tổng đài viên thực hiện.

Cuối cùng, tạo tệp main.py nơi chúng tôi tập hợp các Đại lý và Nhiệm vụ để tạo một nhóm chức năng.

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))

Trong đoạn mã trên, chúng tôi đã xác định lớp ContentWritingCrew chấp nhận chuỗi ý tưởng từ người dùng. Phương thức _create_tasks tạo tác vụ. Phương thức __call__ khởi tạo và khởi động nhóm. Sau khi chạy tập lệnh, bạn có thể quan sát chuỗi hành động trên thiết bị đầu cuối hoặc sổ ghi chép. Các nhiệm vụ sẽ được thực hiện theo thứ tự do phi hành đoàn xác định. Đây là ảnh chụp nhanh của nhật ký thực hiện.

đại lý cuối cùng

Đây là nhật ký thực thi của tác nhân cuối cùng. tức là Biên tập viên. Nó chỉnh sửa bản nháp nhận được từ đại lý của người viết và sử dụng công cụ ghi tệp để lưu tệp với tên tệp phù hợp.

Đây là quy trình chung để tạo các tác nhân AI cộng tác với CrewAI. Bạn có thể ghép nối các công cụ Langchain khác hoặc tạo các công cụ tùy chỉnh với lời nhắc hiệu quả để hoàn thành các nhiệm vụ phức tạp hơn.

Đây là kho lưu trữ GitHub cho các mã: sunilkumardash9/ContentWritingAgents.

Kho lưu trữ thay thế: Sunil-KumarKu17/Cộng tácAIAgent

Các trường hợp sử dụng trong thế giới thực

Các tác nhân AI tự động có thể có rất nhiều trường hợp sử dụng. Từ trợ lý cá nhân đến người hướng dẫn ảo. Dưới đây là một số trường hợp sử dụng tác nhân AI.

  • Trợ lý AI cá nhân: Trợ lý cá nhân sẽ sớm trở thành một phần không thể thiếu của chúng tôi. Một trợ lý giống như Jarvis xử lý tất cả dữ liệu của bạn, cung cấp thông tin chi tiết khi bạn thực hiện và tự mình xử lý các tác vụ tầm thường.
  • Trình thông dịch mã: Trình thông dịch mã của OpenAI là một ví dụ điển hình về tác nhân AI. Trình thông dịch có thể chạy bất kỳ tập lệnh Python nào và xuất kết quả theo lời nhắc văn bản. Đây được cho là đại lý thành công nhất cho đến nay.
  • Giảng viên ảo: Khi công nghệ AI phát triển, chúng ta có thể mong đợi những người hướng dẫn ảo trong nhiều lĩnh vực như giáo dục, đào tạo, v.v.
  • Phần mềm đại lý đầu tiên: Một trường hợp sử dụng tiềm năng rất lớn của tác nhân AI là phát triển phần mềm tác nhân đầu tiên. Thay vì duyệt thủ công và nhấp vào nút để hoàn thành công việc, các tác nhân AI sẽ tự động thực hiện chúng dựa trên lệnh thoại.
  • Máy tính không gian: Khi công nghệ AR/VR phát triển, các tác nhân AI sẽ đóng một vai trò quan trọng trong việc thu hẹp khoảng cách giữa thế giới ảo và thực.

Kết luận

Chúng tôi vẫn đang trong giai đoạn đầu phát triển tác nhân AI. Hiện tại, để có được kết quả tốt nhất có thể từ các tác nhân AI, chúng ta cần dựa vào GPT-4 và nó rất tốn kém. Nhưng khi các mô hình nguồn mở bắt kịp GPT-4, chúng tôi sẽ có các tùy chọn tốt hơn để chạy tác nhân AI một cách hiệu quả với chi phí hợp lý. Mặt khác, các khuôn khổ phát triển đại lý đang tiến triển nhanh chóng. Khi chúng tôi tiến lên phía trước, các khung sẽ cho phép các tổng đài viên thực hiện các nhiệm vụ phức tạp hơn nữa.

 Chìa khóa chính

  • Các tác nhân AI tận dụng khả năng suy luận của LLM để chọn các công cụ phù hợp nhằm hoàn thành các nhiệm vụ phức tạp.
  • CrewAI là một framework mã nguồn mở để xây dựng các tác nhân AI hợp tác.
  • Tính năng độc đáo của CrewAI bao gồm Đại lý dựa trên vai trò, ủy quyền tự trị giữa các đại lý và quản lý nhiệm vụ linh hoạt.
  • CrewAI tích hợp liền mạch với hệ sinh thái Langchain hiện có. Chúng tôi có thể sử dụng các công cụ Langchain và tích hợp LLM với CrewAI.

Những câu hỏi thường gặp

Q1. Tác nhân AI là gì?

A. Tác nhân AI là các chương trình phần mềm tương tác với môi trường của chúng, đưa ra quyết định và hành động để đạt được mục tiêu cuối cùng.

Q2. LLM tốt nhất để sử dụng với các tác nhân AI là gì?

Đáp: Điều này phụ thuộc vào trường hợp sử dụng và ngân sách của bạn. GPT 4 là loại có hiệu năng cao nhất nhưng đắt tiền, trong khi các mẫu GPT 3.5, Mixtral và Gemini Pro kém chất lượng hơn nhưng nhanh và rẻ.

Q3. CrewAI là gì?

A. CrewAI là một khung nguồn mở để điều phối các tác nhân AI tự trị và nhập vai. Nó giúp tạo ra các tác nhân AI hợp tác để hoàn thành các mục tiêu phức tạp một cách dễ dàng.

Q4. CrewAI dùng để làm gì?

A. CrewAI cung cấp khả năng trừu tượng hóa cấp cao để xây dựng các tác nhân AI cộng tác cho các quy trình công việc phức tạp.

Q5. Sự khác biệt giữa CrewAi và Autogen là gì?

A. Trong Autogen, các tương tác của tác nhân điều phối yêu cầu lập trình bổ sung, việc này có thể trở nên phức tạp và cồng kềnh khi quy mô nhiệm vụ tăng lên.

Phương tiện hiển thị trong bài viết này không thuộc sở hữu của Analytics Vidhya và được sử dụng theo quyết định riêng của Tác giả.

Dấu thời gian:

Thêm từ Phân tích Vidhya