From f07fcdf0a77c74adafd13525adcdce07c0432e56 Mon Sep 17 00:00:00 2001 From: k-boikov <64261260+k-boikov@users.noreply.github.com> Date: Fri, 26 May 2023 15:48:36 +0300 Subject: [PATCH] Pull auto-gpt-plugin-template from GitHub instead of PyPI (#4402) * switch from pypi to github for auto-gpt-plugin-template * adapt tests to new plugin interface --- autogpt/models/base_open_ai_plugin.py | 57 ++++++++++++++++++ requirements.txt | 2 +- .../Auto-GPT-Plugin-Test-master.zip | Bin 14927 -> 15385 bytes 3 files changed, 58 insertions(+), 1 deletion(-) diff --git a/autogpt/models/base_open_ai_plugin.py b/autogpt/models/base_open_ai_plugin.py index 046295c0..8f6dd52c 100644 --- a/autogpt/models/base_open_ai_plugin.py +++ b/autogpt/models/base_open_ai_plugin.py @@ -197,3 +197,60 @@ class BaseOpenAIPlugin(AutoGPTPluginTemplate): str: The resulting response. """ pass + + def can_handle_text_embedding(self, text: str) -> bool: + """This method is called to check that the plugin can + handle the text_embedding method. + Args: + text (str): The text to be convert to embedding. + Returns: + bool: True if the plugin can handle the text_embedding method.""" + return False + + def handle_text_embedding(self, text: str) -> list: + """This method is called when the chat completion is done. + Args: + text (str): The text to be convert to embedding. + Returns: + list: The text embedding. + """ + pass + + def can_handle_user_input(self, user_input: str) -> bool: + """This method is called to check that the plugin can + handle the user_input method. + + Args: + user_input (str): The user input. + + Returns: + bool: True if the plugin can handle the user_input method.""" + return False + + def user_input(self, user_input: str) -> str: + """This method is called to request user input to the user. + + Args: + user_input (str): The question or prompt to ask the user. + + Returns: + str: The user input. + """ + + pass + + def can_handle_report(self) -> bool: + """This method is called to check that the plugin can + handle the report method. + + Returns: + bool: True if the plugin can handle the report method.""" + return False + + def report(self, message: str) -> None: + """This method is called to report a message to the user. + + Args: + message (str): The message to report. + """ + pass diff --git a/requirements.txt b/requirements.txt index df45c9ca..53785f9a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -36,7 +36,7 @@ pre-commit black isort gitpython==3.1.31 -auto-gpt-plugin-template +auto-gpt-plugin-template @ git+https://github.com/Significant-Gravitas/Auto-GPT-Plugin-Template@0.1.0 mkdocs pymdown-extensions mypy diff --git a/tests/unit/data/test_plugins/Auto-GPT-Plugin-Test-master.zip b/tests/unit/data/test_plugins/Auto-GPT-Plugin-Test-master.zip index 00bc1f4f58dc1c8e07c7ca3adce6be605fe6a3ce..45b515adc18a6bfb9cb6700668bd3718de3f3cfa 100644 GIT binary patch literal 15385 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 literal 14927 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