From f672a1163dc6db21e2dab9b3c1fb212b88cab8bb Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Sun, 24 Mar 2024 20:14:33 -0300 Subject: [PATCH] Add SearchApi and SearchApiTool components --- .../{tools => helpers}/SearchApi.py | 0 .../components/tools/SearchAPITool.py | 37 +++++++++++++++++++ 2 files changed, 37 insertions(+) rename src/backend/langflow/components/{tools => helpers}/SearchApi.py (100%) create mode 100644 src/backend/langflow/components/tools/SearchAPITool.py diff --git a/src/backend/langflow/components/tools/SearchApi.py b/src/backend/langflow/components/helpers/SearchApi.py similarity index 100% rename from src/backend/langflow/components/tools/SearchApi.py rename to src/backend/langflow/components/helpers/SearchApi.py diff --git a/src/backend/langflow/components/tools/SearchAPITool.py b/src/backend/langflow/components/tools/SearchAPITool.py new file mode 100644 index 000000000..76c82ad9c --- /dev/null +++ b/src/backend/langflow/components/tools/SearchAPITool.py @@ -0,0 +1,37 @@ +from langchain_community.tools.searchapi import SearchAPIRun +from langchain_community.utilities.searchapi import SearchApiAPIWrapper + +from langflow import CustomComponent +from langflow.field_typing import Tool + + +class SearchApiToolComponent(CustomComponent): + display_name: str = "SearchApi Tool" + description: str = "Real-time search engine results API." + documentation: str = "https://www.searchapi.io/docs/google" + field_config = { + "engine": { + "display_name": "Engine", + "field_type": "str", + "info": "The search engine to use.", + }, + "api_key": { + "display_name": "API Key", + "field_type": "str", + "required": True, + "password": True, + "info": "The API key to use SearchApi.", + }, + } + + def build( + self, + engine: str, + api_key: str, + ) -> Tool: + search_api_wrapper = SearchApiAPIWrapper(engine=engine, searchapi_api_key=api_key) + + tool = SearchAPIRun(api_wrapper=search_api_wrapper) + + self.status = tool + return tool