Spaces:
Running
Running
from langchain_community.utilities.google_serper import GoogleSerperAPIWrapper | |
from langflow.base.langchain_utilities.model import LCToolComponent | |
from langflow.field_typing import Tool | |
from langflow.inputs import IntInput, MultilineInput, SecretStrInput | |
from langflow.schema import Data | |
class GoogleSerperAPIComponent(LCToolComponent): | |
display_name = "Google Serper API" | |
description = "Call the Serper.dev Google Search API." | |
name = "GoogleSerperAPI" | |
icon = "Google" | |
inputs = [ | |
SecretStrInput(name="serper_api_key", display_name="Serper API Key", required=True), | |
MultilineInput( | |
name="input_value", | |
display_name="Input", | |
), | |
IntInput(name="k", display_name="Number of results", value=4, required=True), | |
] | |
def run_model(self) -> Data | list[Data]: | |
wrapper = self._build_wrapper() | |
results = wrapper.results(query=self.input_value) | |
list_results = results.get("organic", []) | |
data = [Data(data=result, text=result["snippet"]) for result in list_results] | |
self.status = data | |
return data | |
def build_tool(self) -> Tool: | |
wrapper = self._build_wrapper() | |
return Tool( | |
name="google_search", | |
description="Search Google for recent results.", | |
func=wrapper.run, | |
) | |
def _build_wrapper(self): | |
return GoogleSerperAPIWrapper(serper_api_key=self.serper_api_key, k=self.k) | |