» هوش مصنوعی » نحوه ایجاد پلاگین های AutoGPT
هوش مصنوعی

نحوه ایجاد پلاگین های AutoGPT

اردیبهشت 7, 1402 3093

افزونه‌های AutoGPT می‌توانند قابلیت Auto GPT را بهبود بخشند و عملکردها را مطابق با نیاز ما تنظیم کنند، که می‌تواند عملکرد آن را بهبود بخشد و ویژگی‌های جدیدی ارائه دهد. پلاگین های AutoGPT که رفتار سیستم GPT را برای برآوردن نیازها یا الزامات خاص سفارشی می کند. در این مقاله، نحوه ایجاد افزونه‌های AutoGPT و مزایایی که ممکن است برای کاربران فراهم کنند را بررسی خواهیم کرد.

نحوه ایجاد افزونه های AutoGPT

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

همچنین می‌توانید نحوه نصب افزونه های AutoGPT.

نحوه ایجاد افزونه های AutoGPT

دانلود یا شبیه سازی مخزن افزونه: مخزن افزونه را کلون کنید یا آن را در قالب فشرده دریافت کنید.

AutoGPT Plugins

نصب هر گونه وابستگی برای افزونه: در ترمینال خود، به پوشه افزونه بروید و دستور زیر را برای نصب وابستگی‌های مورد نیاز اجرا کنید:

 pip install -r requirements.txt

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

فایل Zip حاوی افزونه را کپی کنید: فایل Zip افزونه را در پوشه افزونه‌های مخزن Auto-GPT قرار دهید.

اجازه به فهرست شدن افزونه (اختیاری): برای جلوگیری از نمایش هشدار هنگام بارگیری افزونه، نام کلاس افزونه را به ALLOWLISTED_PLUGINS در فایل env. اضافه کنید:

ALLOWLISTED_PLUGINS=example-plugin1,example-plugin2,example-plugin3

اگر افزونه در لیست مجاز نباشد، قبل از بارگیری به شما هشدار داده می شود.

برای ایجاد افزونه های AutoGPT برای Twitter

افزونه ای که API Twitter را با Auto GPT ادغام می کند.

اکنون، در این مقاله، ما یک پلاگین AutoGPT توییتر ایجاد می کنیم که به شما کمک می کند تا در Auto GPT توییت کنید. لطفاً در Github.

ویژگی: با استفاده از فرمان post_tweet(tweet)، یک توییت ارسال کنید

افزونه AutoGPT خود را ایجاد کنید

  1. طبق دستور در مخزن اصلی، این مخزن را شبیه سازی کنید.
  2. کد زیر را به همراه جزئیات API توییتر خود در فایل .env قرار دهید:
###################### ############################################### #######
### توییتر API
############################################### #############################

# کلیدهای مصرف کننده به عنوان کلیدهای API در پورتال توسعه دهنده نیز شناخته می شوند

TW_CONSUMER_KEY=
TW_CONSUMER_SECRET=
TW_ACCESS_TOKEN=
TW_ACCESS_TOKEN_SECRET=
TW_CLIENT_ID=
TW_CLIENT_ID_SECRET=
"""ادغام‌های API توییتر با استفاده از Tweepy."""
از تایپ import Any، Dict، List، Optional، Tuple، TypedDict، TypeVar
از auto_gpt_plugin_template import AutoGPTPluginTemplate
واردات سیستم عامل
واردات tweepy

PromptGenerator = TypeVar ("PromptGenerator")


پیام کلاس (TypedDict):
    نقش: خ
    محتوا: خ


