feat: adds Wikipedia Component and deprecates the wikipedia API tool component (#5871)
* update * Update test_wikipedia_api.py * [autofix.ci] apply automated fixes * Update src/backend/base/langflow/components/tools/wikipedia.py Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org> * Update test_wikipedia_api.py * [autofix.ci] apply automated fixes --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
This commit is contained in:
parent
f20d721213
commit
dcd68c5f4e
4 changed files with 141 additions and 75 deletions
|
|
@ -25,6 +25,7 @@ from .serp_api import SerpAPIComponent
|
|||
from .tavily import TavilySearchComponent
|
||||
from .tavily_search import TavilySearchToolComponent
|
||||
from .wikidata_api import WikidataAPIComponent
|
||||
from .wikipedia import WikipediaComponent
|
||||
from .wikipedia_api import WikipediaAPIComponent
|
||||
from .wolfram_alpha_api import WolframAlphaAPIComponent
|
||||
from .yahoo import YfinanceComponent
|
||||
|
|
@ -62,6 +63,7 @@ __all__ = [
|
|||
"TavilySearchToolComponent",
|
||||
"WikidataAPIComponent",
|
||||
"WikipediaAPIComponent",
|
||||
"WikipediaComponent",
|
||||
"WolframAlphaAPIComponent",
|
||||
"YfinanceComponent",
|
||||
"YfinanceToolComponent",
|
||||
|
|
|
|||
55
src/backend/base/langflow/components/tools/wikipedia.py
Normal file
55
src/backend/base/langflow/components/tools/wikipedia.py
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
from langchain_community.utilities.wikipedia import WikipediaAPIWrapper
|
||||
|
||||
from langflow.custom import Component
|
||||
from langflow.inputs import BoolInput, IntInput, MessageTextInput, MultilineInput
|
||||
from langflow.io import Output
|
||||
from langflow.schema import Data
|
||||
from langflow.schema.message import Message
|
||||
|
||||
|
||||
class WikipediaComponent(Component):
|
||||
display_name = "Wikipedia"
|
||||
description = "Call Wikipedia API."
|
||||
icon = "Wikipedia"
|
||||
|
||||
inputs = [
|
||||
MultilineInput(
|
||||
name="input_value",
|
||||
display_name="Input",
|
||||
tool_mode=True,
|
||||
),
|
||||
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
|
||||
),
|
||||
]
|
||||
|
||||
outputs = [
|
||||
Output(display_name="Data", name="data", method="fetch_content"),
|
||||
Output(display_name="Text", name="text", method="fetch_content_text"),
|
||||
]
|
||||
|
||||
def fetch_content(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 fetch_content_text(self) -> Message:
|
||||
data = self.fetch_content()
|
||||
result_string = ""
|
||||
for item in data:
|
||||
result_string += item.text + "\n"
|
||||
self.status = result_string
|
||||
return Message(text=result_string)
|
||||
|
||||
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,
|
||||
)
|
||||
|
|
@ -1,23 +1,25 @@
|
|||
from typing import cast
|
||||
|
||||
from langchain_community.tools import WikipediaQueryRun
|
||||
from langchain_community.utilities.wikipedia import WikipediaAPIWrapper
|
||||
|
||||
from langflow.custom import Component
|
||||
from langflow.base.langchain_utilities.model import LCToolComponent
|
||||
from langflow.field_typing import Tool
|
||||
from langflow.inputs import BoolInput, IntInput, MessageTextInput, MultilineInput
|
||||
from langflow.io import Output
|
||||
from langflow.schema import Data
|
||||
from langflow.schema.message import Message
|
||||
|
||||
|
||||
class WikipediaAPIComponent(Component):
|
||||
display_name = "Wikipedia API"
|
||||
class WikipediaAPIComponent(LCToolComponent):
|
||||
display_name = "Wikipedia API [Deprecated]"
|
||||
description = "Call Wikipedia API."
|
||||
name = "WikipediaAPI"
|
||||
icon = "Wikipedia"
|
||||
legacy = True
|
||||
|
||||
inputs = [
|
||||
MultilineInput(
|
||||
name="input_value",
|
||||
display_name="Input",
|
||||
tool_mode=True,
|
||||
),
|
||||
MessageTextInput(name="lang", display_name="Language", value="en"),
|
||||
IntInput(name="k", display_name="Number of results", value=4, required=True),
|
||||
|
|
@ -27,25 +29,16 @@ class WikipediaAPIComponent(Component):
|
|||
),
|
||||
]
|
||||
|
||||
outputs = [
|
||||
Output(display_name="Data", name="data", method="fetch_content"),
|
||||
Output(display_name="Text", name="text", method="fetch_content_text"),
|
||||
]
|
||||
|
||||
def fetch_content(self) -> list[Data]:
|
||||
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 fetch_content_text(self) -> Message:
|
||||
data = self.fetch_content()
|
||||
result_string = ""
|
||||
for item in data:
|
||||
result_string += item.text + "\n"
|
||||
self.status = result_string
|
||||
return Message(text=result_string)
|
||||
def build_tool(self) -> Tool:
|
||||
wrapper = self._build_wrapper()
|
||||
return cast("Tool", WikipediaQueryRun(api_wrapper=wrapper))
|
||||
|
||||
def _build_wrapper(self) -> WikipediaAPIWrapper:
|
||||
return WikipediaAPIWrapper(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue