Spaces:
Running
Running
from typing import cast | |
from langchain_community.tools import WikipediaQueryRun | |
from langchain_community.utilities.wikipedia import WikipediaAPIWrapper | |
from langflow.base.langchain_utilities.model import LCToolComponent | |
from langflow.field_typing import Tool | |
from langflow.inputs import BoolInput, IntInput, MessageTextInput, MultilineInput | |
from langflow.schema import Data | |
class WikipediaAPIComponent(LCToolComponent): | |
display_name = "Wikipedia API" | |
description = "Call Wikipedia API." | |
name = "WikipediaAPI" | |
icon = "Wikipedia" | |
inputs = [ | |
MultilineInput( | |
name="input_value", | |
display_name="Input", | |
), | |
MessageTextInput(name="lang", display_name="Language", value="en"), | |
IntInput(name="k", display_name="Number of results", value=4, required=True), | |
BoolInput(name="load_all_available_meta", display_name="Load all available meta", value=False, advanced=True), | |
IntInput( | |
name="doc_content_chars_max", display_name="Document content characters max", value=4000, advanced=True | |
), | |
] | |
def run_model(self) -> list[Data]: | |
wrapper = self._build_wrapper() | |
docs = wrapper.load(self.input_value) | |
data = [Data.from_document(doc) for doc in docs] | |
self.status = data | |
return data | |
def build_tool(self) -> Tool: | |
wrapper = self._build_wrapper() | |
return cast("Tool", WikipediaQueryRun(api_wrapper=wrapper)) | |
def _build_wrapper(self) -> WikipediaAPIWrapper: | |
return WikipediaAPIWrapper( | |
top_k_results=self.k, | |
lang=self.lang, | |
load_all_available_meta=self.load_all_available_meta, | |
doc_content_chars_max=self.doc_content_chars_max, | |
) | |