کلاس AutoGPTTwitter (AutoGPTPluginTemplate):
    """
    ادغام Twitter API با استفاده از Tweepy
    """

    def __init__(self):
        super().__init__()
        self._name = "autogpt-twitter"
        self._version = "0.1.0"
        self._description = "ادغام های API توییتر با استفاده از Tweepy."
        self.twitter_consumer_key = os.getenv("TW_CONSUMER_KEY")
        self.twitter_consumer_secret = os.getenv("TW_CONSUMER_SECRET")
        self.twitter_access_token = os.getenv("TW_ACCESS_TOKEN")
        self.twitter_access_token_secret = os.getenv("TW_ACCESS_TOKEN_SECRET")
        self.tweet_id = []
        self.tweets = []

        self.api = هیچکدام

        اگر (
            self.twitter_consumer_key
            و self.twitter_consumer_secret
            و self.twitter_access_token
            و self.twitter_access_token_secret
        ) هیچکدام نیست:
            # احراز هویت در توییتر
            self.auth = tweepy.OAuth1UserHandler(
                self.twitter_consumer_key،
                self.twitter_consumer_secret،
                self.twitter_access_token،
                self.twitter_access_token_secret،
            )
            self.api = tweepy.API(self.auth)
            self.stream = tweepy.Stream(
                self.twitter_consumer_key،
                self.twitter_consumer_secret،
                self.twitter_access_token،
                self.twitter_access_token_secret،
            )
        دیگر:
            print ("اطلاعات کاربری توییتر در فایل .env یافت نشد.")

    def can_handle_on_response(self) -> bool:
        ""این روش فراخوانی می شود تا بررسی شود که افزونه می تواند
        روش on_response را مدیریت کنید.
        برمی‌گرداند:
            bool: درست است اگر افزونه بتواند روش on_response را مدیریت کند."""
        بازگشت نادرست

    def on_response(خود، پاسخ: str، *args، **kwargs) -> str:
        """این روش زمانی فراخوانی می شود که پاسخی از مدل دریافت شود."""
        عبور

    def can_handle_post_prompt(self) -> bool:
        ""این روش فراخوانی می شود تا بررسی شود که افزونه می تواند
        روش post_prompt را مدیریت کنید.
        برمی‌گرداند:
            bool: اگر افزونه بتواند روش post_prompt را مدیریت کند درست است."""
        بازگشت درست است

    def can_handle_on_planning(self) -> bool:
        ""این روش فراخوانی می شود تا بررسی شود که افزونه می تواند
        روش on_planning را مدیریت کنید.
        برمی‌گرداند:
            bool: درست است اگر افزونه بتواند روش on_planning را مدیریت کند."""
        بازگشت نادرست

    def on_planning(
        خود، prompt: PromptGenerator، پیام‌ها: List[str]
    ) -> اختیاری[str]:
        """این روش قبل از تکمیل برنامه ریزی چت فراخوانی می شود.
        ارگ:
            prompt (PromptGenerator): مولد prompt.
            پیام ها (List[str]): فهرست پیام ها.
        """
        عبور

    def can_handle_post_planning(self) -> bool:
        ""این روش فراخوانی می شود تا بررسی شود که افزونه می تواند
        روش post_planning را مدیریت کنید.
        برمی‌گرداند:
            bool: درست است اگر افزونه بتواند روش post_planning را مدیریت کند."""
        بازگشت نادرست

    def post_planning(self, answer: str) -> str:
        """این روش پس از اتمام برنامه ریزی چت فراخوانی می شود.
        ارگ:
            پاسخ (str): پاسخ.
        برمی‌گرداند:
            str: پاسخ به دست آمده.
        """
        عبور

    def can_handle_pre_instruction(self) -> bool:
        ""این روش فراخوانی می شود تا بررسی شود که افزونه می تواند
        روش pre_instruction را مدیریت کنید.
        برمی‌گرداند:
            bool: اگر افزونه بتواند روش pre_instruction را مدیریت کند درست است."""
        بازگشت نادرست

    def pre_instruction(self, messages: List[str]) -> List[str]:
        """این روش قبل از انجام چت دستورالعمل فراخوانی می شود.
        ارگ:
            پیام ها (List[str]): فهرستی از پیام های زمینه.
        برمی‌گرداند:
            List[str]: فهرست پیام‌ها.
        """
        عبور

    def can_handle_on_instruction(self) -> bool:
        ""این روش فراخوانی می شود تا بررسی شود که افزونه می تواند
        روش on_instruction را مدیریت کنید.
        برمی‌گرداند:
            bool: اگر افزونه بتواند روش on_instruction را مدیریت کند درست است."""
        بازگشت نادرست

    def on_instruction(self, messages: List[str]) -> اختیاری[str]:
        """این روش زمانی فراخوانی می شود که چت دستورالعمل انجام شود.
        ارگ:
            پیام ها (List[str]): فهرستی از پیام های زمینه.
        برمی‌گرداند:
            اختیاری[str]: پیام به دست آمده.
        """
        عبور

    def can_handle_post_instruction(self) -> bool:
        ""این روش فراخوانی می شود تا بررسی شود که افزونه می تواند
        روش post_instruction را مدیریت کنید.
        برمی‌گرداند:
            bool: درست است اگر افزونه بتواند روش post_instruction را مدیریت کند."""
        بازگشت نادرست

    def post_instruction(self, answer: str) -> str:
        """این روش پس از انجام چت دستورالعمل فراخوانی می شود.
        ارگ:
            پاسخ (str): پاسخ.
        برمی‌گرداند:
            str: پاسخ به دست آمده.
        """
        عبور

    def can_handle_pre_command(self) -> bool:
        ""این روش فراخوانی می شود تا بررسی شود که افزونه می تواند
        روش pre_command را مدیریت کنید.
        برمی‌گرداند:
            bool: درست است اگر افزونه بتواند از روش pre_command استفاده کند."""
        بازگشت نادرست

    def pre_command(
        self، command_name: str، آرگومان‌ها: Dict[str، Any]
    ) -> Tuple[str, Dict[str, Any]]:
        """این متد قبل از اجرای دستور فراخوانی می شود.
        ارگ:
            command_name (str): نام فرمان.
            آرگومان ها (Dict[str, Any]): آرگومان ها.
        برمی‌گرداند:
            Tuple[str, Dict[str, Any]]: نام فرمان و آرگومان‌ها.
        """
        عبور

    def can_handle_post_command(self) -> bool:
        ""این روش فراخوانی می شود تا بررسی شود که افزونه می تواند
        روش post_command را مدیریت کنید.
        برمی‌گرداند:
            bool: اگر افزونه بتواند روش post_command را مدیریت کند درست است."""
        بازگشت نادرست

    def post_command(self, command_name: str, answer: str) -> str:
        """این متد پس از اجرای دستور فراخوانی می شود.
        ارگ:
            command_name (str): نام فرمان.
            پاسخ (str): پاسخ.
        برمی‌گرداند:
            str: پاسخ به دست آمده.
        """
        عبور

    def can_handle_chat_completion(
        خود،
        پیام‌ها: فهرست[Dict[Any، Any]]،
        مدل: خیابان،
        دما: شناور،
        max_tokens: int،
    ) -> bool:
        ""این روش فراخوانی می شود تا بررسی شود که افزونه می تواند
        روش chat_completion را مدیریت کنید.
        ارگ:
            پیام ها (Dict[Any, Any]): پیام ها.
            model (str): نام مدل.
            دما (شناور): دما.
            max_tokens (int): حداکثر توکن ها.
        برمی‌گرداند:
            bool: اگر افزونه بتواند روش chat_completion را مدیریت کند درست است."""
        بازگشت نادرست

    def handle_chat_completion(
        خود،
        پیام‌ها: فهرست[Dict[Any، Any]]،
        مدل: خیابان،
        دما: شناور،
        max_tokens: int،
    ) -> خ:
        """این روش زمانی فراخوانی می شود که چت کامل شود.
        ارگ:
            پیام ها (Dict[Any, Any]): پیام ها.
            model (str): نام مدل.
            دما (شناور): دما.
            max_tokens (int): حداکثر توکن ها.
        برمی‌گرداند:
            str: پاسخ به دست آمده.
        """
        بازگشت هیچکدام

    def post_prompt(self, prompt: PromptGenerator) -> PromptGenerator:
        ""این متد درست پس از فراخوانی general_prompt فراخوانی می شود.
            اما در واقع قبل از ایجاد اعلان.
        ارگ:
            prompt (PromptGenerator): مولد prompt.
        برمی‌گرداند:
            PromptGenerator: مولد prompt.
        """
        if self.api:
            از واردات توییتر (
                get_mentions
                ارسال پاسخ،
                post_tweet،
                search_twitter_user،
            )

            prompt.add_command(
                "post_tweet"، "Post Tweet"، {"tweet_text": ""}، post_tweet
            )
            prompt.add_command(
                "ارسال پاسخ"،
                "پست توییتر پاسخ"،
                {"tweet_text": ""، "tweet_id": ""}،
                ارسال پاسخ،
            )
            prompt.add_command("get_mentions"، "Get Twitter Mentions"، {}، get_mentions)
            prompt.add_command(
                "search_twitter_user"،
                "جستجو در توییتر"،
                {
                    "target_user": ""،
                    "number_of_tweets": "

این کد را کپی کرده و در فهرست پلاگین توییتر قرار دهید. همچنین می‌توانید این کد را مطابق میل خود سفارشی کنید.

"""این ماژول حاوی توابعی برای تعامل با API توییتر است."""
از __future__ وارد کردن حاشیه نویسی
از جانب . AutoGPTTwitter را وارد کنید
پانداها را به صورت PD وارد کنید
واردات tweepy

افزونه = AutoGPTTwitter()


def post_tweet(tweet_text: str) -> str:
    """ توییتی را در توییتر ارسال می کند.
    ارگ:
        توییت (str): توییتی که باید پست شود.
    برمی‌گرداند:
        str: توییتی که ارسال شد.
    """

    _tweetID = plugin.api.update_status(status=tweet_text)

    بازگشت f"موفقیت! توییت: {_tweetID.text}"

برای دانستن بیشتر درباره افزونه‌های AutoGPT، این.

این مقاله به شما کمک می کند تا با نحوه ایجاد افزونه های AutoGPT آشنا شوید. ما اطمینان داریم که برای شما مفید بوده است. لطفاً نظرات و انتقادات خود را در بخش نظرات زیر به اشتراک بگذارید.

به این نوشته امتیاز بدهید!

افراد نیوز

افراد نیوز

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

  • ×