🔧 fix(base.py): remove unused import statement
🔧 fix(constants.py): remove unused import statements 🔧 fix(types.py): refactor add_new_custom_field function to update field_config values The import statement for `get_custom_nodes` in `base.py` is removed as it is not being used in the code. Similarly, the import statements for `requests` and `LLMChain` in `constants.py` are removed as they are not being used either. In `types.py`, the `add_new_custom_field` function is refactored to update the values of `field_config` if any of the keys are present in it. This allows for more flexibility in customizing the field configuration for a custom component.
This commit is contained in:
parent
daad3bb4e7
commit
1f4e947516
3 changed files with 32 additions and 3 deletions
|
|
@ -1,6 +1,6 @@
|
||||||
from typing import Any, Dict, List, Optional, Type
|
from typing import Any, Dict, List, Optional, Type
|
||||||
|
|
||||||
from langflow.custom.customs import get_custom_nodes
|
|
||||||
from langflow.interface.base import LangChainTypeCreator
|
from langflow.interface.base import LangChainTypeCreator
|
||||||
from langflow.interface.custom.custom import CustomComponent
|
from langflow.interface.custom.custom import CustomComponent
|
||||||
from langflow.template.frontend_node.custom_components import (
|
from langflow.template.frontend_node.custom_components import (
|
||||||
|
|
@ -27,6 +27,8 @@ class CustomComponentCreator(LangChainTypeCreator):
|
||||||
return self.type_dict
|
return self.type_dict
|
||||||
|
|
||||||
def get_signature(self, name: str) -> Optional[Dict]:
|
def get_signature(self, name: str) -> Optional[Dict]:
|
||||||
|
from langflow.custom.customs import get_custom_nodes
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if name in get_custom_nodes(self.type_name).keys():
|
if name in get_custom_nodes(self.type_name).keys():
|
||||||
return get_custom_nodes(self.type_name)[name]
|
return get_custom_nodes(self.type_name)[name]
|
||||||
|
|
|
||||||
|
|
@ -21,3 +21,20 @@ LANGCHAIN_BASE_TYPES = {
|
||||||
"Embeddings": Embeddings,
|
"Embeddings": Embeddings,
|
||||||
"BaseRetriever": BaseRetriever,
|
"BaseRetriever": BaseRetriever,
|
||||||
}
|
}
|
||||||
|
DEFAULT_CUSTOM_COMPONENT_CODE = """
|
||||||
|
from langchain.chains import LLMChain
|
||||||
|
from langflow.interface.custom import CustomComponent
|
||||||
|
from langchain.schema import Document
|
||||||
|
import requests
|
||||||
|
|
||||||
|
class YourComponent(CustomComponent):
|
||||||
|
display_name: str = "Your Component"
|
||||||
|
description: str = "Your description"
|
||||||
|
field_config = { "url": { "multiline": True, "required": True } }
|
||||||
|
|
||||||
|
def build(self, url: str, llm: BaseLLM, prompt: prompt) -> Document:
|
||||||
|
response = requests.get(url)
|
||||||
|
chain = LLMChain(llm=llm, prompt=prompt)
|
||||||
|
result = chain.run(response.text)
|
||||||
|
return Document(page_content=str(result))
|
||||||
|
"""
|
||||||
|
|
|
||||||
|
|
@ -76,12 +76,20 @@ def build_langchain_types_dict(): # sourcery skip: dict-assign-update-to-union
|
||||||
def add_new_custom_field(
|
def add_new_custom_field(
|
||||||
template, field_name: str, field_type: str, field_config: dict
|
template, field_name: str, field_type: str, field_config: dict
|
||||||
):
|
):
|
||||||
|
# Check field_config if any of the keys are in it
|
||||||
|
# if it is, update the value
|
||||||
|
name = field_config.pop("name", field_name)
|
||||||
|
field_type = field_config.pop("field_type", field_type)
|
||||||
|
required = field_config.pop("required", True)
|
||||||
|
placeholder = field_config.pop("placeholder", "")
|
||||||
|
|
||||||
new_field = TemplateField(
|
new_field = TemplateField(
|
||||||
name=field_name,
|
name=name,
|
||||||
field_type=field_type,
|
field_type=field_type,
|
||||||
show=True,
|
show=True,
|
||||||
required=True,
|
required=required,
|
||||||
advanced=False,
|
advanced=False,
|
||||||
|
placeholder=placeholder,
|
||||||
**field_config,
|
**field_config,
|
||||||
)
|
)
|
||||||
template.get("template")[field_name] = new_field.to_dict()
|
template.get("template")[field_name] = new_field.to_dict()
|
||||||
|
|
@ -121,6 +129,8 @@ def build_langchain_template_custom_component(extractor: CustomComponent):
|
||||||
|
|
||||||
if "display_name" in template_config and frontend_node is not None:
|
if "display_name" in template_config and frontend_node is not None:
|
||||||
frontend_node["display_name"] = template_config["display_name"]
|
frontend_node["display_name"] = template_config["display_name"]
|
||||||
|
if "description" in template_config and frontend_node is not None:
|
||||||
|
frontend_node["description"] = template_config["description"]
|
||||||
raw_code = extractor.code
|
raw_code = extractor.code
|
||||||
field_config = template_config.get("field_config", {})
|
field_config = template_config.get("field_config", {})
|
||||||
if function_args is not None:
|
if function_args is not None:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue