Update component descriptions
This commit is contained in:
parent
d77ceaec8e
commit
d7fdd2fe9d
6 changed files with 6 additions and 152 deletions
|
|
@ -10,11 +10,11 @@ from langflow.schema import Record
|
||||||
|
|
||||||
class APIRequest(CustomComponent):
|
class APIRequest(CustomComponent):
|
||||||
display_name: str = "API Request"
|
display_name: str = "API Request"
|
||||||
description: str = "Make an HTTP request to the given URL."
|
description: str = "Make HTTP requests given one or more URLs."
|
||||||
output_types: list[str] = ["Record"]
|
output_types: list[str] = ["Record"]
|
||||||
documentation: str = "https://docs.langflow.org/components/utilities#api-request"
|
documentation: str = "https://docs.langflow.org/components/utilities#api-request"
|
||||||
field_config = {
|
field_config = {
|
||||||
"urls": {"display_name": "URLs", "info": "The URLs to make the request to."},
|
"urls": {"display_name": "URLs", "info": "URLs to make requests to."},
|
||||||
"method": {
|
"method": {
|
||||||
"display_name": "Method",
|
"display_name": "Method",
|
||||||
"info": "The HTTP method to use.",
|
"info": "The HTTP method to use.",
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ from langflow.schema import Record
|
||||||
|
|
||||||
class DirectoryComponent(CustomComponent):
|
class DirectoryComponent(CustomComponent):
|
||||||
display_name = "Directory"
|
display_name = "Directory"
|
||||||
description = "Load Text Files from a Directory and Convert Them to Records."
|
description = "Recursively load files from a directory."
|
||||||
|
|
||||||
def build_config(self) -> Dict[str, Any]:
|
def build_config(self) -> Dict[str, Any]:
|
||||||
return {
|
return {
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ from langflow.schema import Record
|
||||||
|
|
||||||
class FileComponent(CustomComponent):
|
class FileComponent(CustomComponent):
|
||||||
display_name = "Files"
|
display_name = "Files"
|
||||||
description = "Read Text Files"
|
description = "A generic file loader."
|
||||||
|
|
||||||
def build_config(self) -> Dict[str, Any]:
|
def build_config(self) -> Dict[str, Any]:
|
||||||
return {
|
return {
|
||||||
|
|
|
||||||
|
|
@ -1,117 +0,0 @@
|
||||||
from typing import List
|
|
||||||
|
|
||||||
from langflow.interface.custom.custom_component import CustomComponent
|
|
||||||
from langflow.schema import Record
|
|
||||||
from langflow.utils.constants import LOADERS_INFO
|
|
||||||
|
|
||||||
|
|
||||||
class FileLoaderComponent(CustomComponent):
|
|
||||||
display_name: str = "File Loader"
|
|
||||||
description: str = "Generic File Loader"
|
|
||||||
|
|
||||||
def build_config(self):
|
|
||||||
loader_options = ["Automatic"] + [loader_info["name"] for loader_info in LOADERS_INFO]
|
|
||||||
|
|
||||||
file_types = []
|
|
||||||
suffixes = []
|
|
||||||
|
|
||||||
for loader_info in LOADERS_INFO:
|
|
||||||
if "allowedTypes" in loader_info:
|
|
||||||
file_types.extend(loader_info["allowedTypes"])
|
|
||||||
suffixes.extend([f".{ext}" for ext in loader_info["allowedTypes"]])
|
|
||||||
|
|
||||||
return {
|
|
||||||
"file_path": {
|
|
||||||
"display_name": "File Path",
|
|
||||||
"required": True,
|
|
||||||
"field_type": "file",
|
|
||||||
"file_types": [
|
|
||||||
"json",
|
|
||||||
"txt",
|
|
||||||
"csv",
|
|
||||||
"jsonl",
|
|
||||||
"html",
|
|
||||||
"htm",
|
|
||||||
"conllu",
|
|
||||||
"enex",
|
|
||||||
"msg",
|
|
||||||
"pdf",
|
|
||||||
"srt",
|
|
||||||
"eml",
|
|
||||||
"md",
|
|
||||||
"mdx",
|
|
||||||
"pptx",
|
|
||||||
"docx",
|
|
||||||
],
|
|
||||||
"suffixes": [
|
|
||||||
".json",
|
|
||||||
".txt",
|
|
||||||
".csv",
|
|
||||||
".jsonl",
|
|
||||||
".html",
|
|
||||||
".htm",
|
|
||||||
".conllu",
|
|
||||||
".enex",
|
|
||||||
".msg",
|
|
||||||
".pdf",
|
|
||||||
".srt",
|
|
||||||
".eml",
|
|
||||||
".md",
|
|
||||||
".mdx",
|
|
||||||
".pptx",
|
|
||||||
".docx",
|
|
||||||
],
|
|
||||||
# "file_types" : file_types,
|
|
||||||
# "suffixes": suffixes,
|
|
||||||
},
|
|
||||||
"loader": {
|
|
||||||
"display_name": "Loader",
|
|
||||||
"is_list": True,
|
|
||||||
"required": True,
|
|
||||||
"options": loader_options,
|
|
||||||
"value": "Automatic",
|
|
||||||
},
|
|
||||||
"code": {"show": False},
|
|
||||||
}
|
|
||||||
|
|
||||||
def build(self, file_path: str, loader: str) -> List[Record]:
|
|
||||||
file_type = file_path.split(".")[-1]
|
|
||||||
|
|
||||||
# Map the loader to the correct loader class
|
|
||||||
selected_loader_info = None
|
|
||||||
for loader_info in LOADERS_INFO:
|
|
||||||
if loader_info["name"] == loader:
|
|
||||||
selected_loader_info = loader_info
|
|
||||||
break
|
|
||||||
|
|
||||||
if selected_loader_info is None and loader != "Automatic":
|
|
||||||
raise ValueError(f"Loader {loader} not found in the loader info list")
|
|
||||||
|
|
||||||
if loader == "Automatic":
|
|
||||||
# Determine the loader based on the file type
|
|
||||||
default_loader_info = None
|
|
||||||
for info in LOADERS_INFO:
|
|
||||||
if "defaultFor" in info and file_type in info["defaultFor"]:
|
|
||||||
default_loader_info = info
|
|
||||||
break
|
|
||||||
|
|
||||||
if default_loader_info is None:
|
|
||||||
raise ValueError(f"No default loader found for file type: {file_type}")
|
|
||||||
|
|
||||||
selected_loader_info = default_loader_info
|
|
||||||
if isinstance(selected_loader_info, dict):
|
|
||||||
loader_import: str = selected_loader_info["import"]
|
|
||||||
else:
|
|
||||||
raise ValueError(f"Loader info for {loader} is not a dict\nLoader info:\n{selected_loader_info}")
|
|
||||||
module_name, class_name = loader_import.rsplit(".", 1)
|
|
||||||
|
|
||||||
try:
|
|
||||||
# Import the loader class
|
|
||||||
loader_module = __import__(module_name, fromlist=[class_name])
|
|
||||||
loader_instance = getattr(loader_module, class_name)
|
|
||||||
except ImportError as e:
|
|
||||||
raise ValueError(f"Loader {loader} could not be imported\nLoader info:\n{selected_loader_info}") from e
|
|
||||||
|
|
||||||
result = loader_instance(file_path=file_path)
|
|
||||||
docs = result.load()
|
|
||||||
return self.to_records(docs)
|
|
||||||
|
|
@ -8,7 +8,7 @@ from langflow.schema import Record
|
||||||
|
|
||||||
class URLComponent(CustomComponent):
|
class URLComponent(CustomComponent):
|
||||||
display_name = "URL"
|
display_name = "URL"
|
||||||
description = "Load URLs and convert them to records."
|
description = "Fetch text content given one or more URLs."
|
||||||
|
|
||||||
def build_config(self) -> Dict[str, Any]:
|
def build_config(self) -> Dict[str, Any]:
|
||||||
return {
|
return {
|
||||||
|
|
@ -22,4 +22,5 @@ class URLComponent(CustomComponent):
|
||||||
loader = WebBaseLoader(web_paths=urls)
|
loader = WebBaseLoader(web_paths=urls)
|
||||||
docs = loader.load()
|
docs = loader.load()
|
||||||
records = self.to_records(docs)
|
records = self.to_records(docs)
|
||||||
|
self.status = records
|
||||||
return records
|
return records
|
||||||
|
|
|
||||||
|
|
@ -1,30 +0,0 @@
|
||||||
import ast
|
|
||||||
import json
|
|
||||||
|
|
||||||
from langflow.custom import CustomComponent
|
|
||||||
from langflow.schema import Record
|
|
||||||
|
|
||||||
|
|
||||||
class JSONInputComponent(CustomComponent):
|
|
||||||
display_name = "JSON Input"
|
|
||||||
description = "Load a JSON object as input."
|
|
||||||
|
|
||||||
def build_config(self):
|
|
||||||
return {
|
|
||||||
"json_str": {
|
|
||||||
"display_name": "JSON String",
|
|
||||||
"multiline": True,
|
|
||||||
"info": "The JSON string to load.",
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
def build(self, json_str: str) -> Record:
|
|
||||||
try:
|
|
||||||
data = json.loads(json_str)
|
|
||||||
except json.JSONDecodeError:
|
|
||||||
try:
|
|
||||||
data = ast.literal_eval(json_str)
|
|
||||||
except (SyntaxError, ValueError):
|
|
||||||
raise ValueError("Invalid JSON string.")
|
|
||||||
record = Record(data=data)
|
|
||||||
return record
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue