From 63ead274c4e7d41a6f7b99fe1da61d4886abd9a5 Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Wed, 26 Jul 2023 10:15:22 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20fix(constants.py):=20add=20suppo?= =?UTF-8?q?rt=20for=20additional=20Python=20base=20types=20in=20CUSTOM=5FC?= =?UTF-8?q?OMPONENT=5FSUPPORTED=5FTYPES=20dictionary=20=F0=9F=94=A7=20fix(?= =?UTF-8?q?custom=5Fcomponent.py):=20update=20return=5Ftype=5Fvalid=5Flist?= =?UTF-8?q?=20to=20use=20CUSTOM=5FCOMPONENT=5FSUPPORTED=5FTYPES=20dictiona?= =?UTF-8?q?ry=20=F0=9F=94=A7=20fix(types.py):=20update=20add=5Fbase=5Fclas?= =?UTF-8?q?ses=20function=20to=20use=20CUSTOM=5FCOMPONENT=5FSUPPORTED=5FTY?= =?UTF-8?q?PES=20dictionary=20instead=20of=20LANGCHAIN=5FBASE=5FTYPES?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/backend/langflow/interface/custom/constants.py | 10 ++++++++++ .../langflow/interface/custom/custom_component.py | 4 ++-- src/backend/langflow/interface/types.py | 8 ++++---- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/backend/langflow/interface/custom/constants.py b/src/backend/langflow/interface/custom/constants.py index 0a5809d5d..00aa5314d 100644 --- a/src/backend/langflow/interface/custom/constants.py +++ b/src/backend/langflow/interface/custom/constants.py @@ -20,7 +20,17 @@ LANGCHAIN_BASE_TYPES = { "VectorStore": VectorStore, "Embeddings": Embeddings, "BaseRetriever": BaseRetriever, +} + +# Langchain base types plus Python base types +CUSTOM_COMPONENT_SUPPORTED_TYPES = { + **LANGCHAIN_BASE_TYPES, "str": str, + "int": int, + "float": float, + "bool": bool, + "list": list, + "dict": dict, } diff --git a/src/backend/langflow/interface/custom/custom_component.py b/src/backend/langflow/interface/custom/custom_component.py index 2f89863ae..f58c9db19 100644 --- a/src/backend/langflow/interface/custom/custom_component.py +++ b/src/backend/langflow/interface/custom/custom_component.py @@ -1,6 +1,6 @@ from typing import Callable, Optional from fastapi import HTTPException -from langflow.interface.custom.constants import LANGCHAIN_BASE_TYPES +from langflow.interface.custom.constants import CUSTOM_COMPONENT_SUPPORTED_TYPES from langflow.interface.custom.component import Component from langflow.utils import validate @@ -16,7 +16,7 @@ class CustomComponent(Component, extra=Extra.allow): code_class_base_inheritance = "CustomComponent" function_entrypoint_name = "build" function: Optional[Callable] = None - return_type_valid_list = list(LANGCHAIN_BASE_TYPES.keys()) + return_type_valid_list = list(CUSTOM_COMPONENT_SUPPORTED_TYPES.keys()) repr_value: Optional[str] = "" def __init__(self, **data): diff --git a/src/backend/langflow/interface/types.py b/src/backend/langflow/interface/types.py index 27cdaaa2f..35ecd558b 100644 --- a/src/backend/langflow/interface/types.py +++ b/src/backend/langflow/interface/types.py @@ -1,6 +1,6 @@ from langflow.interface.agents.base import agent_creator from langflow.interface.chains.base import chain_creator -from langflow.interface.custom.constants import LANGCHAIN_BASE_TYPES +from langflow.interface.custom.constants import CUSTOM_COMPONENT_SUPPORTED_TYPES from langflow.interface.document_loaders.base import documentloader_creator from langflow.interface.embeddings.base import embedding_creator from langflow.interface.importing.utils import get_function_custom @@ -232,19 +232,19 @@ def get_field_properties(extra_field): def add_base_classes(frontend_node, return_type): """Add base classes to the frontend node""" - if return_type not in LANGCHAIN_BASE_TYPES or return_type is None: + if return_type not in CUSTOM_COMPONENT_SUPPORTED_TYPES or return_type is None: raise HTTPException( status_code=400, detail={ "error": ( "Invalid return type should be one of: " - f"{list(LANGCHAIN_BASE_TYPES.keys())}" + f"{list(CUSTOM_COMPONENT_SUPPORTED_TYPES.keys())}" ), "traceback": traceback.format_exc(), }, ) - return_type_instance = LANGCHAIN_BASE_TYPES.get(return_type) + return_type_instance = CUSTOM_COMPONENT_SUPPORTED_TYPES.get(return_type) base_classes = get_base_classes(return_type_instance) for base_class in base_classes: