Refactor custom_component endpoint and

reload_custom_component endpoint
This commit is contained in:
Gabriel Luiz Freitas Almeida 2023-11-28 23:00:42 -03:00
commit 0d7e5992af

View file

@ -3,22 +3,22 @@ from typing import Annotated, Optional, Union
import sqlalchemy as sa import sqlalchemy as sa
from fastapi import APIRouter, Body, Depends, HTTPException, UploadFile, status from fastapi import APIRouter, Body, Depends, HTTPException, UploadFile, status
from langflow.api.v1.schemas import ( from langflow.api.utils import replace_existing_field_values
CustomComponentCode, from langflow.api.v1.schemas import (CustomComponentCode, ProcessResponse,
ProcessResponse, TaskResponse, TaskStatusResponse,
TaskResponse, UploadFileResponse)
TaskStatusResponse,
UploadFileResponse,
)
from langflow.interface.custom.custom_component import CustomComponent from langflow.interface.custom.custom_component import CustomComponent
from langflow.interface.custom.directory_reader import DirectoryReader from langflow.interface.custom.directory_reader import DirectoryReader
from langflow.interface.types import build_langchain_template_custom_component, create_and_validate_component from langflow.interface.types import (
build_langchain_template_custom_component, create_and_validate_component)
from langflow.processing.process import process_graph_cached, process_tweaks from langflow.processing.process import process_graph_cached, process_tweaks
from langflow.services.auth.utils import api_key_security, get_current_active_user from langflow.services.auth.utils import (api_key_security,
get_current_active_user)
from langflow.services.cache.utils import save_uploaded_file from langflow.services.cache.utils import save_uploaded_file
from langflow.services.database.models.flow import Flow from langflow.services.database.models.flow import Flow
from langflow.services.database.models.user.model import User from langflow.services.database.models.user.model import User
from langflow.services.deps import get_session, get_session_service, get_settings_service, get_task_service from langflow.services.deps import (get_session, get_session_service,
get_settings_service, get_task_service)
from loguru import logger from loguru import logger
try: try:
@ -213,15 +213,18 @@ async def custom_component(
): ):
component = create_and_validate_component(raw_code.code) component = create_and_validate_component(raw_code.code)
extractor = CustomComponent(code=raw_code.code)
extractor.validate()
return build_langchain_template_custom_component(extractor, user_id=user.id)
built_frontend_node = build_langchain_template_custom_component(component, user_id=user.id)
built_frontend_node = replace_existing_field_values(built_frontend_node, raw_code)
return built_frontend_node
@router.post("/custom_component/reload", status_code=HTTPStatus.OK) @router.post("/custom_component/reload", status_code=HTTPStatus.OK)
async def reload_custom_component(path: str, user: User = Depends(get_current_active_user)): async def reload_custom_component(path: str, user: User = Depends(get_current_active_user)):
from langflow.interface.types import build_langchain_template_custom_component from langflow.interface.types import \
build_langchain_template_custom_component
try: try:
reader = DirectoryReader("") reader = DirectoryReader("")