Add support for input values in build_vertex API

This commit is contained in:
Gabriel Luiz Freitas Almeida 2024-02-28 11:03:55 -03:00
commit f09ebeba34
3 changed files with 21 additions and 6 deletions

View file

@ -1,10 +1,11 @@
import time
import uuid
from typing import TYPE_CHECKING, Optional
from typing import TYPE_CHECKING, Annotated, Optional
from fastapi import (
APIRouter,
BackgroundTasks,
Body,
Depends,
HTTPException,
WebSocket,
@ -21,6 +22,7 @@ from langflow.api.utils import (
format_exception_message,
)
from langflow.api.v1.schemas import (
InputValueRequest,
ResultDataResponse,
StreamData,
VertexBuildResponse,
@ -139,10 +141,12 @@ async def build_vertex(
flow_id: str,
vertex_id: str,
background_tasks: BackgroundTasks,
inputs: Annotated[InputValueRequest, Body(embed=True)] = None,
chat_service: "ChatService" = Depends(get_chat_service),
current_user=Depends(get_current_active_user),
):
"""Build a vertex instead of the entire graph."""
{"inputs": {"input_value": "some value"}}
start_time = time.perf_counter()
try:
start_time = time.perf_counter()
@ -163,7 +167,7 @@ async def build_vertex(
vertex = graph.get_vertex(vertex_id)
try:
if not vertex.pinned or not vertex._built:
await vertex.build(user_id=current_user.id)
await vertex.build(user_id=current_user.id, inputs=inputs.model_dump())
if vertex.result is not None:
params = vertex._built_object_repr()

View file

@ -261,3 +261,7 @@ class VertexBuildResponse(BaseModel):
class VerticesBuiltResponse(BaseModel):
vertices: List[VertexBuildResponse]
class InputValueRequest(BaseModel):
input_value: str

View file

@ -2,13 +2,16 @@ import ast
import inspect
import types
from enum import Enum
from typing import (TYPE_CHECKING, Any, Callable, Coroutine, Dict, List,
Optional)
from typing import TYPE_CHECKING, Any, Callable, Coroutine, Dict, List, Optional
from loguru import logger
from langflow.graph.schema import (INPUT_COMPONENTS, OUTPUT_COMPONENTS,
InterfaceComponentTypes, ResultData)
from langflow.graph.schema import (
INPUT_COMPONENTS,
OUTPUT_COMPONENTS,
InterfaceComponentTypes,
ResultData,
)
from langflow.graph.utils import UnbuiltObject, UnbuiltResult
from langflow.graph.vertex.utils import generate_result
from langflow.interface.initialize import loading
@ -608,6 +611,7 @@ class Vertex:
async def build(
self,
user_id=None,
inputs: Optional[Dict[str, Any]] = None,
requester: Optional["Vertex"] = None,
**kwargs,
) -> Any:
@ -620,6 +624,9 @@ class Vertex:
return self.get_requester_result(requester)
self._reset()
if inputs and self.is_input:
self.update_raw_params(inputs)
# Run steps
for step in self.steps:
if step not in self.steps_ran: