diff --git a/404.html b/404.html index acb7554ce5..c6f89121c1 100644 --- a/404.html +++ b/404.html @@ -21,7 +21,7 @@ - + diff --git a/agents-overview.html b/agents-overview.html index 8eab597742..ca95761581 100644 --- a/agents-overview.html +++ b/agents-overview.html @@ -21,7 +21,7 @@ - + diff --git a/agents-tool-calling-agent-component.html b/agents-tool-calling-agent-component.html index 012da1d7f1..57bd72b05d 100644 --- a/agents-tool-calling-agent-component.html +++ b/agents-tool-calling-agent-component.html @@ -21,7 +21,7 @@ - + diff --git a/api-reference-api-examples.html b/api-reference-api-examples.html index 9647f3f20f..93896850b2 100644 --- a/api-reference-api-examples.html +++ b/api-reference-api-examples.html @@ -21,7 +21,7 @@ - + diff --git a/api.html b/api.html index 022ba22cf1..e0a7d37098 100644 --- a/api.html +++ b/api.html @@ -21,7 +21,7 @@ - + diff --git a/api/add-user.html b/api/add-user.html index b5bfa73f7e..dcd8366307 100644 --- a/api/add-user.html +++ b/api/add-user.html @@ -21,7 +21,7 @@ - + diff --git a/api/auto-login.html b/api/auto-login.html index b21d9f5381..bc6493b3dc 100644 --- a/api/auto-login.html +++ b/api/auto-login.html @@ -21,7 +21,7 @@ - + diff --git a/api/build-flow.html b/api/build-flow.html index 8fcc180404..c190c4993f 100644 --- a/api/build-flow.html +++ b/api/build-flow.html @@ -21,7 +21,7 @@ - + diff --git a/api/build-public-tmp.html b/api/build-public-tmp.html index 5169d1cd46..53ed13a971 100644 --- a/api/build-public-tmp.html +++ b/api/build-public-tmp.html @@ -21,7 +21,7 @@ - + diff --git a/api/build-vertex-stream.html b/api/build-vertex-stream.html index dd1dcb06c2..b445bce731 100644 --- a/api/build-vertex-stream.html +++ b/api/build-vertex-stream.html @@ -21,7 +21,7 @@ - + diff --git a/api/build-vertex.html b/api/build-vertex.html index dc2865ff07..e7c301e8f7 100644 --- a/api/build-vertex.html +++ b/api/build-vertex.html @@ -21,7 +21,7 @@ - + diff --git a/api/cancel-build.html b/api/cancel-build.html index 2484d2d873..39bd4d2b76 100644 --- a/api/cancel-build.html +++ b/api/cancel-build.html @@ -21,7 +21,7 @@ - + diff --git a/api/check-if-store-has-api-key.html b/api/check-if-store-has-api-key.html index 74ca1ed0c5..7aa6ef07a6 100644 --- a/api/check-if-store-has-api-key.html +++ b/api/check-if-store-has-api-key.html @@ -21,7 +21,7 @@ - + diff --git a/api/check-if-store-is-enabled.html b/api/check-if-store-is-enabled.html index c403c95f45..2a8b4fd28e 100644 --- a/api/check-if-store-is-enabled.html +++ b/api/check-if-store-is-enabled.html @@ -21,7 +21,7 @@ - + diff --git a/api/create-api-key-route.html b/api/create-api-key-route.html index df61d349e8..5133573ef1 100644 --- a/api/create-api-key-route.html +++ b/api/create-api-key-route.html @@ -21,7 +21,7 @@ - + diff --git a/api/create-flow.html b/api/create-flow.html index d059fe4cab..fe8199329d 100644 --- a/api/create-flow.html +++ b/api/create-flow.html @@ -21,7 +21,7 @@ - + diff --git a/api/create-flows.html b/api/create-flows.html index 5b3b9cd893..baaf525ca4 100644 --- a/api/create-flows.html +++ b/api/create-flows.html @@ -21,7 +21,7 @@ - + diff --git a/api/create-folder.html b/api/create-folder.html index 04e2d2687a..faa50ac1cd 100644 --- a/api/create-folder.html +++ b/api/create-folder.html @@ -21,7 +21,7 @@ - + diff --git a/api/create-upload-file.html b/api/create-upload-file.html index daed399054..b986496f0c 100644 --- a/api/create-upload-file.html +++ b/api/create-upload-file.html @@ -21,7 +21,7 @@ - + diff --git a/api/create-variable.html b/api/create-variable.html index 813d0f2a5a..f82f6abd7f 100644 --- a/api/create-variable.html +++ b/api/create-variable.html @@ -21,7 +21,7 @@ - + diff --git a/api/custom-component-update.html b/api/custom-component-update.html index 2175b7959e..f9719b6f83 100644 --- a/api/custom-component-update.html +++ b/api/custom-component-update.html @@ -21,7 +21,7 @@ - + diff --git a/api/custom-component.html b/api/custom-component.html index 1f534893e2..3cfebb68d1 100644 --- a/api/custom-component.html +++ b/api/custom-component.html @@ -21,7 +21,7 @@ - + diff --git a/api/delete-all-files-1.html b/api/delete-all-files-1.html index 65a1543e84..2d1fb9fad8 100644 --- a/api/delete-all-files-1.html +++ b/api/delete-all-files-1.html @@ -21,7 +21,7 @@ - + diff --git a/api/delete-all-files.html b/api/delete-all-files.html index 8416351dde..35a24b056e 100644 --- a/api/delete-all-files.html +++ b/api/delete-all-files.html @@ -21,7 +21,7 @@ - + diff --git a/api/delete-api-key-route.html b/api/delete-api-key-route.html index faa3824018..25a2939788 100644 --- a/api/delete-api-key-route.html +++ b/api/delete-api-key-route.html @@ -21,7 +21,7 @@ - + diff --git a/api/delete-file-1.html b/api/delete-file-1.html index f515e05d85..3b6a295740 100644 --- a/api/delete-file-1.html +++ b/api/delete-file-1.html @@ -21,7 +21,7 @@ - + diff --git a/api/delete-file.html b/api/delete-file.html index cd025ad88b..bad43d3c72 100644 --- a/api/delete-file.html +++ b/api/delete-file.html @@ -21,7 +21,7 @@ - + diff --git a/api/delete-flow.html b/api/delete-flow.html index 92e141175f..8e50189dd6 100644 --- a/api/delete-flow.html +++ b/api/delete-flow.html @@ -21,7 +21,7 @@ - + diff --git a/api/delete-folder.html b/api/delete-folder.html index 76bd5680ae..b7f724bc12 100644 --- a/api/delete-folder.html +++ b/api/delete-folder.html @@ -21,7 +21,7 @@ - + diff --git a/api/delete-messages-session.html b/api/delete-messages-session.html index a978e0d153..11f5396118 100644 --- a/api/delete-messages-session.html +++ b/api/delete-messages-session.html @@ -21,7 +21,7 @@ - + diff --git a/api/delete-messages.html b/api/delete-messages.html index 2e4190eeeb..c1e4733ebd 100644 --- a/api/delete-messages.html +++ b/api/delete-messages.html @@ -21,7 +21,7 @@ - + diff --git a/api/delete-multiple-flows.html b/api/delete-multiple-flows.html index c1162883a5..c12a375d3c 100644 --- a/api/delete-multiple-flows.html +++ b/api/delete-multiple-flows.html @@ -21,7 +21,7 @@ - + diff --git a/api/delete-user.html b/api/delete-user.html index e2f754a736..4ebd53046d 100644 --- a/api/delete-user.html +++ b/api/delete-user.html @@ -21,7 +21,7 @@ - + diff --git a/api/delete-variable.html b/api/delete-variable.html index aef4cf5281..3ff592c023 100644 --- a/api/delete-variable.html +++ b/api/delete-variable.html @@ -21,7 +21,7 @@ - + diff --git a/api/delete-vertex-builds.html b/api/delete-vertex-builds.html index 2cd1baee5b..2b41192948 100644 --- a/api/delete-vertex-builds.html +++ b/api/delete-vertex-builds.html @@ -21,7 +21,7 @@ - + diff --git a/api/download-component.html b/api/download-component.html index 17745f3c4f..9b10f7a4ba 100644 --- a/api/download-component.html +++ b/api/download-component.html @@ -21,7 +21,7 @@ - + diff --git a/api/download-file-1.html b/api/download-file-1.html index 03af3303e3..6bf9da08f0 100644 --- a/api/download-file-1.html +++ b/api/download-file-1.html @@ -21,7 +21,7 @@ - + diff --git a/api/download-file-2.html b/api/download-file-2.html index 5bdc7832ec..db1558aca4 100644 --- a/api/download-file-2.html +++ b/api/download-file-2.html @@ -21,7 +21,7 @@ - + diff --git a/api/download-file.html b/api/download-file.html index 36d9d0f236..a6c652c2ee 100644 --- a/api/download-file.html +++ b/api/download-file.html @@ -21,7 +21,7 @@ - + diff --git a/api/download-image.html b/api/download-image.html index 19fa1be2a0..f1228c62ed 100644 --- a/api/download-image.html +++ b/api/download-image.html @@ -21,7 +21,7 @@ - + diff --git a/api/download-multiple-file.html b/api/download-multiple-file.html index e1810df3d7..2d8099296b 100644 --- a/api/download-multiple-file.html +++ b/api/download-multiple-file.html @@ -21,7 +21,7 @@ - + diff --git a/api/download-profile-picture.html b/api/download-profile-picture.html index f4221cdcbf..dbea2d0b9c 100644 --- a/api/download-profile-picture.html +++ b/api/download-profile-picture.html @@ -21,7 +21,7 @@ - + diff --git a/api/edit-file-name.html b/api/edit-file-name.html index d556c5a4ba..1626bc3213 100644 --- a/api/edit-file-name.html +++ b/api/edit-file-name.html @@ -21,7 +21,7 @@ - + diff --git a/api/experimental-run-flow.html b/api/experimental-run-flow.html index afb263d79e..0b23496718 100644 --- a/api/experimental-run-flow.html +++ b/api/experimental-run-flow.html @@ -21,7 +21,7 @@ - + diff --git a/api/get-all.html b/api/get-all.html index 19f456837a..2b5dd3b3c0 100644 --- a/api/get-all.html +++ b/api/get-all.html @@ -21,7 +21,7 @@ - + diff --git a/api/get-api-keys-route.html b/api/get-api-keys-route.html index 0670c238bc..78ae3c9368 100644 --- a/api/get-api-keys-route.html +++ b/api/get-api-keys-route.html @@ -21,7 +21,7 @@ - + diff --git a/api/get-build-events.html b/api/get-build-events.html index e08b547e67..6020ada830 100644 --- a/api/get-build-events.html +++ b/api/get-build-events.html @@ -21,7 +21,7 @@ - + diff --git a/api/get-components.html b/api/get-components.html index 0cf8a91df0..bad1008e80 100644 --- a/api/get-components.html +++ b/api/get-components.html @@ -21,7 +21,7 @@ - + diff --git a/api/get-config.html b/api/get-config.html index b05662c6d0..ef16e81bff 100644 --- a/api/get-config.html +++ b/api/get-config.html @@ -21,7 +21,7 @@ - + diff --git a/api/get-elevenlabs-voice-ids.html b/api/get-elevenlabs-voice-ids.html index 519812cfb3..31fce1e4fe 100644 --- a/api/get-elevenlabs-voice-ids.html +++ b/api/get-elevenlabs-voice-ids.html @@ -21,7 +21,7 @@ - + diff --git a/api/get-list-of-components-liked-by-user.html b/api/get-list-of-components-liked-by-user.html index ddf084e26f..dd65070e52 100644 --- a/api/get-list-of-components-liked-by-user.html +++ b/api/get-list-of-components-liked-by-user.html @@ -21,7 +21,7 @@ - + diff --git a/api/get-messages.html b/api/get-messages.html index ad2623706a..0dac449f8d 100644 --- a/api/get-messages.html +++ b/api/get-messages.html @@ -21,7 +21,7 @@ - + diff --git a/api/get-starter-projects.html b/api/get-starter-projects.html index a9415d1a37..043bb57d3b 100644 --- a/api/get-starter-projects.html +++ b/api/get-starter-projects.html @@ -21,7 +21,7 @@ - + diff --git a/api/get-tags.html b/api/get-tags.html index 9a304c52f3..3e258ae252 100644 --- a/api/get-tags.html +++ b/api/get-tags.html @@ -21,7 +21,7 @@ - + diff --git a/api/get-task-status.html b/api/get-task-status.html index 7166ce5a82..dcf2ae4f03 100644 --- a/api/get-task-status.html +++ b/api/get-task-status.html @@ -21,7 +21,7 @@ - + diff --git a/api/get-transactions.html b/api/get-transactions.html index 59d01f79e6..39bef880d3 100644 --- a/api/get-transactions.html +++ b/api/get-transactions.html @@ -21,7 +21,7 @@ - + diff --git a/api/get-version.html b/api/get-version.html index 2a104dbbbd..4b9d2e7ff6 100644 --- a/api/get-version.html +++ b/api/get-version.html @@ -21,7 +21,7 @@ - + diff --git a/api/get-vertex-builds.html b/api/get-vertex-builds.html index ac8933cdce..536ca39fc9 100644 --- a/api/get-vertex-builds.html +++ b/api/get-vertex-builds.html @@ -21,7 +21,7 @@ - + diff --git a/api/handle-messages-1.html b/api/handle-messages-1.html index 1160f9d74d..b7de9077a5 100644 --- a/api/handle-messages-1.html +++ b/api/handle-messages-1.html @@ -21,7 +21,7 @@ - + diff --git a/api/handle-messages.html b/api/handle-messages.html index 1dfe8b5e13..7ad3b4d131 100644 --- a/api/handle-messages.html +++ b/api/handle-messages.html @@ -21,7 +21,7 @@ - + diff --git a/api/handle-sse-1.html b/api/handle-sse-1.html index 747217fa9d..15d1cd5c26 100644 --- a/api/handle-sse-1.html +++ b/api/handle-sse-1.html @@ -21,7 +21,7 @@ - + diff --git a/api/handle-sse.html b/api/handle-sse.html index d1b6e1405e..6a92b84cba 100644 --- a/api/handle-sse.html +++ b/api/handle-sse.html @@ -21,7 +21,7 @@ - + diff --git a/api/health-check.html b/api/health-check.html index f2fb6356c1..d6a08a1b0b 100644 --- a/api/health-check.html +++ b/api/health-check.html @@ -21,7 +21,7 @@ - + diff --git a/api/health.html b/api/health.html index 723f874ac4..dac36df9c7 100644 --- a/api/health.html +++ b/api/health.html @@ -21,7 +21,7 @@ - + diff --git a/api/like-component.html b/api/like-component.html index ee981efc65..23c3831199 100644 --- a/api/like-component.html +++ b/api/like-component.html @@ -21,7 +21,7 @@ - + diff --git a/api/list-files-1.html b/api/list-files-1.html index 05294f6a77..5542ca1d2c 100644 --- a/api/list-files-1.html +++ b/api/list-files-1.html @@ -21,7 +21,7 @@ - + diff --git a/api/list-files-2.html b/api/list-files-2.html index daefaba6af..28f78842fa 100644 --- a/api/list-files-2.html +++ b/api/list-files-2.html @@ -21,7 +21,7 @@ - + diff --git a/api/list-files.html b/api/list-files.html index aaf98ae479..1e261ab00c 100644 --- a/api/list-files.html +++ b/api/list-files.html @@ -21,7 +21,7 @@ - + diff --git a/api/list-profile-pictures.html b/api/list-profile-pictures.html index f0d931d8c5..ec91e05538 100644 --- a/api/list-profile-pictures.html +++ b/api/list-profile-pictures.html @@ -21,7 +21,7 @@ - + diff --git a/api/login-to-get-access-token.html b/api/login-to-get-access-token.html index 1f68cd64bf..5fecb743c3 100644 --- a/api/login-to-get-access-token.html +++ b/api/login-to-get-access-token.html @@ -21,7 +21,7 @@ - + diff --git a/api/logout.html b/api/logout.html index 0e4610e1eb..c9aae49645 100644 --- a/api/logout.html +++ b/api/logout.html @@ -21,7 +21,7 @@ - + diff --git a/api/logs.html b/api/logs.html index 483a850c34..e13e1dde8f 100644 --- a/api/logs.html +++ b/api/logs.html @@ -21,7 +21,7 @@ - + diff --git a/api/patch-user.html b/api/patch-user.html index f17fd5b45a..5fab62ed65 100644 --- a/api/patch-user.html +++ b/api/patch-user.html @@ -21,7 +21,7 @@ - + diff --git a/api/post-validate-code.html b/api/post-validate-code.html index 7781670d74..44594c50d5 100644 --- a/api/post-validate-code.html +++ b/api/post-validate-code.html @@ -21,7 +21,7 @@ - + diff --git a/api/post-validate-prompt.html b/api/post-validate-prompt.html index 7f443a4b81..ed46e8520c 100644 --- a/api/post-validate-prompt.html +++ b/api/post-validate-prompt.html @@ -21,7 +21,7 @@ - + diff --git a/api/process-1.html b/api/process-1.html index 9ace5bbaf3..f96a69a465 100644 --- a/api/process-1.html +++ b/api/process-1.html @@ -21,7 +21,7 @@ - + diff --git a/api/process.html b/api/process.html index ec63012133..c8f6ac0af6 100644 --- a/api/process.html +++ b/api/process.html @@ -21,7 +21,7 @@ - + diff --git a/api/read-all-users.html b/api/read-all-users.html index 9f8338e6fb..cde581f28d 100644 --- a/api/read-all-users.html +++ b/api/read-all-users.html @@ -21,7 +21,7 @@ - + diff --git a/api/read-basic-examples.html b/api/read-basic-examples.html index c1c6f0e34e..c043e7da40 100644 --- a/api/read-basic-examples.html +++ b/api/read-basic-examples.html @@ -21,7 +21,7 @@ - + diff --git a/api/read-current-user.html b/api/read-current-user.html index f23e16069e..18c7f098cf 100644 --- a/api/read-current-user.html +++ b/api/read-current-user.html @@ -21,7 +21,7 @@ - + diff --git a/api/read-flow.html b/api/read-flow.html index f74bd23cda..56c884cabc 100644 --- a/api/read-flow.html +++ b/api/read-flow.html @@ -21,7 +21,7 @@ - + diff --git a/api/read-flows.html b/api/read-flows.html index 75db2d66ec..bd83a662ac 100644 --- a/api/read-flows.html +++ b/api/read-flows.html @@ -21,7 +21,7 @@ - + diff --git a/api/read-folder.html b/api/read-folder.html index b0592aa11d..cf4cbd05a8 100644 --- a/api/read-folder.html +++ b/api/read-folder.html @@ -21,7 +21,7 @@ - + diff --git a/api/read-folders.html b/api/read-folders.html index cf6f95b1dc..0938e96cf6 100644 --- a/api/read-folders.html +++ b/api/read-folders.html @@ -21,7 +21,7 @@ - + diff --git a/api/read-public-flow.html b/api/read-public-flow.html index d57491178e..838ac19a43 100644 --- a/api/read-public-flow.html +++ b/api/read-public-flow.html @@ -21,7 +21,7 @@ - + diff --git a/api/read-variables.html b/api/read-variables.html index 6db9ebd78d..b1d6890def 100644 --- a/api/read-variables.html +++ b/api/read-variables.html @@ -21,7 +21,7 @@ - + diff --git a/api/refresh-token.html b/api/refresh-token.html index 695efd025b..3aa0505555 100644 --- a/api/refresh-token.html +++ b/api/refresh-token.html @@ -21,7 +21,7 @@ - + diff --git a/api/reset-password.html b/api/reset-password.html index 454c656cfa..745cb821e4 100644 --- a/api/reset-password.html +++ b/api/reset-password.html @@ -21,7 +21,7 @@ - + diff --git a/api/retrieve-vertices-order.html b/api/retrieve-vertices-order.html index a46afe2796..0568aaf5dd 100644 --- a/api/retrieve-vertices-order.html +++ b/api/retrieve-vertices-order.html @@ -21,7 +21,7 @@ - + diff --git a/api/save-store-api-key.html b/api/save-store-api-key.html index 2d4bec0d3c..05c3af8c58 100644 --- a/api/save-store-api-key.html +++ b/api/save-store-api-key.html @@ -21,7 +21,7 @@ - + diff --git a/api/share-component.html b/api/share-component.html index 998d1aaf87..f97470473b 100644 --- a/api/share-component.html +++ b/api/share-component.html @@ -21,7 +21,7 @@ - + diff --git a/api/simplified-run-flow.html b/api/simplified-run-flow.html index 048da42bc6..07e4935d19 100644 --- a/api/simplified-run-flow.html +++ b/api/simplified-run-flow.html @@ -21,7 +21,7 @@ - + diff --git a/api/stream-logs.html b/api/stream-logs.html index 457b580bee..0c74dbc78f 100644 --- a/api/stream-logs.html +++ b/api/stream-logs.html @@ -21,7 +21,7 @@ - + diff --git a/api/update-flow.html b/api/update-flow.html index 1662176849..148e82288a 100644 --- a/api/update-flow.html +++ b/api/update-flow.html @@ -21,7 +21,7 @@ - + diff --git a/api/update-folder.html b/api/update-folder.html index f4f6586520..b0fae3c96c 100644 --- a/api/update-folder.html +++ b/api/update-folder.html @@ -21,7 +21,7 @@ - + diff --git a/api/update-message.html b/api/update-message.html index 9378085beb..241732f907 100644 --- a/api/update-message.html +++ b/api/update-message.html @@ -21,7 +21,7 @@ - + diff --git a/api/update-session-id.html b/api/update-session-id.html index 9ff6dac3df..9fc5f9418f 100644 --- a/api/update-session-id.html +++ b/api/update-session-id.html @@ -21,7 +21,7 @@ - + diff --git a/api/update-shared-component.html b/api/update-shared-component.html index 2ae71ad9b5..937eaa90c5 100644 --- a/api/update-shared-component.html +++ b/api/update-shared-component.html @@ -21,7 +21,7 @@ - + diff --git a/api/update-variable.html b/api/update-variable.html index 22ef21cfe0..3474da8f87 100644 --- a/api/update-variable.html +++ b/api/update-variable.html @@ -21,7 +21,7 @@ - + diff --git a/api/upload-file-1.html b/api/upload-file-1.html index f643d8cdee..174f90caaf 100644 --- a/api/upload-file-1.html +++ b/api/upload-file-1.html @@ -21,7 +21,7 @@ - + diff --git a/api/upload-file-2.html b/api/upload-file-2.html index c14e76f7d2..1b9de53cda 100644 --- a/api/upload-file-2.html +++ b/api/upload-file-2.html @@ -21,7 +21,7 @@ - + diff --git a/api/upload-file.html b/api/upload-file.html index ef4699114c..baa5a63bca 100644 --- a/api/upload-file.html +++ b/api/upload-file.html @@ -21,7 +21,7 @@ - + diff --git a/api/upload-user-file-1.html b/api/upload-user-file-1.html index 1b2042dfc6..e525ca9e6b 100644 --- a/api/upload-user-file-1.html +++ b/api/upload-user-file-1.html @@ -21,7 +21,7 @@ - + diff --git a/api/upload-user-file.html b/api/upload-user-file.html index 1d6487cbbb..957293b092 100644 --- a/api/upload-user-file.html +++ b/api/upload-user-file.html @@ -21,7 +21,7 @@ - + diff --git a/api/webhook-run-flow.html b/api/webhook-run-flow.html index abcd074012..dc09c34170 100644 --- a/api/webhook-run-flow.html +++ b/api/webhook-run-flow.html @@ -21,7 +21,7 @@ - + diff --git a/assets/images/component-conditional-router-be8cad83b612bf7c86bc861a1842fda3.png b/assets/images/component-conditional-router-be8cad83b612bf7c86bc861a1842fda3.png new file mode 100644 index 0000000000..c61ef07ca9 Binary files /dev/null and b/assets/images/component-conditional-router-be8cad83b612bf7c86bc861a1842fda3.png differ diff --git a/assets/js/2ab0d4f5.d9012454.js b/assets/js/2ab0d4f5.0d71373d.js similarity index 53% rename from assets/js/2ab0d4f5.d9012454.js rename to assets/js/2ab0d4f5.0d71373d.js index f73d1b18c0..28e9ca91c0 100644 --- a/assets/js/2ab0d4f5.d9012454.js +++ b/assets/js/2ab0d4f5.0d71373d.js @@ -1 +1 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[1845],{28453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>o});var i=t(96540);const s={},r=i.createContext(s);function a(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),i.createElement(r.Provider,{value:n},e.children)}},83640:(e,n,t)=>{t.r(n),t.d(n,{contentTitle:()=>o,default:()=>c,frontMatter:()=>a,metadata:()=>i,toc:()=>l});const i=JSON.parse('{"type":"api","id":"simplified-run-flow","title":"Simplified Run Flow","description":"","slug":"/simplified-run-flow","frontMatter":{},"api":{"tags":["Base"],"description":"Executes a specified flow by ID with support for streaming and telemetry.\\n\\nThis endpoint executes a flow identified by ID or name, with options for streaming the response\\nand tracking execution metrics. It handles both streaming and non-streaming execution modes.\\n\\nArgs:\\n background_tasks (BackgroundTasks): FastAPI background task manager\\n flow (FlowRead | None): The flow to execute, loaded via dependency\\n input_request (SimplifiedAPIRequest | None): Input parameters for the flow\\n stream (bool): Whether to stream the response\\n api_key_user (UserRead): Authenticated user from API key\\n request (Request): The incoming HTTP request\\n\\nReturns:\\n Union[StreamingResponse, RunResponse]: Either a streaming response for real-time results\\n or a RunResponse with the complete execution results\\n\\nRaises:\\n HTTPException: For flow not found (404) or invalid input (400)\\n APIException: For internal execution errors (500)\\n\\nNotes:\\n - Supports both streaming and non-streaming execution modes\\n - Tracks execution time and success/failure via telemetry\\n - Handles graceful client disconnection in streaming mode\\n - Provides detailed error handling with appropriate HTTP status codes\\n - In streaming mode, uses EventManager to handle events:\\n - \\"add_message\\": New messages during execution\\n - \\"token\\": Individual tokens during streaming\\n - \\"end\\": Final execution result","operationId":"simplified_run_flow_api_v1_run__flow_id_or_name__post","security":[{"API key query":[]},{"API key header":[]}],"parameters":[{"name":"flow_id_or_name","in":"path","required":true,"schema":{"type":"string","title":"Flow Id Or Name"}},{"name":"stream","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Stream"}},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"string","format":"uuid"},{"type":"null"}],"title":"User Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"properties":{"input_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Input Value","description":"The input value"},"input_type":{"anyOf":[{"type":"string","enum":["chat","text","any"]},{"type":"null"}],"title":"Input Type","description":"The input type","default":"chat"},"output_type":{"anyOf":[{"type":"string","enum":["chat","text","any","debug"]},{"type":"null"}],"title":"Output Type","description":"The output type","default":"chat"},"output_component":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output Component","description":"If there are multiple output components, you can specify the component to get the output from.","default":""},"tweaks":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"object"}]},"type":"object","title":"Tweaks","description":"A dictionary of tweaks to adjust the flow\'s execution. Allows customizing flow behavior dynamically. All tweaks are overridden by the input values.","examples":[{"Component Name":{"parameter_name":"value"},"component_id":{"parameter_name":"value"},"parameter_name":"value"}]},{"type":"null"}],"description":"The tweaks"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id","description":"The session id"}},"type":"object","title":"SimplifiedAPIRequest"},{"type":"null"}],"title":"Input Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}},"method":"post","path":"/api/v1/run/{flow_id_or_name}","securitySchemes":{"OAuth2PasswordBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"api/v1/login"}}},"API key query":{"type":"apiKey","in":"query","name":"x-api-key"},"API key header":{"type":"apiKey","in":"header","name":"x-api-key"}},"info":{"title":"Langflow","version":"1.3.4"},"postman":{"name":"Simplified Run Flow","description":{"content":"Executes a specified flow by ID with support for streaming and telemetry.\\n\\nThis endpoint executes a flow identified by ID or name, with options for streaming the response\\nand tracking execution metrics. It handles both streaming and non-streaming execution modes.\\n\\nArgs:\\n background_tasks (BackgroundTasks): FastAPI background task manager\\n flow (FlowRead | None): The flow to execute, loaded via dependency\\n input_request (SimplifiedAPIRequest | None): Input parameters for the flow\\n stream (bool): Whether to stream the response\\n api_key_user (UserRead): Authenticated user from API key\\n request (Request): The incoming HTTP request\\n\\nReturns:\\n Union[StreamingResponse, RunResponse]: Either a streaming response for real-time results\\n or a RunResponse with the complete execution results\\n\\nRaises:\\n HTTPException: For flow not found (404) or invalid input (400)\\n APIException: For internal execution errors (500)\\n\\nNotes:\\n - Supports both streaming and non-streaming execution modes\\n - Tracks execution time and success/failure via telemetry\\n - Handles graceful client disconnection in streaming mode\\n - Provides detailed error handling with appropriate HTTP status codes\\n - In streaming mode, uses EventManager to handle events:\\n - \\"add_message\\": New messages during execution\\n - \\"token\\": Individual tokens during streaming\\n - \\"end\\": Final execution result","type":"text/plain"},"url":{"path":["api","v1","run",":flow_id_or_name"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"stream","value":"false"},{"disabled":false,"key":"user_id","value":""}],"variable":[{"disabled":false,"description":{"content":"(Required) ","type":"text/plain"},"type":"any","value":"","key":"flow_id_or_name"}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\\n \\"input_value\\": \\"\\",\\n \\"input_type\\": \\"\\",\\n \\"output_type\\": \\"\\",\\n \\"output_component\\": \\"\\",\\n \\"tweaks\\": {\\n \\"mollit7\\": \\"\\"\\n },\\n \\"session_id\\": \\"\\"\\n}","options":{"raw":{"language":"json"}}},"auth":{"type":"apikey","apikey":[{"type":"any","value":"x-api-key","key":"key"},{"type":"any","value":"{{apiKey}}","key":"value"},{"type":"any","value":"query","key":"in"}]}}},"source":"@site/openapi.json","sourceDirName":".","permalink":"/api/simplified-run-flow","previous":{"title":"Get All","permalink":"/api/get-all"},"next":{"title":"Webhook Run Flow","permalink":"/api/webhook-run-flow"}}');var s=t(74848),r=t(28453);const a={},o="Simplified Run Flow",l=[];function d(e){const n={h1:"h1",header:"header",li:"li",p:"p",ul:"ul",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"simplified-run-flow",children:"Simplified Run Flow"})}),"\n",(0,s.jsx)(n.p,{children:"Executes a specified flow by ID with support for streaming and telemetry."}),"\n",(0,s.jsx)(n.p,{children:"This endpoint executes a flow identified by ID or name, with options for streaming the response\nand tracking execution metrics. It handles both streaming and non-streaming execution modes."}),"\n",(0,s.jsx)(n.p,{children:"Args:\nbackground_tasks (BackgroundTasks): FastAPI background task manager\nflow (FlowRead | None): The flow to execute, loaded via dependency\ninput_request (SimplifiedAPIRequest | None): Input parameters for the flow\nstream (bool): Whether to stream the response\napi_key_user (UserRead): Authenticated user from API key\nrequest (Request): The incoming HTTP request"}),"\n",(0,s.jsx)(n.p,{children:"Returns:\nUnion[StreamingResponse, RunResponse]: Either a streaming response for real-time results\nor a RunResponse with the complete execution results"}),"\n",(0,s.jsx)(n.p,{children:"Raises:\nHTTPException: For flow not found (404) or invalid input (400)\nAPIException: For internal execution errors (500)"}),"\n",(0,s.jsx)(n.p,{children:"Notes:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Supports both streaming and non-streaming execution modes"}),"\n",(0,s.jsx)(n.li,{children:"Tracks execution time and success/failure via telemetry"}),"\n",(0,s.jsx)(n.li,{children:"Handles graceful client disconnection in streaming mode"}),"\n",(0,s.jsx)(n.li,{children:"Provides detailed error handling with appropriate HTTP status codes"}),"\n",(0,s.jsxs)(n.li,{children:["In streaming mode, uses EventManager to handle events:","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:'"add_message": New messages during execution'}),"\n",(0,s.jsx)(n.li,{children:'"token": Individual tokens during streaming'}),"\n",(0,s.jsx)(n.li,{children:'"end": Final execution result'}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,s.jsx)("thead",{children:(0,s.jsx)("tr",{children:(0,s.jsx)("th",{style:{textAlign:"left"},children:"Path Parameters"})})}),(0,s.jsx)("tbody",{children:(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"flow_id_or_name"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" Flow Id Or Name"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,s.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-required)"},children:" REQUIRED"})]})})})]}),"\n",(0,s.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,s.jsx)("thead",{children:(0,s.jsx)("tr",{children:(0,s.jsx)("th",{style:{textAlign:"left"},children:"Query Parameters"})})}),(0,s.jsxs)("tbody",{children:[(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"stream"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" Stream"})]})}),(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"user_id"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" User Id"})]})})]})]}),"\n",(0,s.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,s.jsx)("thead",{children:(0,s.jsx)("tr",{children:(0,s.jsxs)("th",{style:{textAlign:"left"},children:[(0,s.jsx)("span",{children:"Request Body "}),(0,s.jsx)("div",{})]})})}),(0,s.jsx)("tbody",{children:(0,s.jsx)("tr",{children:(0,s.jsx)("td",{children:(0,s.jsx)("span",{style:{opacity:"0.6"},children:" undefined"})})})})]}),"\n",(0,s.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,s.jsx)("thead",{children:(0,s.jsx)("tr",{children:(0,s.jsx)("th",{style:{textAlign:"left"},children:"Responses"})})}),(0,s.jsxs)("tbody",{children:[(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsxs)("div",{style:{display:"flex"},children:[(0,s.jsx)("div",{style:{marginRight:"var(--ifm-table-cell-padding)"},children:(0,s.jsx)("code",{children:"200"})}),(0,s.jsx)("div",{children:(0,s.jsx)(n.p,{children:"Successful Response"})})]}),(0,s.jsx)("div",{children:(0,s.jsxs)("table",{style:{display:"table",width:"100%",marginTop:"var(--ifm-table-cell-padding)",marginBottom:"0px"},children:[(0,s.jsx)("thead",{children:(0,s.jsx)("tr",{children:(0,s.jsxs)("th",{style:{textAlign:"left"},children:[(0,s.jsx)("span",{children:"Schema "}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,s.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"}),(0,s.jsx)("div",{})]})})}),(0,s.jsx)("tbody",{children:(0,s.jsx)("tr",{children:(0,s.jsx)("td",{children:(0,s.jsx)("span",{style:{opacity:"0.6"},children:" undefined"})})})})]})})]})}),(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsxs)("div",{style:{display:"flex"},children:[(0,s.jsx)("div",{style:{marginRight:"var(--ifm-table-cell-padding)"},children:(0,s.jsx)("code",{children:"422"})}),(0,s.jsx)("div",{children:(0,s.jsx)(n.p,{children:"Validation Error"})})]}),(0,s.jsx)("div",{children:(0,s.jsxs)("table",{style:{display:"table",width:"100%",marginTop:"var(--ifm-table-cell-padding)",marginBottom:"0px"},children:[(0,s.jsx)("thead",{children:(0,s.jsx)("tr",{children:(0,s.jsxs)("th",{style:{textAlign:"left"},children:[(0,s.jsx)("span",{children:"Schema "}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,s.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"}),(0,s.jsx)("div",{})]})})}),(0,s.jsx)("tbody",{children:(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"detail"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" object[]"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,s.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"}),(0,s.jsx)("table",{style:{display:"table",width:"100%",marginTop:"var(--ifm-table-cell-padding)",marginBottom:"0px"},children:(0,s.jsxs)("tbody",{children:[(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"loc"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" undefined[]"})]})}),(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"msg"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" Message"})]})}),(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"type"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" Error Type"})]})})]})})]})})})]})})]})})]})]})]})}function c(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}}}]); \ No newline at end of file +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[1845],{28453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>o});var i=t(96540);const s={},r=i.createContext(s);function a(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),i.createElement(r.Provider,{value:n},e.children)}},83640:(e,n,t)=>{t.r(n),t.d(n,{contentTitle:()=>o,default:()=>c,frontMatter:()=>a,metadata:()=>i,toc:()=>l});const i=JSON.parse('{"type":"api","id":"simplified-run-flow","title":"Simplified Run Flow","description":"","slug":"/simplified-run-flow","frontMatter":{},"api":{"tags":["Base"],"description":"Executes a specified flow by ID with support for streaming and telemetry.\\n\\nThis endpoint executes a flow identified by ID or name, with options for streaming the response\\nand tracking execution metrics. It handles both streaming and non-streaming execution modes.\\n\\nArgs:\\n background_tasks (BackgroundTasks): FastAPI background task manager\\n flow (FlowRead | None): The flow to execute, loaded via dependency\\n input_request (SimplifiedAPIRequest | None): Input parameters for the flow\\n stream (bool): Whether to stream the response\\n api_key_user (UserRead): Authenticated user from API key\\n request (Request): The incoming HTTP request\\n\\nReturns:\\n Union[StreamingResponse, RunResponse]: Either a streaming response for real-time results\\n or a RunResponse with the complete execution results\\n\\nRaises:\\n HTTPException: For flow not found (404) or invalid input (400)\\n APIException: For internal execution errors (500)\\n\\nNotes:\\n - Supports both streaming and non-streaming execution modes\\n - Tracks execution time and success/failure via telemetry\\n - Handles graceful client disconnection in streaming mode\\n - Provides detailed error handling with appropriate HTTP status codes\\n - In streaming mode, uses EventManager to handle events:\\n - \\"add_message\\": New messages during execution\\n - \\"token\\": Individual tokens during streaming\\n - \\"end\\": Final execution result","operationId":"simplified_run_flow_api_v1_run__flow_id_or_name__post","security":[{"API key query":[]},{"API key header":[]}],"parameters":[{"name":"flow_id_or_name","in":"path","required":true,"schema":{"type":"string","title":"Flow Id Or Name"}},{"name":"stream","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Stream"}},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"string","format":"uuid"},{"type":"null"}],"title":"User Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"properties":{"input_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Input Value","description":"The input value"},"input_type":{"anyOf":[{"type":"string","enum":["chat","text","any"]},{"type":"null"}],"title":"Input Type","description":"The input type","default":"chat"},"output_type":{"anyOf":[{"type":"string","enum":["chat","text","any","debug"]},{"type":"null"}],"title":"Output Type","description":"The output type","default":"chat"},"output_component":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output Component","description":"If there are multiple output components, you can specify the component to get the output from.","default":""},"tweaks":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"object"}]},"type":"object","title":"Tweaks","description":"A dictionary of tweaks to adjust the flow\'s execution. Allows customizing flow behavior dynamically. All tweaks are overridden by the input values.","examples":[{"Component Name":{"parameter_name":"value"},"component_id":{"parameter_name":"value"},"parameter_name":"value"}]},{"type":"null"}],"description":"The tweaks"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id","description":"The session id"}},"type":"object","title":"SimplifiedAPIRequest"},{"type":"null"}],"title":"Input Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}},"method":"post","path":"/api/v1/run/{flow_id_or_name}","securitySchemes":{"OAuth2PasswordBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"api/v1/login"}}},"API key query":{"type":"apiKey","in":"query","name":"x-api-key"},"API key header":{"type":"apiKey","in":"header","name":"x-api-key"}},"info":{"title":"Langflow","version":"1.3.4"},"postman":{"name":"Simplified Run Flow","description":{"content":"Executes a specified flow by ID with support for streaming and telemetry.\\n\\nThis endpoint executes a flow identified by ID or name, with options for streaming the response\\nand tracking execution metrics. It handles both streaming and non-streaming execution modes.\\n\\nArgs:\\n background_tasks (BackgroundTasks): FastAPI background task manager\\n flow (FlowRead | None): The flow to execute, loaded via dependency\\n input_request (SimplifiedAPIRequest | None): Input parameters for the flow\\n stream (bool): Whether to stream the response\\n api_key_user (UserRead): Authenticated user from API key\\n request (Request): The incoming HTTP request\\n\\nReturns:\\n Union[StreamingResponse, RunResponse]: Either a streaming response for real-time results\\n or a RunResponse with the complete execution results\\n\\nRaises:\\n HTTPException: For flow not found (404) or invalid input (400)\\n APIException: For internal execution errors (500)\\n\\nNotes:\\n - Supports both streaming and non-streaming execution modes\\n - Tracks execution time and success/failure via telemetry\\n - Handles graceful client disconnection in streaming mode\\n - Provides detailed error handling with appropriate HTTP status codes\\n - In streaming mode, uses EventManager to handle events:\\n - \\"add_message\\": New messages during execution\\n - \\"token\\": Individual tokens during streaming\\n - \\"end\\": Final execution result","type":"text/plain"},"url":{"path":["api","v1","run",":flow_id_or_name"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"stream","value":"false"},{"disabled":false,"key":"user_id","value":""}],"variable":[{"disabled":false,"description":{"content":"(Required) ","type":"text/plain"},"type":"any","value":"","key":"flow_id_or_name"}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\\n \\"input_value\\": \\"\\",\\n \\"input_type\\": \\"\\",\\n \\"output_type\\": \\"\\",\\n \\"output_component\\": \\"\\",\\n \\"tweaks\\": {\\n \\"qui_0_\\": \\"\\"\\n },\\n \\"session_id\\": \\"\\"\\n}","options":{"raw":{"language":"json"}}},"auth":{"type":"apikey","apikey":[{"type":"any","value":"x-api-key","key":"key"},{"type":"any","value":"{{apiKey}}","key":"value"},{"type":"any","value":"query","key":"in"}]}}},"source":"@site/openapi.json","sourceDirName":".","permalink":"/api/simplified-run-flow","previous":{"title":"Get All","permalink":"/api/get-all"},"next":{"title":"Webhook Run Flow","permalink":"/api/webhook-run-flow"}}');var s=t(74848),r=t(28453);const a={},o="Simplified Run Flow",l=[];function d(e){const n={h1:"h1",header:"header",li:"li",p:"p",ul:"ul",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"simplified-run-flow",children:"Simplified Run Flow"})}),"\n",(0,s.jsx)(n.p,{children:"Executes a specified flow by ID with support for streaming and telemetry."}),"\n",(0,s.jsx)(n.p,{children:"This endpoint executes a flow identified by ID or name, with options for streaming the response\nand tracking execution metrics. It handles both streaming and non-streaming execution modes."}),"\n",(0,s.jsx)(n.p,{children:"Args:\nbackground_tasks (BackgroundTasks): FastAPI background task manager\nflow (FlowRead | None): The flow to execute, loaded via dependency\ninput_request (SimplifiedAPIRequest | None): Input parameters for the flow\nstream (bool): Whether to stream the response\napi_key_user (UserRead): Authenticated user from API key\nrequest (Request): The incoming HTTP request"}),"\n",(0,s.jsx)(n.p,{children:"Returns:\nUnion[StreamingResponse, RunResponse]: Either a streaming response for real-time results\nor a RunResponse with the complete execution results"}),"\n",(0,s.jsx)(n.p,{children:"Raises:\nHTTPException: For flow not found (404) or invalid input (400)\nAPIException: For internal execution errors (500)"}),"\n",(0,s.jsx)(n.p,{children:"Notes:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Supports both streaming and non-streaming execution modes"}),"\n",(0,s.jsx)(n.li,{children:"Tracks execution time and success/failure via telemetry"}),"\n",(0,s.jsx)(n.li,{children:"Handles graceful client disconnection in streaming mode"}),"\n",(0,s.jsx)(n.li,{children:"Provides detailed error handling with appropriate HTTP status codes"}),"\n",(0,s.jsxs)(n.li,{children:["In streaming mode, uses EventManager to handle events:","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:'"add_message": New messages during execution'}),"\n",(0,s.jsx)(n.li,{children:'"token": Individual tokens during streaming'}),"\n",(0,s.jsx)(n.li,{children:'"end": Final execution result'}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,s.jsx)("thead",{children:(0,s.jsx)("tr",{children:(0,s.jsx)("th",{style:{textAlign:"left"},children:"Path Parameters"})})}),(0,s.jsx)("tbody",{children:(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"flow_id_or_name"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" Flow Id Or Name"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,s.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-required)"},children:" REQUIRED"})]})})})]}),"\n",(0,s.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,s.jsx)("thead",{children:(0,s.jsx)("tr",{children:(0,s.jsx)("th",{style:{textAlign:"left"},children:"Query Parameters"})})}),(0,s.jsxs)("tbody",{children:[(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"stream"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" Stream"})]})}),(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"user_id"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" User Id"})]})})]})]}),"\n",(0,s.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,s.jsx)("thead",{children:(0,s.jsx)("tr",{children:(0,s.jsxs)("th",{style:{textAlign:"left"},children:[(0,s.jsx)("span",{children:"Request Body "}),(0,s.jsx)("div",{})]})})}),(0,s.jsx)("tbody",{children:(0,s.jsx)("tr",{children:(0,s.jsx)("td",{children:(0,s.jsx)("span",{style:{opacity:"0.6"},children:" undefined"})})})})]}),"\n",(0,s.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,s.jsx)("thead",{children:(0,s.jsx)("tr",{children:(0,s.jsx)("th",{style:{textAlign:"left"},children:"Responses"})})}),(0,s.jsxs)("tbody",{children:[(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsxs)("div",{style:{display:"flex"},children:[(0,s.jsx)("div",{style:{marginRight:"var(--ifm-table-cell-padding)"},children:(0,s.jsx)("code",{children:"200"})}),(0,s.jsx)("div",{children:(0,s.jsx)(n.p,{children:"Successful Response"})})]}),(0,s.jsx)("div",{children:(0,s.jsxs)("table",{style:{display:"table",width:"100%",marginTop:"var(--ifm-table-cell-padding)",marginBottom:"0px"},children:[(0,s.jsx)("thead",{children:(0,s.jsx)("tr",{children:(0,s.jsxs)("th",{style:{textAlign:"left"},children:[(0,s.jsx)("span",{children:"Schema "}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,s.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"}),(0,s.jsx)("div",{})]})})}),(0,s.jsx)("tbody",{children:(0,s.jsx)("tr",{children:(0,s.jsx)("td",{children:(0,s.jsx)("span",{style:{opacity:"0.6"},children:" undefined"})})})})]})})]})}),(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsxs)("div",{style:{display:"flex"},children:[(0,s.jsx)("div",{style:{marginRight:"var(--ifm-table-cell-padding)"},children:(0,s.jsx)("code",{children:"422"})}),(0,s.jsx)("div",{children:(0,s.jsx)(n.p,{children:"Validation Error"})})]}),(0,s.jsx)("div",{children:(0,s.jsxs)("table",{style:{display:"table",width:"100%",marginTop:"var(--ifm-table-cell-padding)",marginBottom:"0px"},children:[(0,s.jsx)("thead",{children:(0,s.jsx)("tr",{children:(0,s.jsxs)("th",{style:{textAlign:"left"},children:[(0,s.jsx)("span",{children:"Schema "}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,s.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"}),(0,s.jsx)("div",{})]})})}),(0,s.jsx)("tbody",{children:(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"detail"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" object[]"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,s.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"}),(0,s.jsx)("table",{style:{display:"table",width:"100%",marginTop:"var(--ifm-table-cell-padding)",marginBottom:"0px"},children:(0,s.jsxs)("tbody",{children:[(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"loc"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" undefined[]"})]})}),(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"msg"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" Message"})]})}),(0,s.jsx)("tr",{children:(0,s.jsxs)("td",{children:[(0,s.jsx)("code",{children:"type"}),(0,s.jsx)("span",{style:{opacity:"0.6"},children:" Error Type"})]})})]})})]})})})]})})]})})]})]})]})}function c(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}}}]); \ No newline at end of file diff --git a/assets/js/6aa941bb.afdd620f.js b/assets/js/6aa941bb.afdd620f.js deleted file mode 100644 index 24774832b1..0000000000 --- a/assets/js/6aa941bb.afdd620f.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[3327],{18111:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/component-run-flow-78e94e2ede1b4b853f0e4de6b9561f6f.png"},19054:(e,t,n)=>{n.r(t),n.d(t,{CH:()=>h,assets:()=>c,chCodeConfig:()=>a,contentTitle:()=>l,default:()=>u,frontMatter:()=>d,metadata:()=>s,toc:()=>x});const s=JSON.parse('{"id":"Components/components-logic","title":"Logic","description":"Logic components provide functionalities for routing, conditional processing, and flow management.","source":"@site/docs/Components/components-logic.md","sourceDirName":"Components","slug":"/components-logic","permalink":"/components-logic","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Logic","slug":"/components-logic"},"sidebar":"docs","previous":{"title":"Loaders","permalink":"/components-loaders"},"next":{"title":"Memories","permalink":"/components-memories"}}');var i=n(74848),o=n(28453),r=n(24754);const d={title:"Logic",slug:"/components-logic"},l="Logic components in Langflow",c={},h={annotations:r.hk,Code:r.Cy},a={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},x=[{value:"Use a logic component in a flow",id:"use-a-logic-component-in-a-flow",level:2},{value:"Conditional router (If-Else component)",id:"conditional-router-if-else-component",level:2},{value:"Inputs",id:"inputs",level:3},{value:"Outputs",id:"outputs",level:3},{value:"Operator Behavior",id:"operator-behavior",level:3},{value:"Data Conditional Router",id:"data-conditional-router",level:2},{value:"Inputs",id:"inputs-1",level:3},{value:"Outputs",id:"outputs-1",level:3},{value:"Operator Behavior",id:"operator-behavior-1",level:3},{value:"List Processing",id:"list-processing",level:3},{value:"Flow as tool",id:"flow-as-tool",level:2},{value:"Inputs",id:"inputs-2",level:3},{value:"Outputs",id:"outputs-2",level:3},{value:"Listen",id:"listen",level:2},{value:"Inputs",id:"inputs-3",level:3},{value:"Outputs",id:"outputs-3",level:3},{value:"Loop",id:"loop",level:2},{value:"Inputs",id:"inputs-4",level:3},{value:"Outputs",id:"outputs-4",level:3},{value:"Notify",id:"notify",level:2},{value:"Inputs",id:"inputs-5",level:3},{value:"Outputs",id:"outputs-5",level:3},{value:"Pass message",id:"pass-message",level:2},{value:"Inputs",id:"inputs-6",level:3},{value:"Outputs",id:"outputs-6",level:3},{value:"Run flow",id:"run-flow",level:2},{value:"Inputs",id:"inputs-7",level:3},{value:"Outputs",id:"outputs-7",level:3},{value:"Sub flow",id:"sub-flow",level:2},{value:"Inputs",id:"inputs-8",level:3},{value:"Outputs",id:"outputs-8",level:3}];function j(e){const t={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,o.R)(),...e.components};return h||p("CH",!1),h.Code||p("CH.Code",!0),(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("style",{dangerouslySetInnerHTML:{__html:'[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }'}}),"\n",(0,i.jsx)(t.header,{children:(0,i.jsx)(t.h1,{id:"logic-components-in-langflow",children:"Logic components in Langflow"})}),"\n",(0,i.jsx)(t.p,{children:"Logic components provide functionalities for routing, conditional processing, and flow management."}),"\n",(0,i.jsx)(t.h2,{id:"use-a-logic-component-in-a-flow",children:"Use a logic component in a flow"}),"\n",(0,i.jsxs)(t.p,{children:['This flow creates a summarizing "for each" loop with the ',(0,i.jsx)(t.a,{href:"/components-logic#loop",children:"Loop"})," component."]}),"\n",(0,i.jsxs)(t.p,{children:["The component iterates over a list of ",(0,i.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," objects until it's completed, and then the ",(0,i.jsx)(t.strong,{children:"Done"})," loop aggregates the results."]}),"\n",(0,i.jsxs)(t.p,{children:["The ",(0,i.jsx)(t.strong,{children:"File"})," component loads text files from your local machine, and then the ",(0,i.jsx)(t.strong,{children:"Parse Data"})," component parses them into a list of structured ",(0,i.jsx)(t.code,{children:"Data"})," objects.\nThe ",(0,i.jsx)(t.strong,{children:"Loop"})," component passes each ",(0,i.jsx)(t.code,{children:"Data"})," object to a ",(0,i.jsx)(t.strong,{children:"Prompt"})," to be summarized."]}),"\n",(0,i.jsxs)(t.p,{children:["When the ",(0,i.jsx)(t.strong,{children:"Loop"})," component runs out of ",(0,i.jsx)(t.code,{children:"Data"}),", the ",(0,i.jsx)(t.strong,{children:"Done"})," loop activates, which counts the number of pages and summarizes their tone with another ",(0,i.jsx)(t.strong,{children:"Prompt"}),".\nThis is represented in Langflow by connecting the Parse Data component's ",(0,i.jsx)(t.strong,{children:"Data List"})," output to the Loop component's ",(0,i.jsx)(t.code,{children:"Data"})," loop input."]}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"Sample Flow looping summarizer",src:n(19709).A+"",width:"2676",height:"1512"})}),"\n",(0,i.jsx)(t.p,{children:"The output will look similar to this:"}),"\n",(0,i.jsx)(h.Code,{codeConfig:a,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"Document Summary",props:{}}]},{tokens:[{content:"Total Pages Processed",props:{}}]},{tokens:[{content:"Total Pages: 2",props:{}}]},{tokens:[{content:"Overall Tone of Document",props:{}}]},{tokens:[{content:"Tone: Informative and Instructional",props:{}}]},{tokens:[{content:"The documentation outlines microservices architecture patterns and best practices.",props:{}}]},{tokens:[{content:"It emphasizes service isolation and inter-service communication protocols.",props:{}}]},{tokens:[{content:"The use of asynchronous messaging patterns is recommended for system scalability.",props:{}}]},{tokens:[{content:"It includes code examples of REST and gRPC implementations to demonstrate integration approaches.",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,i.jsx)(t.h2,{id:"conditional-router-if-else-component",children:"Conditional router (If-Else component)"}),"\n",(0,i.jsxs)(t.p,{children:["This component routes messages by comparing two strings. It evaluates a condition by comparing two text inputs using the specified operator and routes the message to ",(0,i.jsx)(t.code,{children:"true_result"})," or ",(0,i.jsx)(t.code,{children:"false_result"}),"."]}),"\n",(0,i.jsx)(t.h3,{id:"inputs",children:"Inputs"}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Name"}),(0,i.jsx)(t.th,{children:"Type"}),(0,i.jsx)(t.th,{children:"Description"})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"input_text"}),(0,i.jsx)(t.td,{children:"String"}),(0,i.jsx)(t.td,{children:"The primary text input for the operation."})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"match_text"}),(0,i.jsx)(t.td,{children:"String"}),(0,i.jsx)(t.td,{children:"The text input to compare against."})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"operator"}),(0,i.jsx)(t.td,{children:"Dropdown"}),(0,i.jsx)(t.td,{children:'The operator to compare texts. Options: "equals", "not equals", "contains", "starts with", "ends with", "regex". Default: "equals".'})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"case_sensitive"}),(0,i.jsx)(t.td,{children:"Boolean"}),(0,i.jsx)(t.td,{children:"If true, the comparison is case sensitive. This setting is ignored for regex comparison. Default: false."})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"message"}),(0,i.jsx)(t.td,{children:"Message"}),(0,i.jsx)(t.td,{children:"The message to pass through either route."})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"max_iterations"}),(0,i.jsx)(t.td,{children:"Integer"}),(0,i.jsx)(t.td,{children:"(Advanced) The maximum number of iterations for the conditional router. Default: 10."})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"default_route"}),(0,i.jsx)(t.td,{children:"Dropdown"}),(0,i.jsx)(t.td,{children:'(Advanced) The default route to take when max iterations are reached. Options: "true_result" or "false_result". Default: "false_result".'})]})]})]}),"\n",(0,i.jsx)(t.h3,{id:"outputs",children:"Outputs"}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Name"}),(0,i.jsx)(t.th,{children:"Type"}),(0,i.jsx)(t.th,{children:"Description"})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"true_result"}),(0,i.jsx)(t.td,{children:"Message"}),(0,i.jsx)(t.td,{children:"The output when the condition is true."})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"false_result"}),(0,i.jsx)(t.td,{children:"Message"}),(0,i.jsx)(t.td,{children:"The output when the condition is false."})]})]})]}),"\n",(0,i.jsx)(t.h3,{id:"operator-behavior",children:"Operator Behavior"}),"\n",(0,i.jsxs)(t.p,{children:["The ",(0,i.jsx)(t.strong,{children:"If-else"})," component includes a comparison operator to compare the values in ",(0,i.jsx)(t.code,{children:"input_text"})," and ",(0,i.jsx)(t.code,{children:"match_text"}),"."]}),"\n",(0,i.jsxs)(t.p,{children:["All options respect the ",(0,i.jsx)(t.code,{children:"case_sensitive"})," setting except ",(0,i.jsx)(t.strong,{children:"regex"}),"."]}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"equals"}),": Exact match comparison"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"not equals"}),": Inverse of exact match"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"contains"}),": Checks if match_text is found within input_text"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"starts with"}),": Checks if input_text begins with match_text"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"ends with"}),": Checks if input_text ends with match_text"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"regex"}),": Performs regular expression matching. It is always case sensitive and ignores the case_sensitive setting."]}),"\n"]}),"\n",(0,i.jsx)(t.h2,{id:"data-conditional-router",children:"Data Conditional Router"}),"\n",(0,i.jsx)(t.admonition,{type:"important",children:(0,i.jsxs)(t.p,{children:["This component is in ",(0,i.jsx)(t.strong,{children:"Legacy"}),", which means it is no longer in active development as of Langflow version 1.3."]})}),"\n",(0,i.jsxs)(t.p,{children:["This component routes ",(0,i.jsx)(t.code,{children:"Data"})," objects based on a condition applied to a specified key, including boolean validation. It can process either a single Data object or a list of Data objects."]}),"\n",(0,i.jsx)(t.p,{children:"This component is particularly useful in workflows that require conditional routing of complex data structures, enabling dynamic decision-making based on data content."}),"\n",(0,i.jsx)(t.h3,{id:"inputs-1",children:"Inputs"}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Name"}),(0,i.jsx)(t.th,{children:"Type"}),(0,i.jsx)(t.th,{children:"Description"})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"data_input"}),(0,i.jsx)(t.td,{children:"Data"}),(0,i.jsx)(t.td,{children:"The Data object or list of Data objects to process. Can handle both single items and lists."})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"key_name"}),(0,i.jsx)(t.td,{children:"String"}),(0,i.jsx)(t.td,{children:"The name of the key in the Data object to check."})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"operator"}),(0,i.jsx)(t.td,{children:"Dropdown"}),(0,i.jsx)(t.td,{children:'The operator to apply. Options: "equals", "not equals", "contains", "starts with", "ends with", "boolean validator". Default: "equals".'})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"compare_value"}),(0,i.jsx)(t.td,{children:"String"}),(0,i.jsx)(t.td,{children:'The value to compare against. Not shown/used when operator is "boolean validator".'})]})]})]}),"\n",(0,i.jsx)(t.h3,{id:"outputs-1",children:"Outputs"}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Name"}),(0,i.jsx)(t.th,{children:"Type"}),(0,i.jsx)(t.th,{children:"Description"})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"true_output"}),(0,i.jsx)(t.td,{children:"Data/List"}),(0,i.jsx)(t.td,{children:"Output when the condition is met."})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"false_output"}),(0,i.jsx)(t.td,{children:"Data/List"}),(0,i.jsx)(t.td,{children:"Output when the condition is not met."})]})]})]}),"\n",(0,i.jsx)(t.h3,{id:"operator-behavior-1",children:"Operator Behavior"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"equals"}),": Exact match comparison between the key's value and compare_value"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"not equals"}),": Inverse of exact match"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"contains"}),": Checks if compare_value is found within the key's value"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"starts with"}),": Checks if the key's value begins with compare_value"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"ends with"}),": Checks if the key's value ends with compare_value"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"boolean validator"}),": Treats the key's value as a boolean. The following values are considered true:","\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:["Boolean ",(0,i.jsx)(t.code,{children:"true"})]}),"\n",(0,i.jsx)(t.li,{children:'Strings: "true", "1", "yes", "y", "on" (case-insensitive)'}),"\n",(0,i.jsxs)(t.li,{children:["Any other value is converted using Python's ",(0,i.jsx)(t.code,{children:"bool()"})," function"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(t.h3,{id:"list-processing",children:"List Processing"}),"\n",(0,i.jsx)(t.p,{children:"The following actions occur when processing a list of Data objects:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"Each object in the list is evaluated individually"}),"\n",(0,i.jsx)(t.li,{children:"Objects meeting the condition go to true_output"}),"\n",(0,i.jsx)(t.li,{children:"Objects not meeting the condition go to false_output"}),"\n",(0,i.jsx)(t.li,{children:"If all objects go to one output, the other output is empty"}),"\n"]}),"\n",(0,i.jsx)(t.h2,{id:"flow-as-tool",children:"Flow as tool"}),"\n",(0,i.jsx)(t.admonition,{type:"important",children:(0,i.jsxs)(t.p,{children:["This component is deprecated as of Langflow version 1.1.2.\nInstead, use the ",(0,i.jsx)(t.a,{href:"/components-logic#run-flow",children:"Run flow component"})]})}),"\n",(0,i.jsx)(t.p,{children:"This component constructs a tool from a function that runs a loaded flow."}),"\n",(0,i.jsx)(t.h3,{id:"inputs-2",children:"Inputs"}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Name"}),(0,i.jsx)(t.th,{children:"Type"}),(0,i.jsx)(t.th,{children:"Description"})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"flow_name"}),(0,i.jsx)(t.td,{children:"Dropdown"}),(0,i.jsx)(t.td,{children:"The name of the flow to run."})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"tool_name"}),(0,i.jsx)(t.td,{children:"String"}),(0,i.jsx)(t.td,{children:"The name of the tool."})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"tool_description"}),(0,i.jsx)(t.td,{children:"String"}),(0,i.jsx)(t.td,{children:"The description of the tool."})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"return_direct"}),(0,i.jsx)(t.td,{children:"Boolean"}),(0,i.jsx)(t.td,{children:"If true, returns the result directly from the tool."})]})]})]}),"\n",(0,i.jsx)(t.h3,{id:"outputs-2",children:"Outputs"}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Name"}),(0,i.jsx)(t.th,{children:"Type"}),(0,i.jsx)(t.th,{children:"Description"})]})}),(0,i.jsx)(t.tbody,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"api_build_tool"}),(0,i.jsx)(t.td,{children:"Tool"}),(0,i.jsx)(t.td,{children:"The constructed tool from the flow."})]})})]}),"\n",(0,i.jsx)(t.h2,{id:"listen",children:"Listen"}),"\n",(0,i.jsx)(t.p,{children:"This component listens for a notification and retrieves its associated state."}),"\n",(0,i.jsx)(t.h3,{id:"inputs-3",children:"Inputs"}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Name"}),(0,i.jsx)(t.th,{children:"Type"}),(0,i.jsx)(t.th,{children:"Description"})]})}),(0,i.jsx)(t.tbody,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"name"}),(0,i.jsx)(t.td,{children:"String"}),(0,i.jsx)(t.td,{children:"The name of the notification to listen for."})]})})]}),"\n",(0,i.jsx)(t.h3,{id:"outputs-3",children:"Outputs"}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Name"}),(0,i.jsx)(t.th,{children:"Type"}),(0,i.jsx)(t.th,{children:"Description"})]})}),(0,i.jsx)(t.tbody,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"output"}),(0,i.jsx)(t.td,{children:"Data"}),(0,i.jsx)(t.td,{children:"The state associated with the notification."})]})})]}),"\n",(0,i.jsx)(t.h2,{id:"loop",children:"Loop"}),"\n",(0,i.jsxs)(t.p,{children:["This component iterates over a list of ",(0,i.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," objects, outputting one item at a time and aggregating results from loop inputs."]}),"\n",(0,i.jsxs)(t.p,{children:["In this example, the ",(0,i.jsx)(t.strong,{children:"Loop"})," component iterates over a CSV file through the ",(0,i.jsx)(t.strong,{children:"Item"})," port until there are no rows left to process. Then, the ",(0,i.jsx)(t.strong,{children:"Loop"})," component performs the actions connected to the ",(0,i.jsx)(t.strong,{children:"Done"})," port, which in this case is loading the structured data into ",(0,i.jsx)(t.strong,{children:"Chroma DB"}),"."]}),"\n",(0,i.jsxs)(t.p,{children:["Think of it this way: the ",(0,i.jsx)(t.strong,{children:"Item"}),' port forms the "main" loop that repeats until a "complete" condition is reached.']}),"\n",(0,i.jsxs)(t.ol,{children:["\n",(0,i.jsxs)(t.li,{children:["The ",(0,i.jsx)(t.strong,{children:"Loop"})," component accepts ",(0,i.jsx)(t.strong,{children:"Data"})," from the ",(0,i.jsx)(t.strong,{children:"Load CSV"})," component, and outputs the data from the ",(0,i.jsx)(t.strong,{children:"Item"})," port."]}),"\n",(0,i.jsxs)(t.li,{children:["Each CSV row is converted to a ",(0,i.jsx)(t.strong,{children:"Message"})," and processed into structured data with the ",(0,i.jsx)(t.strong,{children:"Structured Output"})," component.\nThe dotted line connected from the ",(0,i.jsx)(t.strong,{children:"Structured Output"})," component's ",(0,i.jsx)(t.strong,{children:"Looping"})," port tells you where the loop begins again."]}),"\n",(0,i.jsxs)(t.li,{children:["The ",(0,i.jsx)(t.strong,{children:"Loop"})," component repeatedly extracts rows by ",(0,i.jsx)(t.strong,{children:"Text Key"})," until there are no more rows to extract."]}),"\n"]}),"\n",(0,i.jsxs)(t.p,{children:["Once all items are processed, the action connected to the ",(0,i.jsx)(t.strong,{children:"Done"})," port is performed.\nIn this example, the data is loaded into ",(0,i.jsx)(t.strong,{children:"Chroma DB"}),"."]}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"Loop CSV parser",src:n(91110).A+"",width:"3008",height:"3172"})}),"\n",(0,i.jsxs)(t.p,{children:["Follow along with this step-by-step video guide for creating this flow and adding agentic RAG: ",(0,i.jsx)(t.a,{href:"https://www.youtube.com/watch?v=9Wx7WODSKTo",children:"Mastering the Loop Component & Agentic RAG in Langflow"}),"."]}),"\n",(0,i.jsx)(t.h3,{id:"inputs-4",children:"Inputs"}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Name"}),(0,i.jsx)(t.th,{children:"Type"}),(0,i.jsx)(t.th,{children:"Description"})]})}),(0,i.jsx)(t.tbody,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"data"}),(0,i.jsx)(t.td,{children:"Data/List"}),(0,i.jsx)(t.td,{children:"The initial list of Data objects to iterate over."})]})})]}),"\n",(0,i.jsx)(t.h3,{id:"outputs-4",children:"Outputs"}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Name"}),(0,i.jsx)(t.th,{children:"Type"}),(0,i.jsx)(t.th,{children:"Description"})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"item"}),(0,i.jsx)(t.td,{children:"Data"}),(0,i.jsx)(t.td,{children:"Outputs one item at a time from the data list."})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"done"}),(0,i.jsx)(t.td,{children:"Data"}),(0,i.jsx)(t.td,{children:"Triggered when iteration complete, returns aggregated results."})]})]})]}),"\n",(0,i.jsx)(t.h2,{id:"notify",children:"Notify"}),"\n",(0,i.jsx)(t.p,{children:"This component generates a notification for the Listen component to use."}),"\n",(0,i.jsx)(t.h3,{id:"inputs-5",children:"Inputs"}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Name"}),(0,i.jsx)(t.th,{children:"Type"}),(0,i.jsx)(t.th,{children:"Description"})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"name"}),(0,i.jsx)(t.td,{children:"String"}),(0,i.jsx)(t.td,{children:"The name of the notification."})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"data"}),(0,i.jsx)(t.td,{children:"Data"}),(0,i.jsx)(t.td,{children:"The data to store in the notification."})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"append"}),(0,i.jsx)(t.td,{children:"Boolean"}),(0,i.jsx)(t.td,{children:"If true, the record will be appended to the existing notification."})]})]})]}),"\n",(0,i.jsx)(t.h3,{id:"outputs-5",children:"Outputs"}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Name"}),(0,i.jsx)(t.th,{children:"Type"}),(0,i.jsx)(t.th,{children:"Description"})]})}),(0,i.jsx)(t.tbody,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"output"}),(0,i.jsx)(t.td,{children:"Data"}),(0,i.jsx)(t.td,{children:"The data stored in the notification."})]})})]}),"\n",(0,i.jsx)(t.h2,{id:"pass-message",children:"Pass message"}),"\n",(0,i.jsx)(t.p,{children:"This component forwards the input message, unchanged."}),"\n",(0,i.jsx)(t.h3,{id:"inputs-6",children:"Inputs"}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Name"}),(0,i.jsx)(t.th,{children:"Display Name"}),(0,i.jsx)(t.th,{children:"Info"})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"input_message"}),(0,i.jsx)(t.td,{children:"Input Message"}),(0,i.jsx)(t.td,{children:"The message to be passed forward."})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"ignored_message"}),(0,i.jsx)(t.td,{children:"Ignored Message"}),(0,i.jsx)(t.td,{children:"A second message to be ignored. Used as a workaround for continuity."})]})]})]}),"\n",(0,i.jsx)(t.h3,{id:"outputs-6",children:"Outputs"}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Name"}),(0,i.jsx)(t.th,{children:"Display Name"}),(0,i.jsx)(t.th,{children:"Info"})]})}),(0,i.jsx)(t.tbody,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"output_message"}),(0,i.jsx)(t.td,{children:"Output Message"}),(0,i.jsx)(t.td,{children:"The forwarded input message."})]})})]}),"\n",(0,i.jsx)(t.h2,{id:"run-flow",children:"Run flow"}),"\n",(0,i.jsx)(t.p,{children:"This component allows you to run any flow stored in your Langflow database without opening the flow editor."}),"\n",(0,i.jsxs)(t.p,{children:["The Run Flow component can also be used as a tool when connected to an ",(0,i.jsx)(t.a,{href:"/components-agents",children:"Agent"}),". The ",(0,i.jsx)(t.code,{children:"name"})," and ",(0,i.jsx)(t.code,{children:"description"})," metadata that the Agent uses to register the tool are created automatically."]}),"\n",(0,i.jsx)(t.p,{children:"When you select a flow, the component fetches the flow's graph structure and uses it to generate the inputs and outputs for the Run Flow component."}),"\n",(0,i.jsx)(t.p,{children:"To use the Run Flow component as a tool, do the following:"}),"\n",(0,i.jsxs)(t.ol,{children:["\n",(0,i.jsxs)(t.li,{children:["Add the ",(0,i.jsx)(t.strong,{children:"Run Flow"})," component to the ",(0,i.jsx)(t.a,{href:"/starter-projects-simple-agent",children:"Simple Agent"})," flow."]}),"\n",(0,i.jsxs)(t.li,{children:["In the ",(0,i.jsx)(t.strong,{children:"Flow Name"})," menu, select the sub-flow you want to run.\nThe appearance of the ",(0,i.jsx)(t.strong,{children:"Run Flow"})," component changes to reflect the inputs and outputs of the selected flow."]}),"\n",(0,i.jsxs)(t.li,{children:["On the ",(0,i.jsx)(t.strong,{children:"Run Flow"})," component, enable ",(0,i.jsx)(t.strong,{children:"Tool Mode"}),"."]}),"\n",(0,i.jsxs)(t.li,{children:["Connect the ",(0,i.jsx)(t.strong,{children:"Run Flow"})," component to the ",(0,i.jsx)(t.strong,{children:"Toolset"})," input of the Agent.\nYour flow should now look like this:\n",(0,i.jsx)(t.img,{alt:"Run Flow component",src:n(18111).A+"",width:"2036",height:"1582"})]}),"\n",(0,i.jsx)(t.li,{children:"Run the flow. The Agent uses the Run Flow component as a tool to run the selected sub-flow."}),"\n"]}),"\n",(0,i.jsx)(t.h3,{id:"inputs-7",children:"Inputs"}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Name"}),(0,i.jsx)(t.th,{children:"Type"}),(0,i.jsx)(t.th,{children:"Description"})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"flow_name_selected"}),(0,i.jsx)(t.td,{children:"Dropdown"}),(0,i.jsx)(t.td,{children:"The name of the flow to run."})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"flow_tweak_data"}),(0,i.jsx)(t.td,{children:"Dict"}),(0,i.jsx)(t.td,{children:"Dictionary of tweaks to customize the flow's behavior."})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"dynamic inputs"}),(0,i.jsx)(t.td,{children:"Various"}),(0,i.jsx)(t.td,{children:"Additional inputs that are generated based on the selected flow."})]})]})]}),"\n",(0,i.jsx)(t.h3,{id:"outputs-7",children:"Outputs"}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Name"}),(0,i.jsx)(t.th,{children:"Type"}),(0,i.jsx)(t.th,{children:"Description"})]})}),(0,i.jsx)(t.tbody,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"run_outputs"}),(0,i.jsxs)(t.td,{children:["A ",(0,i.jsx)(t.code,{children:"List"})," of types ",(0,i.jsx)(t.code,{children:"Data"}),", ",(0,i.jsx)(t.code,{children:"Message,"})," or ",(0,i.jsx)(t.code,{children:"DataFrame"})]}),(0,i.jsx)(t.td,{children:"All outputs are generated from running the flow."})]})})]}),"\n",(0,i.jsx)(t.h2,{id:"sub-flow",children:"Sub flow"}),"\n",(0,i.jsx)(t.admonition,{type:"important",children:(0,i.jsxs)(t.p,{children:["This component is deprecated as of Langflow version 1.1.2.\nInstead, use the ",(0,i.jsx)(t.a,{href:"/components-logic#run-flow",children:"Run flow component"})]})}),"\n",(0,i.jsxs)(t.p,{children:["This ",(0,i.jsx)(t.code,{children:"SubFlowComponent"})," generates a component from a flow with all of its inputs and outputs."]}),"\n",(0,i.jsx)(t.p,{children:"This component can integrate entire flows as components within a larger workflow. It dynamically generates inputs based on the selected flow and executes the flow with provided parameters."}),"\n",(0,i.jsx)(t.h3,{id:"inputs-8",children:"Inputs"}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Name"}),(0,i.jsx)(t.th,{children:"Type"}),(0,i.jsx)(t.th,{children:"Description"})]})}),(0,i.jsx)(t.tbody,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"flow_name"}),(0,i.jsx)(t.td,{children:"Dropdown"}),(0,i.jsx)(t.td,{children:"The name of the flow to run."})]})})]}),"\n",(0,i.jsx)(t.h3,{id:"outputs-8",children:"Outputs"}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Name"}),(0,i.jsx)(t.th,{children:"Type"}),(0,i.jsx)(t.th,{children:"Description"})]})}),(0,i.jsx)(t.tbody,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"flow_outputs"}),(0,i.jsx)(t.td,{children:"List[Data]"}),(0,i.jsx)(t.td,{children:"The outputs generated from the flow."})]})})]})]})}function u(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(j,{...e})}):j(e)}function p(e,t){throw new Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}},19709:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/loop-text-summarizer-bd1d7be6d26bb47765931e3ab9f98dfa.png"},91110:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/component-loop-csv-5e6704f4f2b8d511b70336ff3ddc1328.png"}}]); \ No newline at end of file diff --git a/assets/js/6aa941bb.ea2cd923.js b/assets/js/6aa941bb.ea2cd923.js new file mode 100644 index 0000000000..3af633d09d --- /dev/null +++ b/assets/js/6aa941bb.ea2cd923.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[3327],{18111:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/component-run-flow-78e94e2ede1b4b853f0e4de6b9561f6f.png"},19054:(e,t,n)=>{n.r(t),n.d(t,{CH:()=>h,assets:()=>c,chCodeConfig:()=>a,contentTitle:()=>l,default:()=>j,frontMatter:()=>d,metadata:()=>s,toc:()=>p});const s=JSON.parse('{"id":"Components/components-logic","title":"Logic","description":"Logic components provide functionalities for routing, conditional processing, and flow management.","source":"@site/docs/Components/components-logic.md","sourceDirName":"Components","slug":"/components-logic","permalink":"/components-logic","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Logic","slug":"/components-logic"},"sidebar":"docs","previous":{"title":"Loaders","permalink":"/components-loaders"},"next":{"title":"Memories","permalink":"/components-memories"}}');var o=n(74848),i=n(28453),r=n(24754);const d={title:"Logic",slug:"/components-logic"},l="Logic components in Langflow",c={},h={annotations:r.hk,Code:r.Cy},a={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},p=[{value:"Use a logic component in a flow",id:"use-a-logic-component-in-a-flow",level:2},{value:"Conditional router (If-Else component)",id:"conditional-router-if-else-component",level:2},{value:"Inputs",id:"inputs",level:3},{value:"Outputs",id:"outputs",level:3},{value:"Operator Behavior",id:"operator-behavior",level:3},{value:"Listen",id:"listen",level:2},{value:"Inputs",id:"inputs-1",level:3},{value:"Outputs",id:"outputs-1",level:3},{value:"Loop",id:"loop",level:2},{value:"Inputs",id:"inputs-2",level:3},{value:"Outputs",id:"outputs-2",level:3},{value:"Notify",id:"notify",level:2},{value:"Inputs",id:"inputs-3",level:3},{value:"Outputs",id:"outputs-3",level:3},{value:"Pass message",id:"pass-message",level:2},{value:"Inputs",id:"inputs-4",level:3},{value:"Outputs",id:"outputs-4",level:3},{value:"Run flow",id:"run-flow",level:2},{value:"Inputs",id:"inputs-5",level:3},{value:"Outputs",id:"outputs-5",level:3},{value:"Legacy components",id:"legacy-components",level:2},{value:"Data Conditional Router",id:"data-conditional-router",level:3},{value:"Inputs",id:"inputs-6",level:4},{value:"Outputs",id:"outputs-6",level:4},{value:"Operator behavior",id:"operator-behavior-1",level:4},{value:"List processing",id:"list-processing",level:4},{value:"Deprecated components",id:"deprecated-components",level:2},{value:"Flow as tool",id:"flow-as-tool",level:3},{value:"Inputs",id:"inputs-7",level:4},{value:"Outputs",id:"outputs-7",level:4},{value:"Sub flow",id:"sub-flow",level:3},{value:"Inputs",id:"inputs-8",level:4},{value:"Outputs",id:"outputs-8",level:4}];function x(e){const t={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return h||u("CH",!1),h.Code||u("CH.Code",!0),(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("style",{dangerouslySetInnerHTML:{__html:'[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }'}}),"\n",(0,o.jsx)(t.header,{children:(0,o.jsx)(t.h1,{id:"logic-components-in-langflow",children:"Logic components in Langflow"})}),"\n",(0,o.jsx)(t.p,{children:"Logic components provide functionalities for routing, conditional processing, and flow management."}),"\n",(0,o.jsx)(t.h2,{id:"use-a-logic-component-in-a-flow",children:"Use a logic component in a flow"}),"\n",(0,o.jsxs)(t.p,{children:['This flow creates a summarizing "for each" loop with the ',(0,o.jsx)(t.a,{href:"/components-logic#loop",children:"Loop"})," component."]}),"\n",(0,o.jsxs)(t.p,{children:["The component iterates over a list of ",(0,o.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," objects until it's completed, and then the ",(0,o.jsx)(t.strong,{children:"Done"})," loop aggregates the results."]}),"\n",(0,o.jsxs)(t.p,{children:["The ",(0,o.jsx)(t.strong,{children:"File"})," component loads text files from your local machine, and then the ",(0,o.jsx)(t.strong,{children:"Parse Data"})," component parses them into a list of structured ",(0,o.jsx)(t.code,{children:"Data"})," objects.\nThe ",(0,o.jsx)(t.strong,{children:"Loop"})," component passes each ",(0,o.jsx)(t.code,{children:"Data"})," object to a ",(0,o.jsx)(t.strong,{children:"Prompt"})," to be summarized."]}),"\n",(0,o.jsxs)(t.p,{children:["When the ",(0,o.jsx)(t.strong,{children:"Loop"})," component runs out of ",(0,o.jsx)(t.code,{children:"Data"}),", the ",(0,o.jsx)(t.strong,{children:"Done"})," loop activates, which counts the number of pages and summarizes their tone with another ",(0,o.jsx)(t.strong,{children:"Prompt"}),".\nThis is represented in Langflow by connecting the Parse Data component's ",(0,o.jsx)(t.strong,{children:"Data List"})," output to the Loop component's ",(0,o.jsx)(t.code,{children:"Data"})," loop input."]}),"\n",(0,o.jsx)(t.p,{children:(0,o.jsx)(t.img,{alt:"Sample Flow looping summarizer",src:n(19709).A+"",width:"2676",height:"1512"})}),"\n",(0,o.jsx)(t.p,{children:"The output will look similar to this:"}),"\n",(0,o.jsx)(h.Code,{codeConfig:a,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"Document Summary",props:{}}]},{tokens:[{content:"Total Pages Processed",props:{}}]},{tokens:[{content:"Total Pages: 2",props:{}}]},{tokens:[{content:"Overall Tone of Document",props:{}}]},{tokens:[{content:"Tone: Informative and Instructional",props:{}}]},{tokens:[{content:"The documentation outlines microservices architecture patterns and best practices.",props:{}}]},{tokens:[{content:"It emphasizes service isolation and inter-service communication protocols.",props:{}}]},{tokens:[{content:"The use of asynchronous messaging patterns is recommended for system scalability.",props:{}}]},{tokens:[{content:"It includes code examples of REST and gRPC implementations to demonstrate integration approaches.",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,o.jsx)(t.h2,{id:"conditional-router-if-else-component",children:"Conditional router (If-Else component)"}),"\n",(0,o.jsxs)(t.p,{children:["This component routes messages by comparing two strings.\nIt evaluates a condition by comparing two text inputs using the specified operator and routes the message to ",(0,o.jsx)(t.code,{children:"true_result"})," or ",(0,o.jsx)(t.code,{children:"false_result"}),"."]}),"\n",(0,o.jsxs)(t.p,{children:["The operator looks for single strings based on your defined ",(0,o.jsx)(t.a,{href:"#operator-behavior",children:"operator behavior"}),", but it can also search for multiple words by regex matching."]}),"\n",(0,o.jsxs)(t.p,{children:["To use the ",(0,o.jsx)(t.strong,{children:"Conditional router"})," component to check incoming messages with regex matching, do the following:"]}),"\n",(0,o.jsxs)(t.ol,{children:["\n",(0,o.jsxs)(t.li,{children:["Connect the ",(0,o.jsx)(t.strong,{children:"If-Else"})," component's ",(0,o.jsx)(t.strong,{children:"Text Input"})," port to a ",(0,o.jsx)(t.strong,{children:"Chat Input"})," component."]}),"\n",(0,o.jsx)(t.li,{children:"In the If-Else component, enter the following values."}),"\n"]}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:["In the ",(0,o.jsx)(t.strong,{children:"Match Text"})," field, enter ",(0,o.jsx)(t.code,{children:".*(urgent|warning|caution).*"}),". The component looks for these values. The regex match is case sensitive, so to look for all permutations of ",(0,o.jsx)(t.code,{children:"warning"}),", enter ",(0,o.jsx)(t.code,{children:"warning|Warning|WARNING"}),"."]}),"\n",(0,o.jsxs)(t.li,{children:["In the ",(0,o.jsx)(t.strong,{children:"Operator"})," field, enter ",(0,o.jsx)(t.code,{children:"regex"}),". The component looks for the strings ",(0,o.jsx)(t.code,{children:"urgent"}),", ",(0,o.jsx)(t.code,{children:"warning"}),", and ",(0,o.jsx)(t.code,{children:"caution"}),". For more operators, see ",(0,o.jsx)(t.a,{href:"#operator-behavior",children:"Operator behavior"}),"."]}),"\n",(0,o.jsxs)(t.li,{children:["In the ",(0,o.jsx)(t.strong,{children:"Message"})," field, enter ",(0,o.jsx)(t.code,{children:"New Message Detected"}),". This field is optional. The message is sent to both the ",(0,o.jsx)(t.strong,{children:"True"})," and ",(0,o.jsx)(t.strong,{children:"False"})," ports.\nThe component is now set up to send a ",(0,o.jsx)(t.code,{children:"New Message Detected"})," message out of its ",(0,o.jsx)(t.strong,{children:"True"})," port if it matches any of the strings.\nIf no strings are detected, it sends a message out of the ",(0,o.jsx)(t.strong,{children:"False"})," port."]}),"\n"]}),"\n",(0,o.jsxs)(t.ol,{start:"3",children:["\n",(0,o.jsxs)(t.li,{children:["Create two identical flows to process the messages. Connect an ",(0,o.jsx)(t.strong,{children:"Open AI"})," component, a ",(0,o.jsx)(t.strong,{children:"Prompt"}),", and a ",(0,o.jsx)(t.strong,{children:"Chat Output"})," component together."]}),"\n",(0,o.jsxs)(t.li,{children:["Connect one chain to the ",(0,o.jsx)(t.strong,{children:"If-Else"})," component's ",(0,o.jsx)(t.strong,{children:"True"})," port, and one chain to the ",(0,o.jsx)(t.strong,{children:"False"})," port."]}),"\n"]}),"\n",(0,o.jsx)(t.p,{children:"The flow looks like this:"}),"\n",(0,o.jsx)(t.p,{children:(0,o.jsx)(t.img,{alt:"A conditional router connected to two OpenAI components",src:n(89329).A+"",width:"1888",height:"1754"})}),"\n",(0,o.jsxs)(t.ol,{start:"5",children:["\n",(0,o.jsxs)(t.li,{children:["Add your ",(0,o.jsx)(t.strong,{children:"OpenAI API key"})," to both ",(0,o.jsx)(t.strong,{children:"OpenAI"})," components."]}),"\n",(0,o.jsxs)(t.li,{children:["In both ",(0,o.jsx)(t.strong,{children:"Prompt"})," components, enter the behavior you want each route to take.\nWhen a match is found:"]}),"\n"]}),"\n",(0,o.jsx)(h.Code,{codeConfig:a,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"Send a message that a new message has been received and added to the Urgent queue.",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,o.jsx)(t.p,{children:"When a match is not found:"}),"\n",(0,o.jsx)(h.Code,{codeConfig:a,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"Send a message that a new message has been received and added to the backlog.",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,o.jsxs)(t.ol,{start:"7",children:["\n",(0,o.jsxs)(t.li,{children:["Open the ",(0,o.jsx)(t.strong,{children:"Playground"}),"."]}),"\n",(0,o.jsx)(t.li,{children:"Send the flow some messages. Your messages route differently based on the if-else component's evaluation."}),"\n"]}),"\n",(0,o.jsx)(h.Code,{codeConfig:a,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"User",props:{}}]},{tokens:[{content:"A new user was created.",props:{}}]},{tokens:[{content:"",props:{}}]},{tokens:[{content:"AI",props:{}}]},{tokens:[{content:"A new message has been received and added to the backlog.",props:{}}]},{tokens:[{content:"",props:{}}]},{tokens:[{content:"User",props:{}}]},{tokens:[{content:"Sign-in warning: new user locked out.",props:{}}]},{tokens:[{content:"",props:{}}]},{tokens:[{content:"AI",props:{}}]},{tokens:[{content:"A new message has been received and added to the Urgent queue. Please review it at your earliest convenience.",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,o.jsx)(t.h3,{id:"inputs",children:"Inputs"}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Name"}),(0,o.jsx)(t.th,{children:"Type"}),(0,o.jsx)(t.th,{children:"Description"})]})}),(0,o.jsxs)(t.tbody,{children:[(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"input_text"}),(0,o.jsx)(t.td,{children:"String"}),(0,o.jsx)(t.td,{children:"The primary text input for the operation."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"match_text"}),(0,o.jsx)(t.td,{children:"String"}),(0,o.jsx)(t.td,{children:"The text input to compare against."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"operator"}),(0,o.jsx)(t.td,{children:"Dropdown"}),(0,o.jsx)(t.td,{children:'The operator to compare texts. Options: "equals", "not equals", "contains", "starts with", "ends with", "regex". Default: "equals".'})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"case_sensitive"}),(0,o.jsx)(t.td,{children:"Boolean"}),(0,o.jsx)(t.td,{children:"If true, the comparison is case sensitive. This setting is ignored for regex comparison. Default: false."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"message"}),(0,o.jsx)(t.td,{children:"Message"}),(0,o.jsx)(t.td,{children:"The message to pass through either route."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"max_iterations"}),(0,o.jsx)(t.td,{children:"Integer"}),(0,o.jsx)(t.td,{children:"The maximum number of iterations for the conditional router. Default: 10."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"default_route"}),(0,o.jsx)(t.td,{children:"Dropdown"}),(0,o.jsx)(t.td,{children:'The default route to take when max iterations are reached. Options: "true_result" or "false_result". Default: "false_result".'})]})]})]}),"\n",(0,o.jsx)(t.h3,{id:"outputs",children:"Outputs"}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Name"}),(0,o.jsx)(t.th,{children:"Type"}),(0,o.jsx)(t.th,{children:"Description"})]})}),(0,o.jsxs)(t.tbody,{children:[(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"true_result"}),(0,o.jsx)(t.td,{children:"Message"}),(0,o.jsx)(t.td,{children:"The output when the condition is true."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"false_result"}),(0,o.jsx)(t.td,{children:"Message"}),(0,o.jsx)(t.td,{children:"The output when the condition is false."})]})]})]}),"\n",(0,o.jsx)(t.h3,{id:"operator-behavior",children:"Operator Behavior"}),"\n",(0,o.jsxs)(t.p,{children:["The ",(0,o.jsx)(t.strong,{children:"If-else"})," component includes a comparison operator to compare the values in ",(0,o.jsx)(t.code,{children:"input_text"})," and ",(0,o.jsx)(t.code,{children:"match_text"}),"."]}),"\n",(0,o.jsxs)(t.p,{children:["All options respect the ",(0,o.jsx)(t.code,{children:"case_sensitive"})," setting except ",(0,o.jsx)(t.strong,{children:"regex"}),"."]}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"equals"}),": Exact match comparison."]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"not equals"}),": Inverse of exact match."]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"contains"}),": Checks if match_text is found within input_text."]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"starts with"}),": Checks if input_text begins with match_text."]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"ends with"}),": Checks if input_text ends with match_text."]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"regex"}),": Performs regular expression matching. It is always case sensitive and ignores the case_sensitive setting."]}),"\n"]}),"\n",(0,o.jsx)(t.h2,{id:"listen",children:"Listen"}),"\n",(0,o.jsx)(t.p,{children:"This component listens for a notification and retrieves its associated state."}),"\n",(0,o.jsx)(t.h3,{id:"inputs-1",children:"Inputs"}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Name"}),(0,o.jsx)(t.th,{children:"Type"}),(0,o.jsx)(t.th,{children:"Description"})]})}),(0,o.jsx)(t.tbody,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"name"}),(0,o.jsx)(t.td,{children:"String"}),(0,o.jsx)(t.td,{children:"The name of the notification to listen for."})]})})]}),"\n",(0,o.jsx)(t.h3,{id:"outputs-1",children:"Outputs"}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Name"}),(0,o.jsx)(t.th,{children:"Type"}),(0,o.jsx)(t.th,{children:"Description"})]})}),(0,o.jsx)(t.tbody,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"output"}),(0,o.jsx)(t.td,{children:"Data"}),(0,o.jsx)(t.td,{children:"The state associated with the notification."})]})})]}),"\n",(0,o.jsx)(t.h2,{id:"loop",children:"Loop"}),"\n",(0,o.jsxs)(t.p,{children:["This component iterates over a list of ",(0,o.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," objects, outputting one item at a time and aggregating results from loop inputs."]}),"\n",(0,o.jsxs)(t.p,{children:["In this example, the ",(0,o.jsx)(t.strong,{children:"Loop"})," component iterates over a CSV file through the ",(0,o.jsx)(t.strong,{children:"Item"})," port until there are no rows left to process. Then, the ",(0,o.jsx)(t.strong,{children:"Loop"})," component performs the actions connected to the ",(0,o.jsx)(t.strong,{children:"Done"})," port, which in this case is loading the structured data into ",(0,o.jsx)(t.strong,{children:"Chroma DB"}),"."]}),"\n",(0,o.jsxs)(t.p,{children:["Think of it this way: the ",(0,o.jsx)(t.strong,{children:"Item"}),' port forms the "main" loop that repeats until a "complete" condition is reached.']}),"\n",(0,o.jsxs)(t.ol,{children:["\n",(0,o.jsxs)(t.li,{children:["The ",(0,o.jsx)(t.strong,{children:"Loop"})," component accepts ",(0,o.jsx)(t.strong,{children:"Data"})," from the ",(0,o.jsx)(t.strong,{children:"Load CSV"})," component, and outputs the data from the ",(0,o.jsx)(t.strong,{children:"Item"})," port."]}),"\n",(0,o.jsxs)(t.li,{children:["Each CSV row is converted to a ",(0,o.jsx)(t.strong,{children:"Message"})," and processed into structured data with the ",(0,o.jsx)(t.strong,{children:"Structured Output"})," component.\nThe dotted line connected from the ",(0,o.jsx)(t.strong,{children:"Structured Output"})," component's ",(0,o.jsx)(t.strong,{children:"Looping"})," port tells you where the loop begins again."]}),"\n",(0,o.jsxs)(t.li,{children:["The ",(0,o.jsx)(t.strong,{children:"Loop"})," component repeatedly extracts rows by ",(0,o.jsx)(t.strong,{children:"Text Key"})," until there are no more rows to extract."]}),"\n"]}),"\n",(0,o.jsxs)(t.p,{children:["Once all items are processed, the action connected to the ",(0,o.jsx)(t.strong,{children:"Done"})," port is performed.\nIn this example, the data is loaded into ",(0,o.jsx)(t.strong,{children:"Chroma DB"}),"."]}),"\n",(0,o.jsx)(t.p,{children:(0,o.jsx)(t.img,{alt:"Loop CSV parser",src:n(91110).A+"",width:"3008",height:"3172"})}),"\n",(0,o.jsxs)(t.p,{children:["Follow along with this step-by-step video guide for creating this flow and adding agentic RAG: ",(0,o.jsx)(t.a,{href:"https://www.youtube.com/watch?v=9Wx7WODSKTo",children:"Mastering the Loop Component & Agentic RAG in Langflow"}),"."]}),"\n",(0,o.jsx)(t.h3,{id:"inputs-2",children:"Inputs"}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Name"}),(0,o.jsx)(t.th,{children:"Type"}),(0,o.jsx)(t.th,{children:"Description"})]})}),(0,o.jsx)(t.tbody,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"data"}),(0,o.jsx)(t.td,{children:"Data/List"}),(0,o.jsx)(t.td,{children:"The initial list of Data objects to iterate over."})]})})]}),"\n",(0,o.jsx)(t.h3,{id:"outputs-2",children:"Outputs"}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Name"}),(0,o.jsx)(t.th,{children:"Type"}),(0,o.jsx)(t.th,{children:"Description"})]})}),(0,o.jsxs)(t.tbody,{children:[(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"item"}),(0,o.jsx)(t.td,{children:"Data"}),(0,o.jsx)(t.td,{children:"Outputs one item at a time from the data list."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"done"}),(0,o.jsx)(t.td,{children:"Data"}),(0,o.jsx)(t.td,{children:"Triggered when iteration complete, returns aggregated results."})]})]})]}),"\n",(0,o.jsx)(t.h2,{id:"notify",children:"Notify"}),"\n",(0,o.jsx)(t.p,{children:"This component generates a notification for the Listen component to use."}),"\n",(0,o.jsx)(t.h3,{id:"inputs-3",children:"Inputs"}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Name"}),(0,o.jsx)(t.th,{children:"Type"}),(0,o.jsx)(t.th,{children:"Description"})]})}),(0,o.jsxs)(t.tbody,{children:[(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"name"}),(0,o.jsx)(t.td,{children:"String"}),(0,o.jsx)(t.td,{children:"The name of the notification."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"data"}),(0,o.jsx)(t.td,{children:"Data"}),(0,o.jsx)(t.td,{children:"The data to store in the notification."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"append"}),(0,o.jsx)(t.td,{children:"Boolean"}),(0,o.jsx)(t.td,{children:"If true, the record will be appended to the existing notification."})]})]})]}),"\n",(0,o.jsx)(t.h3,{id:"outputs-3",children:"Outputs"}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Name"}),(0,o.jsx)(t.th,{children:"Type"}),(0,o.jsx)(t.th,{children:"Description"})]})}),(0,o.jsx)(t.tbody,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"output"}),(0,o.jsx)(t.td,{children:"Data"}),(0,o.jsx)(t.td,{children:"The data stored in the notification."})]})})]}),"\n",(0,o.jsx)(t.h2,{id:"pass-message",children:"Pass message"}),"\n",(0,o.jsx)(t.p,{children:"This component forwards the input message, unchanged."}),"\n",(0,o.jsx)(t.h3,{id:"inputs-4",children:"Inputs"}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Name"}),(0,o.jsx)(t.th,{children:"Display Name"}),(0,o.jsx)(t.th,{children:"Info"})]})}),(0,o.jsxs)(t.tbody,{children:[(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"input_message"}),(0,o.jsx)(t.td,{children:"Input Message"}),(0,o.jsx)(t.td,{children:"The message to be passed forward."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"ignored_message"}),(0,o.jsx)(t.td,{children:"Ignored Message"}),(0,o.jsx)(t.td,{children:"A second message to be ignored. Used as a workaround for continuity."})]})]})]}),"\n",(0,o.jsx)(t.h3,{id:"outputs-4",children:"Outputs"}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Name"}),(0,o.jsx)(t.th,{children:"Display Name"}),(0,o.jsx)(t.th,{children:"Info"})]})}),(0,o.jsx)(t.tbody,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"output_message"}),(0,o.jsx)(t.td,{children:"Output Message"}),(0,o.jsx)(t.td,{children:"The forwarded input message."})]})})]}),"\n",(0,o.jsx)(t.h2,{id:"run-flow",children:"Run flow"}),"\n",(0,o.jsx)(t.p,{children:"This component allows you to run any flow stored in your Langflow database without opening the flow editor."}),"\n",(0,o.jsxs)(t.p,{children:["The Run Flow component can also be used as a tool when connected to an ",(0,o.jsx)(t.a,{href:"/components-agents",children:"Agent"}),". The ",(0,o.jsx)(t.code,{children:"name"})," and ",(0,o.jsx)(t.code,{children:"description"})," metadata that the Agent uses to register the tool are created automatically."]}),"\n",(0,o.jsx)(t.p,{children:"When you select a flow, the component fetches the flow's graph structure and uses it to generate the inputs and outputs for the Run Flow component."}),"\n",(0,o.jsx)(t.p,{children:"To use the Run Flow component as a tool, do the following:"}),"\n",(0,o.jsxs)(t.ol,{children:["\n",(0,o.jsxs)(t.li,{children:["Add the ",(0,o.jsx)(t.strong,{children:"Run Flow"})," component to the ",(0,o.jsx)(t.a,{href:"/starter-projects-simple-agent",children:"Simple Agent"})," flow."]}),"\n",(0,o.jsxs)(t.li,{children:["In the ",(0,o.jsx)(t.strong,{children:"Flow Name"})," menu, select the sub-flow you want to run.\nThe appearance of the ",(0,o.jsx)(t.strong,{children:"Run Flow"})," component changes to reflect the inputs and outputs of the selected flow."]}),"\n",(0,o.jsxs)(t.li,{children:["On the ",(0,o.jsx)(t.strong,{children:"Run Flow"})," component, enable ",(0,o.jsx)(t.strong,{children:"Tool Mode"}),"."]}),"\n",(0,o.jsxs)(t.li,{children:["Connect the ",(0,o.jsx)(t.strong,{children:"Run Flow"})," component to the ",(0,o.jsx)(t.strong,{children:"Toolset"})," input of the Agent.\nYour flow should now look like this:\n",(0,o.jsx)(t.img,{alt:"Run Flow component",src:n(18111).A+"",width:"2036",height:"1582"})]}),"\n",(0,o.jsx)(t.li,{children:"Run the flow. The Agent uses the Run Flow component as a tool to run the selected sub-flow."}),"\n"]}),"\n",(0,o.jsx)(t.h3,{id:"inputs-5",children:"Inputs"}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Name"}),(0,o.jsx)(t.th,{children:"Type"}),(0,o.jsx)(t.th,{children:"Description"})]})}),(0,o.jsxs)(t.tbody,{children:[(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"flow_name_selected"}),(0,o.jsx)(t.td,{children:"Dropdown"}),(0,o.jsx)(t.td,{children:"The name of the flow to run."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"flow_tweak_data"}),(0,o.jsx)(t.td,{children:"Dict"}),(0,o.jsx)(t.td,{children:"Dictionary of tweaks to customize the flow's behavior."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"dynamic inputs"}),(0,o.jsx)(t.td,{children:"Various"}),(0,o.jsx)(t.td,{children:"Additional inputs that are generated based on the selected flow."})]})]})]}),"\n",(0,o.jsx)(t.h3,{id:"outputs-5",children:"Outputs"}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Name"}),(0,o.jsx)(t.th,{children:"Type"}),(0,o.jsx)(t.th,{children:"Description"})]})}),(0,o.jsx)(t.tbody,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"run_outputs"}),(0,o.jsxs)(t.td,{children:["A ",(0,o.jsx)(t.code,{children:"List"})," of types ",(0,o.jsx)(t.code,{children:"Data"}),", ",(0,o.jsx)(t.code,{children:"Message,"})," or ",(0,o.jsx)(t.code,{children:"DataFrame"})]}),(0,o.jsx)(t.td,{children:"All outputs are generated from running the flow."})]})})]}),"\n",(0,o.jsx)(t.h2,{id:"legacy-components",children:"Legacy components"}),"\n",(0,o.jsx)(t.p,{children:"Legacy components are available to use but no longer supported."}),"\n",(0,o.jsx)(t.h3,{id:"data-conditional-router",children:"Data Conditional Router"}),"\n",(0,o.jsx)(t.admonition,{type:"important",children:(0,o.jsxs)(t.p,{children:["This component is in ",(0,o.jsx)(t.strong,{children:"Legacy"}),", which means it is no longer in active development as of Langflow version 1.3."]})}),"\n",(0,o.jsxs)(t.p,{children:["This component routes ",(0,o.jsx)(t.code,{children:"Data"})," objects based on a condition applied to a specified key, including boolean validation. It can process either a single Data object or a list of Data objects."]}),"\n",(0,o.jsx)(t.p,{children:"This component is particularly useful in workflows that require conditional routing of complex data structures, enabling dynamic decision-making based on data content."}),"\n",(0,o.jsx)(t.h4,{id:"inputs-6",children:"Inputs"}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Name"}),(0,o.jsx)(t.th,{children:"Type"}),(0,o.jsx)(t.th,{children:"Description"})]})}),(0,o.jsxs)(t.tbody,{children:[(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"data_input"}),(0,o.jsx)(t.td,{children:"Data"}),(0,o.jsx)(t.td,{children:"The Data object or list of Data objects to process. This input can handle both single items and lists."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"key_name"}),(0,o.jsx)(t.td,{children:"String"}),(0,o.jsx)(t.td,{children:"The name of the key in the Data object to check."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"operator"}),(0,o.jsx)(t.td,{children:"Dropdown"}),(0,o.jsx)(t.td,{children:'The operator to apply. Options: "equals", "not equals", "contains", "starts with", "ends with", "boolean validator". Default: "equals".'})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"compare_value"}),(0,o.jsx)(t.td,{children:"String"}),(0,o.jsx)(t.td,{children:'The value to compare against. Not shown/used when operator is "boolean validator".'})]})]})]}),"\n",(0,o.jsx)(t.h4,{id:"outputs-6",children:"Outputs"}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Name"}),(0,o.jsx)(t.th,{children:"Type"}),(0,o.jsx)(t.th,{children:"Description"})]})}),(0,o.jsxs)(t.tbody,{children:[(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"true_output"}),(0,o.jsx)(t.td,{children:"Data/List"}),(0,o.jsx)(t.td,{children:"Output when the condition is met."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"false_output"}),(0,o.jsx)(t.td,{children:"Data/List"}),(0,o.jsx)(t.td,{children:"Output when the condition is not met."})]})]})]}),"\n",(0,o.jsx)(t.h4,{id:"operator-behavior-1",children:"Operator behavior"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"equals"}),": Exact match comparison between the key's value and compare_value."]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"not equals"}),": Inverse of exact match."]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"contains"}),": Checks if compare_value is found within the key's value."]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"starts with"}),": Checks if the key's value begins with compare_value."]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"ends with"}),": Checks if the key's value ends with compare_value."]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"boolean validator"}),": Treats the key's value as a boolean. The following values are considered true:","\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:["Boolean ",(0,o.jsx)(t.code,{children:"true"}),"."]}),"\n",(0,o.jsx)(t.li,{children:'Strings: "true", "1", "yes", "y", "on" (case-insensitive).'}),"\n",(0,o.jsxs)(t.li,{children:["Any other value is converted using Python's ",(0,o.jsx)(t.code,{children:"bool()"})," function."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(t.h4,{id:"list-processing",children:"List processing"}),"\n",(0,o.jsx)(t.p,{children:"The following actions occur when processing a list of Data objects:"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsx)(t.li,{children:"Each object in the list is evaluated individually"}),"\n",(0,o.jsx)(t.li,{children:"Objects meeting the condition go to true_output"}),"\n",(0,o.jsx)(t.li,{children:"Objects not meeting the condition go to false_output"}),"\n",(0,o.jsx)(t.li,{children:"If all objects go to one output, the other output is empty"}),"\n"]}),"\n",(0,o.jsx)(t.h2,{id:"deprecated-components",children:"Deprecated components"}),"\n",(0,o.jsx)(t.p,{children:"Deprecated components have been replaced by newer alternatives and should not be used in new projects."}),"\n",(0,o.jsx)(t.h3,{id:"flow-as-tool",children:"Flow as tool"}),"\n",(0,o.jsx)(t.admonition,{type:"important",children:(0,o.jsxs)(t.p,{children:["This component is deprecated as of Langflow version 1.1.2.\nInstead, use the ",(0,o.jsx)(t.a,{href:"/components-logic#run-flow",children:"Run flow component"})]})}),"\n",(0,o.jsx)(t.p,{children:"This component constructs a tool from a function that runs a loaded flow."}),"\n",(0,o.jsx)(t.h4,{id:"inputs-7",children:"Inputs"}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Name"}),(0,o.jsx)(t.th,{children:"Type"}),(0,o.jsx)(t.th,{children:"Description"})]})}),(0,o.jsxs)(t.tbody,{children:[(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"flow_name"}),(0,o.jsx)(t.td,{children:"Dropdown"}),(0,o.jsx)(t.td,{children:"The name of the flow to run."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"tool_name"}),(0,o.jsx)(t.td,{children:"String"}),(0,o.jsx)(t.td,{children:"The name of the tool."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"tool_description"}),(0,o.jsx)(t.td,{children:"String"}),(0,o.jsx)(t.td,{children:"The description of the tool."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"return_direct"}),(0,o.jsx)(t.td,{children:"Boolean"}),(0,o.jsx)(t.td,{children:"If true, returns the result directly from the tool."})]})]})]}),"\n",(0,o.jsx)(t.h4,{id:"outputs-7",children:"Outputs"}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Name"}),(0,o.jsx)(t.th,{children:"Type"}),(0,o.jsx)(t.th,{children:"Description"})]})}),(0,o.jsx)(t.tbody,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"api_build_tool"}),(0,o.jsx)(t.td,{children:"Tool"}),(0,o.jsx)(t.td,{children:"The constructed tool from the flow."})]})})]}),"\n",(0,o.jsx)(t.h3,{id:"sub-flow",children:"Sub flow"}),"\n",(0,o.jsx)(t.admonition,{type:"important",children:(0,o.jsxs)(t.p,{children:["This component is deprecated as of Langflow version 1.1.2.\nInstead, use the ",(0,o.jsx)(t.a,{href:"/components-logic#run-flow",children:"Run flow component"})]})}),"\n",(0,o.jsxs)(t.p,{children:["This ",(0,o.jsx)(t.code,{children:"SubFlowComponent"})," generates a component from a flow with all of its inputs and outputs."]}),"\n",(0,o.jsx)(t.p,{children:"This component can integrate entire flows as components within a larger workflow. It dynamically generates inputs based on the selected flow and executes the flow with provided parameters."}),"\n",(0,o.jsx)(t.h4,{id:"inputs-8",children:"Inputs"}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Name"}),(0,o.jsx)(t.th,{children:"Type"}),(0,o.jsx)(t.th,{children:"Description"})]})}),(0,o.jsx)(t.tbody,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"flow_name"}),(0,o.jsx)(t.td,{children:"Dropdown"}),(0,o.jsx)(t.td,{children:"The name of the flow to run."})]})})]}),"\n",(0,o.jsx)(t.h4,{id:"outputs-8",children:"Outputs"}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Name"}),(0,o.jsx)(t.th,{children:"Type"}),(0,o.jsx)(t.th,{children:"Description"})]})}),(0,o.jsx)(t.tbody,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"flow_outputs"}),(0,o.jsx)(t.td,{children:"List[Data]"}),(0,o.jsx)(t.td,{children:"The outputs generated from the flow."})]})})]})]})}function j(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(x,{...e})}):x(e)}function u(e,t){throw new Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}},19709:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/loop-text-summarizer-bd1d7be6d26bb47765931e3ab9f98dfa.png"},89329:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/component-conditional-router-be8cad83b612bf7c86bc861a1842fda3.png"},91110:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/component-loop-csv-5e6704f4f2b8d511b70336ff3ddc1328.png"}}]); \ No newline at end of file diff --git a/assets/js/e6c6a4d2.77f81efb.js b/assets/js/e6c6a4d2.3c5fee73.js similarity index 55% rename from assets/js/e6c6a4d2.77f81efb.js rename to assets/js/e6c6a4d2.3c5fee73.js index ac28a352bc..ce02ae93b9 100644 --- a/assets/js/e6c6a4d2.77f81efb.js +++ b/assets/js/e6c6a4d2.3c5fee73.js @@ -1 +1 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[8504],{28453:(e,t,n)=>{n.d(t,{R:()=>a,x:()=>l});var s=n(96540);const i={},o=s.createContext(i);function a(e){const t=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),s.createElement(o.Provider,{value:t},e.children)}},94910:(e,t,n)=>{n.r(t),n.d(t,{contentTitle:()=>l,default:()=>d,frontMatter:()=>a,metadata:()=>s,toc:()=>r});const s=JSON.parse('{"type":"api","id":"experimental-run-flow","title":"Experimental Run Flow","description":"","slug":"/experimental-run-flow","frontMatter":{},"api":{"tags":["Base"],"description":"Executes a specified flow by ID with optional input values, output selection, tweaks, and streaming capability.\\n\\nThis endpoint supports running flows with caching to enhance performance and efficiency.\\n\\n### Parameters:\\n- `flow_id` (str): The unique identifier of the flow to be executed.\\n- `inputs` (List[InputValueRequest], optional): A list of inputs specifying the input values and components\\n for the flow. Each input can target specific components and provide custom values.\\n- `outputs` (List[str], optional): A list of output names to retrieve from the executed flow.\\n If not provided, all outputs are returned.\\n- `tweaks` (Optional[Tweaks], optional): A dictionary of tweaks to customize the flow execution.\\n The tweaks can be used to modify the flow\'s parameters and components.\\n Tweaks can be overridden by the input values.\\n- `stream` (bool, optional): Specifies whether the results should be streamed. Defaults to False.\\n- `session_id` (Union[None, str], optional): An optional session ID to utilize existing session data for the flow\\n execution.\\n- `api_key_user` (User): The user associated with the current API key. Automatically resolved from the API key.\\n\\n### Returns:\\nA `RunResponse` object containing the selected outputs (or all if not specified) of the executed flow\\nand the session ID.\\nThe structure of the response accommodates multiple inputs, providing a nested list of outputs for each input.\\n\\n### Raises:\\nHTTPException: Indicates issues with finding the specified flow, invalid input formats, or internal errors during\\nflow execution.\\n\\n### Example usage:\\n```json\\nPOST /run/flow_id\\nx-api-key: YOUR_API_KEY\\nPayload:\\n{\\n \\"inputs\\": [\\n {\\"components\\": [\\"component1\\"], \\"input_value\\": \\"value1\\"},\\n {\\"components\\": [\\"component3\\"], \\"input_value\\": \\"value2\\"}\\n ],\\n \\"outputs\\": [\\"Component Name\\", \\"component_id\\"],\\n \\"tweaks\\": {\\"parameter_name\\": \\"value\\", \\"Component Name\\": {\\"parameter_name\\": \\"value\\"}, \\"component_id\\": {\\"parameter_name\\": \\"value\\"}}\\n \\"stream\\": false\\n}\\n```\\n\\nThis endpoint facilitates complex flow executions with customized inputs, outputs, and configurations,\\ncatering to diverse application requirements.","operationId":"experimental_run_flow_api_v1_run_advanced__flow_id__post","security":[{"API key query":[]},{"API key header":[]}],"parameters":[{"name":"flow_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Flow Id"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"inputs":{"anyOf":[{"items":{"properties":{"components":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Components","default":[]},"input_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Input Value"},"session":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"},"type":{"anyOf":[{"type":"string","enum":["chat","text","any"]},{"type":"null"}],"title":"Type","description":"Defines on which components the input value should be applied. \'any\' applies to all input components.","default":"any"}},"additionalProperties":false,"type":"object","title":"InputValueRequest","examples":[{"components":["components_id","Component Name"],"input_value":"input_value","session":"session_id"},{"components":["Component Name"],"input_value":"input_value"},{"input_value":"input_value"},{"components":["Component Name"],"input_value":"input_value","session":"session_id"},{"input_value":"input_value","session":"session_id"},{"input_value":"input_value","type":"chat"},{"input_value":"{\\"key\\": \\"value\\"}","type":"json"}]},"type":"array"},{"type":"null"}],"title":"Inputs"},"outputs":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Outputs"},"tweaks":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"object"}]},"type":"object","title":"Tweaks","description":"A dictionary of tweaks to adjust the flow\'s execution. Allows customizing flow behavior dynamically. All tweaks are overridden by the input values.","examples":[{"Component Name":{"parameter_name":"value"},"component_id":{"parameter_name":"value"},"parameter_name":"value"}]},{"type":"null"}]},"stream":{"type":"boolean","title":"Stream","default":false},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"}},"type":"object","title":"Body_experimental_run_flow_api_v1_run_advanced__flow_id__post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"outputs":{"anyOf":[{"items":{"properties":{"inputs":{"type":"object","title":"Inputs"},"outputs":{"items":{"anyOf":[{"properties":{"results":{"anyOf":[{},{"type":"null"}],"title":"Results"},"artifacts":{"anyOf":[{},{"type":"null"}],"title":"Artifacts"},"outputs":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Outputs"},"logs":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Logs"},"messages":{"anyOf":[{"items":{"properties":{"message":{"anyOf":[{"type":"string"},{"items":{"anyOf":[{"type":"string"},{"type":"object"}]},"type":"array"}],"title":"Message"},"sender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sender","default":"Machine"},"sender_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sender Name","default":"AI"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"stream_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stream Url"},"component_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Component Id"},"files":{"items":{"properties":{"path":{"type":"string","title":"Path"},"name":{"type":"string","title":"Name"},"type":{"type":"string","title":"Type"}},"type":"object","required":["path","name","type"],"title":"File","description":"File schema."},"type":"array","title":"Files","default":[]},"type":{"type":"string","title":"Type"}},"type":"object","required":["message","type"],"title":"ChatOutputResponse","description":"Chat output response schema."},"type":"array"},{"type":"null"}],"title":"Messages"},"timedelta":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Timedelta"},"duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Duration"},"component_display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Component Display Name"},"component_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Component Id"},"used_frozen_result":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Used Frozen Result","default":false}},"type":"object","title":"ResultData"},{"type":"null"}]},"type":"array","title":"Outputs"}},"type":"object","title":"RunOutputs"},"type":"array"},{"type":"null"}],"title":"Outputs","default":[]},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"}},"type":"object","title":"RunResponse","description":"Run response schema."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}},"method":"post","path":"/api/v1/run/advanced/{flow_id}","securitySchemes":{"OAuth2PasswordBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"api/v1/login"}}},"API key query":{"type":"apiKey","in":"query","name":"x-api-key"},"API key header":{"type":"apiKey","in":"header","name":"x-api-key"}},"jsonRequestBodyExample":{"stream":false},"info":{"title":"Langflow","version":"1.3.4"},"postman":{"name":"Experimental Run Flow","description":{"content":"Executes a specified flow by ID with optional input values, output selection, tweaks, and streaming capability.\\n\\nThis endpoint supports running flows with caching to enhance performance and efficiency.\\n\\n### Parameters:\\n- `flow_id` (str): The unique identifier of the flow to be executed.\\n- `inputs` (List[InputValueRequest], optional): A list of inputs specifying the input values and components\\n for the flow. Each input can target specific components and provide custom values.\\n- `outputs` (List[str], optional): A list of output names to retrieve from the executed flow.\\n If not provided, all outputs are returned.\\n- `tweaks` (Optional[Tweaks], optional): A dictionary of tweaks to customize the flow execution.\\n The tweaks can be used to modify the flow\'s parameters and components.\\n Tweaks can be overridden by the input values.\\n- `stream` (bool, optional): Specifies whether the results should be streamed. Defaults to False.\\n- `session_id` (Union[None, str], optional): An optional session ID to utilize existing session data for the flow\\n execution.\\n- `api_key_user` (User): The user associated with the current API key. Automatically resolved from the API key.\\n\\n### Returns:\\nA `RunResponse` object containing the selected outputs (or all if not specified) of the executed flow\\nand the session ID.\\nThe structure of the response accommodates multiple inputs, providing a nested list of outputs for each input.\\n\\n### Raises:\\nHTTPException: Indicates issues with finding the specified flow, invalid input formats, or internal errors during\\nflow execution.\\n\\n### Example usage:\\n```json\\nPOST /run/flow_id\\nx-api-key: YOUR_API_KEY\\nPayload:\\n{\\n \\"inputs\\": [\\n {\\"components\\": [\\"component1\\"], \\"input_value\\": \\"value1\\"},\\n {\\"components\\": [\\"component3\\"], \\"input_value\\": \\"value2\\"}\\n ],\\n \\"outputs\\": [\\"Component Name\\", \\"component_id\\"],\\n \\"tweaks\\": {\\"parameter_name\\": \\"value\\", \\"Component Name\\": {\\"parameter_name\\": \\"value\\"}, \\"component_id\\": {\\"parameter_name\\": \\"value\\"}}\\n \\"stream\\": false\\n}\\n```\\n\\nThis endpoint facilitates complex flow executions with customized inputs, outputs, and configurations,\\ncatering to diverse application requirements.","type":"text/plain"},"url":{"path":["api","v1","run","advanced",":flow_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"description":{"content":"(Required) ","type":"text/plain"},"type":"any","value":"","key":"flow_id"}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\\n \\"inputs\\": [\\n {\\n \\"components\\": [\\n \\"\\",\\n \\"\\"\\n ],\\n \\"input_value\\": \\"\\",\\n \\"session\\": \\"\\",\\n \\"type\\": \\"\\"\\n },\\n {\\n \\"components\\": [\\n \\"\\",\\n \\"\\"\\n ],\\n \\"input_value\\": \\"\\",\\n \\"session\\": \\"\\",\\n \\"type\\": \\"\\"\\n }\\n ],\\n \\"outputs\\": [\\n \\"\\",\\n \\"\\"\\n ],\\n \\"tweaks\\": {\\n \\"ut30\\": \\"\\"\\n },\\n \\"stream\\": false,\\n \\"session_id\\": \\"\\"\\n}","options":{"raw":{"language":"json"}}},"auth":{"type":"apikey","apikey":[{"type":"any","value":"x-api-key","key":"key"},{"type":"any","value":"{{apiKey}}","key":"value"},{"type":"any","value":"query","key":"in"}]}}},"source":"@site/openapi.json","sourceDirName":".","permalink":"/api/experimental-run-flow","previous":{"title":"Webhook Run Flow","permalink":"/api/webhook-run-flow"},"next":{"title":"Process","permalink":"/api/process"}}');var i=n(74848),o=n(28453);const a={},l="Experimental Run Flow",r=[{value:"Parameters:",id:"parameters",level:3},{value:"Returns:",id:"returns",level:3},{value:"Raises:",id:"raises",level:3},{value:"Example usage:",id:"example-usage",level:3}];function p(e){const t={code:"code",h1:"h1",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",ul:"ul",...(0,o.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.header,{children:(0,i.jsx)(t.h1,{id:"experimental-run-flow",children:"Experimental Run Flow"})}),"\n",(0,i.jsx)(t.p,{children:"Executes a specified flow by ID with optional input values, output selection, tweaks, and streaming capability."}),"\n",(0,i.jsx)(t.p,{children:"This endpoint supports running flows with caching to enhance performance and efficiency."}),"\n",(0,i.jsx)(t.h3,{id:"parameters",children:"Parameters:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"flow_id"})," (str): The unique identifier of the flow to be executed."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"inputs"})," (List[InputValueRequest], optional): A list of inputs specifying the input values and components\nfor the flow. Each input can target specific components and provide custom values."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"outputs"})," (List[str], optional): A list of output names to retrieve from the executed flow.\nIf not provided, all outputs are returned."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"tweaks"})," (Optional[Tweaks], optional): A dictionary of tweaks to customize the flow execution.\nThe tweaks can be used to modify the flow's parameters and components.\nTweaks can be overridden by the input values."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"stream"})," (bool, optional): Specifies whether the results should be streamed. Defaults to False."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"session_id"})," (Union[None, str], optional): An optional session ID to utilize existing session data for the flow\nexecution."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"api_key_user"})," (User): The user associated with the current API key. Automatically resolved from the API key."]}),"\n"]}),"\n",(0,i.jsx)(t.h3,{id:"returns",children:"Returns:"}),"\n",(0,i.jsxs)(t.p,{children:["A ",(0,i.jsx)(t.code,{children:"RunResponse"})," object containing the selected outputs (or all if not specified) of the executed flow\nand the session ID.\nThe structure of the response accommodates multiple inputs, providing a nested list of outputs for each input."]}),"\n",(0,i.jsx)(t.h3,{id:"raises",children:"Raises:"}),"\n",(0,i.jsx)(t.p,{children:"HTTPException: Indicates issues with finding the specified flow, invalid input formats, or internal errors during\nflow execution."}),"\n",(0,i.jsx)(t.h3,{id:"example-usage",children:"Example usage:"}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-json",children:'POST /run/flow_id\nx-api-key: YOUR_API_KEY\nPayload:\n{\n "inputs": [\n {"components": ["component1"], "input_value": "value1"},\n {"components": ["component3"], "input_value": "value2"}\n ],\n "outputs": ["Component Name", "component_id"],\n "tweaks": {"parameter_name": "value", "Component Name": {"parameter_name": "value"}, "component_id": {"parameter_name": "value"}}\n "stream": false\n}\n'})}),"\n",(0,i.jsx)(t.p,{children:"This endpoint facilitates complex flow executions with customized inputs, outputs, and configurations,\ncatering to diverse application requirements."}),"\n",(0,i.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,i.jsx)("thead",{children:(0,i.jsx)("tr",{children:(0,i.jsx)("th",{style:{textAlign:"left"},children:"Path Parameters"})})}),(0,i.jsx)("tbody",{children:(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"flow_id"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" uuid"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,i.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-required)"},children:" REQUIRED"})]})})})]}),"\n",(0,i.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,i.jsx)("thead",{children:(0,i.jsx)("tr",{children:(0,i.jsxs)("th",{style:{textAlign:"left"},children:[(0,i.jsx)("span",{children:"Request Body "}),(0,i.jsx)("div",{})]})})}),(0,i.jsxs)("tbody",{children:[(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"inputs"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Inputs"})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"outputs"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Outputs"})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"tweaks"}),(0,i.jsx)("span",{style:{opacity:"0.6"}})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"stream"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Stream"})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"session_id"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Session Id"})]})})]})]}),"\n",(0,i.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,i.jsx)("thead",{children:(0,i.jsx)("tr",{children:(0,i.jsx)("th",{style:{textAlign:"left"},children:"Responses"})})}),(0,i.jsxs)("tbody",{children:[(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsxs)("div",{style:{display:"flex"},children:[(0,i.jsx)("div",{style:{marginRight:"var(--ifm-table-cell-padding)"},children:(0,i.jsx)("code",{children:"200"})}),(0,i.jsx)("div",{children:(0,i.jsx)(t.p,{children:"Successful Response"})})]}),(0,i.jsx)("div",{children:(0,i.jsxs)("table",{style:{display:"table",width:"100%",marginTop:"var(--ifm-table-cell-padding)",marginBottom:"0px"},children:[(0,i.jsx)("thead",{children:(0,i.jsx)("tr",{children:(0,i.jsxs)("th",{style:{textAlign:"left"},children:[(0,i.jsx)("span",{children:"Schema "}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,i.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"}),(0,i.jsx)("div",{})]})})}),(0,i.jsxs)("tbody",{children:[(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"outputs"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Outputs"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,i.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"session_id"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Session Id"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,i.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"})]})})]})]})})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsxs)("div",{style:{display:"flex"},children:[(0,i.jsx)("div",{style:{marginRight:"var(--ifm-table-cell-padding)"},children:(0,i.jsx)("code",{children:"422"})}),(0,i.jsx)("div",{children:(0,i.jsx)(t.p,{children:"Validation Error"})})]}),(0,i.jsx)("div",{children:(0,i.jsxs)("table",{style:{display:"table",width:"100%",marginTop:"var(--ifm-table-cell-padding)",marginBottom:"0px"},children:[(0,i.jsx)("thead",{children:(0,i.jsx)("tr",{children:(0,i.jsxs)("th",{style:{textAlign:"left"},children:[(0,i.jsx)("span",{children:"Schema "}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,i.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"}),(0,i.jsx)("div",{})]})})}),(0,i.jsx)("tbody",{children:(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"detail"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" object[]"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,i.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"}),(0,i.jsx)("table",{style:{display:"table",width:"100%",marginTop:"var(--ifm-table-cell-padding)",marginBottom:"0px"},children:(0,i.jsxs)("tbody",{children:[(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"loc"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" undefined[]"})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"msg"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Message"})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"type"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Error Type"})]})})]})})]})})})]})})]})})]})]})]})}function d(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(p,{...e})}):p(e)}}}]); \ No newline at end of file +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[8504],{28453:(e,t,n)=>{n.d(t,{R:()=>a,x:()=>l});var s=n(96540);const i={},o=s.createContext(i);function a(e){const t=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),s.createElement(o.Provider,{value:t},e.children)}},94910:(e,t,n)=>{n.r(t),n.d(t,{contentTitle:()=>l,default:()=>d,frontMatter:()=>a,metadata:()=>s,toc:()=>r});const s=JSON.parse('{"type":"api","id":"experimental-run-flow","title":"Experimental Run Flow","description":"","slug":"/experimental-run-flow","frontMatter":{},"api":{"tags":["Base"],"description":"Executes a specified flow by ID with optional input values, output selection, tweaks, and streaming capability.\\n\\nThis endpoint supports running flows with caching to enhance performance and efficiency.\\n\\n### Parameters:\\n- `flow_id` (str): The unique identifier of the flow to be executed.\\n- `inputs` (List[InputValueRequest], optional): A list of inputs specifying the input values and components\\n for the flow. Each input can target specific components and provide custom values.\\n- `outputs` (List[str], optional): A list of output names to retrieve from the executed flow.\\n If not provided, all outputs are returned.\\n- `tweaks` (Optional[Tweaks], optional): A dictionary of tweaks to customize the flow execution.\\n The tweaks can be used to modify the flow\'s parameters and components.\\n Tweaks can be overridden by the input values.\\n- `stream` (bool, optional): Specifies whether the results should be streamed. Defaults to False.\\n- `session_id` (Union[None, str], optional): An optional session ID to utilize existing session data for the flow\\n execution.\\n- `api_key_user` (User): The user associated with the current API key. Automatically resolved from the API key.\\n\\n### Returns:\\nA `RunResponse` object containing the selected outputs (or all if not specified) of the executed flow\\nand the session ID.\\nThe structure of the response accommodates multiple inputs, providing a nested list of outputs for each input.\\n\\n### Raises:\\nHTTPException: Indicates issues with finding the specified flow, invalid input formats, or internal errors during\\nflow execution.\\n\\n### Example usage:\\n```json\\nPOST /run/flow_id\\nx-api-key: YOUR_API_KEY\\nPayload:\\n{\\n \\"inputs\\": [\\n {\\"components\\": [\\"component1\\"], \\"input_value\\": \\"value1\\"},\\n {\\"components\\": [\\"component3\\"], \\"input_value\\": \\"value2\\"}\\n ],\\n \\"outputs\\": [\\"Component Name\\", \\"component_id\\"],\\n \\"tweaks\\": {\\"parameter_name\\": \\"value\\", \\"Component Name\\": {\\"parameter_name\\": \\"value\\"}, \\"component_id\\": {\\"parameter_name\\": \\"value\\"}}\\n \\"stream\\": false\\n}\\n```\\n\\nThis endpoint facilitates complex flow executions with customized inputs, outputs, and configurations,\\ncatering to diverse application requirements.","operationId":"experimental_run_flow_api_v1_run_advanced__flow_id__post","security":[{"API key query":[]},{"API key header":[]}],"parameters":[{"name":"flow_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Flow Id"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"inputs":{"anyOf":[{"items":{"properties":{"components":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Components","default":[]},"input_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Input Value"},"session":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"},"type":{"anyOf":[{"type":"string","enum":["chat","text","any"]},{"type":"null"}],"title":"Type","description":"Defines on which components the input value should be applied. \'any\' applies to all input components.","default":"any"}},"additionalProperties":false,"type":"object","title":"InputValueRequest","examples":[{"components":["components_id","Component Name"],"input_value":"input_value","session":"session_id"},{"components":["Component Name"],"input_value":"input_value"},{"input_value":"input_value"},{"components":["Component Name"],"input_value":"input_value","session":"session_id"},{"input_value":"input_value","session":"session_id"},{"input_value":"input_value","type":"chat"},{"input_value":"{\\"key\\": \\"value\\"}","type":"json"}]},"type":"array"},{"type":"null"}],"title":"Inputs"},"outputs":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Outputs"},"tweaks":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"object"}]},"type":"object","title":"Tweaks","description":"A dictionary of tweaks to adjust the flow\'s execution. Allows customizing flow behavior dynamically. All tweaks are overridden by the input values.","examples":[{"Component Name":{"parameter_name":"value"},"component_id":{"parameter_name":"value"},"parameter_name":"value"}]},{"type":"null"}]},"stream":{"type":"boolean","title":"Stream","default":false},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"}},"type":"object","title":"Body_experimental_run_flow_api_v1_run_advanced__flow_id__post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"outputs":{"anyOf":[{"items":{"properties":{"inputs":{"type":"object","title":"Inputs"},"outputs":{"items":{"anyOf":[{"properties":{"results":{"anyOf":[{},{"type":"null"}],"title":"Results"},"artifacts":{"anyOf":[{},{"type":"null"}],"title":"Artifacts"},"outputs":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Outputs"},"logs":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Logs"},"messages":{"anyOf":[{"items":{"properties":{"message":{"anyOf":[{"type":"string"},{"items":{"anyOf":[{"type":"string"},{"type":"object"}]},"type":"array"}],"title":"Message"},"sender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sender","default":"Machine"},"sender_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sender Name","default":"AI"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"stream_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stream Url"},"component_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Component Id"},"files":{"items":{"properties":{"path":{"type":"string","title":"Path"},"name":{"type":"string","title":"Name"},"type":{"type":"string","title":"Type"}},"type":"object","required":["path","name","type"],"title":"File","description":"File schema."},"type":"array","title":"Files","default":[]},"type":{"type":"string","title":"Type"}},"type":"object","required":["message","type"],"title":"ChatOutputResponse","description":"Chat output response schema."},"type":"array"},{"type":"null"}],"title":"Messages"},"timedelta":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Timedelta"},"duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Duration"},"component_display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Component Display Name"},"component_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Component Id"},"used_frozen_result":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Used Frozen Result","default":false}},"type":"object","title":"ResultData"},{"type":"null"}]},"type":"array","title":"Outputs"}},"type":"object","title":"RunOutputs"},"type":"array"},{"type":"null"}],"title":"Outputs","default":[]},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"}},"type":"object","title":"RunResponse","description":"Run response schema."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}}}}},"method":"post","path":"/api/v1/run/advanced/{flow_id}","securitySchemes":{"OAuth2PasswordBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"api/v1/login"}}},"API key query":{"type":"apiKey","in":"query","name":"x-api-key"},"API key header":{"type":"apiKey","in":"header","name":"x-api-key"}},"jsonRequestBodyExample":{"stream":false},"info":{"title":"Langflow","version":"1.3.4"},"postman":{"name":"Experimental Run Flow","description":{"content":"Executes a specified flow by ID with optional input values, output selection, tweaks, and streaming capability.\\n\\nThis endpoint supports running flows with caching to enhance performance and efficiency.\\n\\n### Parameters:\\n- `flow_id` (str): The unique identifier of the flow to be executed.\\n- `inputs` (List[InputValueRequest], optional): A list of inputs specifying the input values and components\\n for the flow. Each input can target specific components and provide custom values.\\n- `outputs` (List[str], optional): A list of output names to retrieve from the executed flow.\\n If not provided, all outputs are returned.\\n- `tweaks` (Optional[Tweaks], optional): A dictionary of tweaks to customize the flow execution.\\n The tweaks can be used to modify the flow\'s parameters and components.\\n Tweaks can be overridden by the input values.\\n- `stream` (bool, optional): Specifies whether the results should be streamed. Defaults to False.\\n- `session_id` (Union[None, str], optional): An optional session ID to utilize existing session data for the flow\\n execution.\\n- `api_key_user` (User): The user associated with the current API key. Automatically resolved from the API key.\\n\\n### Returns:\\nA `RunResponse` object containing the selected outputs (or all if not specified) of the executed flow\\nand the session ID.\\nThe structure of the response accommodates multiple inputs, providing a nested list of outputs for each input.\\n\\n### Raises:\\nHTTPException: Indicates issues with finding the specified flow, invalid input formats, or internal errors during\\nflow execution.\\n\\n### Example usage:\\n```json\\nPOST /run/flow_id\\nx-api-key: YOUR_API_KEY\\nPayload:\\n{\\n \\"inputs\\": [\\n {\\"components\\": [\\"component1\\"], \\"input_value\\": \\"value1\\"},\\n {\\"components\\": [\\"component3\\"], \\"input_value\\": \\"value2\\"}\\n ],\\n \\"outputs\\": [\\"Component Name\\", \\"component_id\\"],\\n \\"tweaks\\": {\\"parameter_name\\": \\"value\\", \\"Component Name\\": {\\"parameter_name\\": \\"value\\"}, \\"component_id\\": {\\"parameter_name\\": \\"value\\"}}\\n \\"stream\\": false\\n}\\n```\\n\\nThis endpoint facilitates complex flow executions with customized inputs, outputs, and configurations,\\ncatering to diverse application requirements.","type":"text/plain"},"url":{"path":["api","v1","run","advanced",":flow_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"description":{"content":"(Required) ","type":"text/plain"},"type":"any","value":"","key":"flow_id"}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\\n \\"inputs\\": [\\n {\\n \\"components\\": [\\n \\"\\",\\n \\"\\"\\n ],\\n \\"input_value\\": \\"\\",\\n \\"session\\": \\"\\",\\n \\"type\\": \\"\\"\\n },\\n {\\n \\"components\\": [\\n \\"\\",\\n \\"\\"\\n ],\\n \\"input_value\\": \\"\\",\\n \\"session\\": \\"\\",\\n \\"type\\": \\"\\"\\n }\\n ],\\n \\"outputs\\": [\\n \\"\\",\\n \\"\\"\\n ],\\n \\"tweaks\\": {\\n \\"laboris_5\\": \\"\\"\\n },\\n \\"stream\\": false,\\n \\"session_id\\": \\"\\"\\n}","options":{"raw":{"language":"json"}}},"auth":{"type":"apikey","apikey":[{"type":"any","value":"x-api-key","key":"key"},{"type":"any","value":"{{apiKey}}","key":"value"},{"type":"any","value":"query","key":"in"}]}}},"source":"@site/openapi.json","sourceDirName":".","permalink":"/api/experimental-run-flow","previous":{"title":"Webhook Run Flow","permalink":"/api/webhook-run-flow"},"next":{"title":"Process","permalink":"/api/process"}}');var i=n(74848),o=n(28453);const a={},l="Experimental Run Flow",r=[{value:"Parameters:",id:"parameters",level:3},{value:"Returns:",id:"returns",level:3},{value:"Raises:",id:"raises",level:3},{value:"Example usage:",id:"example-usage",level:3}];function p(e){const t={code:"code",h1:"h1",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",ul:"ul",...(0,o.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.header,{children:(0,i.jsx)(t.h1,{id:"experimental-run-flow",children:"Experimental Run Flow"})}),"\n",(0,i.jsx)(t.p,{children:"Executes a specified flow by ID with optional input values, output selection, tweaks, and streaming capability."}),"\n",(0,i.jsx)(t.p,{children:"This endpoint supports running flows with caching to enhance performance and efficiency."}),"\n",(0,i.jsx)(t.h3,{id:"parameters",children:"Parameters:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"flow_id"})," (str): The unique identifier of the flow to be executed."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"inputs"})," (List[InputValueRequest], optional): A list of inputs specifying the input values and components\nfor the flow. Each input can target specific components and provide custom values."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"outputs"})," (List[str], optional): A list of output names to retrieve from the executed flow.\nIf not provided, all outputs are returned."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"tweaks"})," (Optional[Tweaks], optional): A dictionary of tweaks to customize the flow execution.\nThe tweaks can be used to modify the flow's parameters and components.\nTweaks can be overridden by the input values."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"stream"})," (bool, optional): Specifies whether the results should be streamed. Defaults to False."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"session_id"})," (Union[None, str], optional): An optional session ID to utilize existing session data for the flow\nexecution."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"api_key_user"})," (User): The user associated with the current API key. Automatically resolved from the API key."]}),"\n"]}),"\n",(0,i.jsx)(t.h3,{id:"returns",children:"Returns:"}),"\n",(0,i.jsxs)(t.p,{children:["A ",(0,i.jsx)(t.code,{children:"RunResponse"})," object containing the selected outputs (or all if not specified) of the executed flow\nand the session ID.\nThe structure of the response accommodates multiple inputs, providing a nested list of outputs for each input."]}),"\n",(0,i.jsx)(t.h3,{id:"raises",children:"Raises:"}),"\n",(0,i.jsx)(t.p,{children:"HTTPException: Indicates issues with finding the specified flow, invalid input formats, or internal errors during\nflow execution."}),"\n",(0,i.jsx)(t.h3,{id:"example-usage",children:"Example usage:"}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-json",children:'POST /run/flow_id\nx-api-key: YOUR_API_KEY\nPayload:\n{\n "inputs": [\n {"components": ["component1"], "input_value": "value1"},\n {"components": ["component3"], "input_value": "value2"}\n ],\n "outputs": ["Component Name", "component_id"],\n "tweaks": {"parameter_name": "value", "Component Name": {"parameter_name": "value"}, "component_id": {"parameter_name": "value"}}\n "stream": false\n}\n'})}),"\n",(0,i.jsx)(t.p,{children:"This endpoint facilitates complex flow executions with customized inputs, outputs, and configurations,\ncatering to diverse application requirements."}),"\n",(0,i.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,i.jsx)("thead",{children:(0,i.jsx)("tr",{children:(0,i.jsx)("th",{style:{textAlign:"left"},children:"Path Parameters"})})}),(0,i.jsx)("tbody",{children:(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"flow_id"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" uuid"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,i.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-required)"},children:" REQUIRED"})]})})})]}),"\n",(0,i.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,i.jsx)("thead",{children:(0,i.jsx)("tr",{children:(0,i.jsxs)("th",{style:{textAlign:"left"},children:[(0,i.jsx)("span",{children:"Request Body "}),(0,i.jsx)("div",{})]})})}),(0,i.jsxs)("tbody",{children:[(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"inputs"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Inputs"})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"outputs"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Outputs"})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"tweaks"}),(0,i.jsx)("span",{style:{opacity:"0.6"}})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"stream"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Stream"})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"session_id"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Session Id"})]})})]})]}),"\n",(0,i.jsxs)("table",{style:{display:"table",width:"100%"},children:[(0,i.jsx)("thead",{children:(0,i.jsx)("tr",{children:(0,i.jsx)("th",{style:{textAlign:"left"},children:"Responses"})})}),(0,i.jsxs)("tbody",{children:[(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsxs)("div",{style:{display:"flex"},children:[(0,i.jsx)("div",{style:{marginRight:"var(--ifm-table-cell-padding)"},children:(0,i.jsx)("code",{children:"200"})}),(0,i.jsx)("div",{children:(0,i.jsx)(t.p,{children:"Successful Response"})})]}),(0,i.jsx)("div",{children:(0,i.jsxs)("table",{style:{display:"table",width:"100%",marginTop:"var(--ifm-table-cell-padding)",marginBottom:"0px"},children:[(0,i.jsx)("thead",{children:(0,i.jsx)("tr",{children:(0,i.jsxs)("th",{style:{textAlign:"left"},children:[(0,i.jsx)("span",{children:"Schema "}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,i.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"}),(0,i.jsx)("div",{})]})})}),(0,i.jsxs)("tbody",{children:[(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"outputs"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Outputs"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,i.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"session_id"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Session Id"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,i.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"})]})})]})]})})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsxs)("div",{style:{display:"flex"},children:[(0,i.jsx)("div",{style:{marginRight:"var(--ifm-table-cell-padding)"},children:(0,i.jsx)("code",{children:"422"})}),(0,i.jsx)("div",{children:(0,i.jsx)(t.p,{children:"Validation Error"})})]}),(0,i.jsx)("div",{children:(0,i.jsxs)("table",{style:{display:"table",width:"100%",marginTop:"var(--ifm-table-cell-padding)",marginBottom:"0px"},children:[(0,i.jsx)("thead",{children:(0,i.jsx)("tr",{children:(0,i.jsxs)("th",{style:{textAlign:"left"},children:[(0,i.jsx)("span",{children:"Schema "}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,i.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"}),(0,i.jsx)("div",{})]})})}),(0,i.jsx)("tbody",{children:(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"detail"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" object[]"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" \u2014 "}),(0,i.jsx)("strong",{style:{fontSize:"var(--ifm-code-font-size)",color:"var(--openapi-optional)"},children:" OPTIONAL"}),(0,i.jsx)("table",{style:{display:"table",width:"100%",marginTop:"var(--ifm-table-cell-padding)",marginBottom:"0px"},children:(0,i.jsxs)("tbody",{children:[(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"loc"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" undefined[]"})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"msg"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Message"})]})}),(0,i.jsx)("tr",{children:(0,i.jsxs)("td",{children:[(0,i.jsx)("code",{children:"type"}),(0,i.jsx)("span",{style:{opacity:"0.6"},children:" Error Type"})]})})]})})]})})})]})})]})})]})]})]})}function d(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(p,{...e})}):p(e)}}}]); \ No newline at end of file diff --git a/assets/js/runtime~main.238d136b.js b/assets/js/runtime~main.20202ec2.js similarity index 80% rename from assets/js/runtime~main.238d136b.js rename to assets/js/runtime~main.20202ec2.js index 0c8f6758c5..ffb1ff7db6 100644 --- a/assets/js/runtime~main.238d136b.js +++ b/assets/js/runtime~main.20202ec2.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,f,c,b,d={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var f=t[e]={id:e,loaded:!1,exports:{}};return d[e].call(f.exports,f,f.exports,r),f.loaded=!0,f.exports}r.m=d,r.c=t,e=[],r.O=(a,f,c,b)=>{if(!f){var d=1/0;for(i=0;i=b)&&Object.keys(r.O).every((e=>r.O[e](f[o])))?f.splice(o--,1):(t=!1,b0&&e[i-1][2]>b;i--)e[i]=e[i-1];e[i]=[f,c,b]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,c){if(1&c&&(e=this(e)),8&c)return e;if("object"==typeof e&&e){if(4&c&&e.__esModule)return e;if(16&c&&"function"==typeof e.then)return e}var b=Object.create(null);r.r(b);var d={};a=a||[null,f({}),f([]),f(f)];for(var t=2&c&&e;"object"==typeof t&&!~a.indexOf(t);t=f(t))Object.getOwnPropertyNames(t).forEach((a=>d[a]=()=>e[a]));return d.default=()=>e,r.d(b,d),b},r.d=(e,a)=>{for(var f in a)r.o(a,f)&&!r.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,f)=>(r.f[f](e,a),a)),[])),r.u=e=>"assets/js/"+({51:"b7251463",145:"0be1d5fe",191:"c643a6d5",230:"bc63ae25",265:"d3ca7a96",321:"6e1a9721",417:"93e16042",444:"14f42f9e",730:"86b18dd0",762:"4af57a32",768:"6d684b63",787:"672a0eba",800:"a4c0ff01",868:"dc7b1ef3",944:"d3600190",957:"c141421f",964:"05d835b4",982:"021496c4",1022:"8a61012d",1035:"24d32e91",1067:"4b04f5bc",1079:"f5818e36",1185:"c2de64b8",1227:"647965d5",1394:"8054effa",1488:"ac3cc3f5",1500:"1e9025f7",1556:"264ffc80",1563:"3ef76b56",1567:"22dd74f7",1625:"92852ade",1690:"41a97a99",1841:"de94873f",1845:"2ab0d4f5",1956:"fe6f9601",2008:"7ad92a12",2073:"7b7db446",2097:"338a6f8e",2138:"1a4e3797",2273:"e756fa26",2288:"faf7ef88",2551:"394022bb",2624:"8ff68e6f",2657:"a3ab51d1",2777:"b3ba68b4",2818:"a9b73094",3040:"2148ae42",3110:"6a2beaac",3247:"bd7ab245",3327:"6aa941bb",3347:"b5257597",3391:"f66238ae",3576:"64045095",3694:"c2b1730c",3740:"f113d167",3758:"a963b3cb",3832:"c3d82421",3859:"7679ca6e",3917:"c8dad5f1",3964:"829ff4d2",3968:"0e5205b8",4028:"c2ebd62a",4046:"9ac856ad",4133:"5cf11f26",4526:"8311683c",4615:"6801371f",4633:"c563aec0",4645:"fef056e9",4778:"e189eece",4784:"438e4337",4806:"fba42286",4841:"8298c1cb",4891:"ca67d85f",4930:"d2ad385b",4931:"a9b4f8aa",4954:"a71efd4a",4973:"2d2c4fcb",5107:"10156854",5109:"3542ed72",5138:"309383dc",5179:"41e3c105",5195:"b1ab2a41",5281:"a0511a5b",5284:"64ca91f1",5304:"7dbff1af",5339:"9447891f",5395:"98058046",5425:"ee32130c",5467:"40d13080",5474:"d175aa8b",5475:"18f3809a",5513:"20d49d07",5514:"02955c09",5562:"20e9af62",5572:"873ebc27",5628:"a83bc7c0",5634:"9822a706",5647:"885eb549",5673:"73af8c33",5716:"946d1cee",5718:"5ccf4833",5742:"aba21aa0",5772:"4e7126f8",5865:"e1766139",5866:"3b577cbb",5883:"61cfab8e",5894:"f178e9b3",5979:"a3a1efc2",6003:"4d983c8e",6008:"445668ec",6053:"dfc50084",6066:"3f19c00a",6080:"4d15791b",6147:"ab17fe15",6201:"9ab37888",6214:"b1220dbd",6281:"c96ce3ed",6332:"873508e7",6350:"188ee668",6419:"96eb0e67",6445:"9fb9a766",6473:"4c5e977b",6511:"320c2db0",6550:"05fbee1a",6559:"6f13807a",6682:"5a6d6120",6890:"8b85e1d0",6920:"c817e236",6934:"d745f4e6",6949:"b36bb719",7088:"91282a5c",7098:"a7bd4aaa",7108:"688feaef",7118:"4ce9199e",7142:"d0c1f670",7159:"aecfdd3d",7165:"547df4a1",7211:"cacdc615",7338:"c39b795e",7339:"7a774ddf",7408:"3ae94ad4",7453:"fdefa9a8",7462:"921b5fc1",7472:"744aaf8b",7507:"be76515e",7713:"3a82b27e",7894:"0f44198a",8031:"25bf2d67",8054:"85112c90",8064:"274fd934",8085:"cc44357e",8102:"019dbd1f",8184:"222029a9",8188:"ecd67556",8196:"75a9e1e0",8208:"216e3ed7",8245:"5e834a3c",8298:"153f2b62",8304:"73d1a090",8356:"c6a5eaec",8374:"261f8123",8401:"17896441",8504:"e6c6a4d2",8598:"44dfcf75",8661:"8f774222",8679:"3705a9c0",8921:"45476a69",8927:"ae68aa8b",8929:"172b3cfb",8953:"adef6868",8977:"e5eb12ce",9036:"850d3674",9048:"a94703ab",9099:"b1bc5ffe",9126:"169603ea",9141:"19136925",9306:"667d0790",9371:"991799c5",9431:"cd8dccb5",9453:"913561e8",9455:"54175a6c",9476:"57c9a2b8",9479:"4e038a6a",9483:"7823fa72",9555:"dedd5914",9619:"29b8e27a",9642:"eae80ce0",9647:"5e95c892",9681:"5ff9f4db",9705:"ee3b5967",9751:"25255263",9789:"537e1953",9836:"b3c57e4b",9905:"43df3697"}[e]||e)+"."+{51:"41498688",145:"b11d2d19",191:"2bae48f1",230:"84fd9c8d",265:"b19b815e",321:"be1bba15",417:"d44a3301",444:"6c4c3b09",730:"e24ec551",756:"240f2e9c",762:"f26eeca8",768:"9f6e007c",787:"9a1de1a3",800:"62f90b59",868:"43e6daba",900:"f83a9a5d",944:"ad8345f5",957:"da9e1d2b",964:"0af714e4",982:"9853829e",1022:"e9c465bb",1035:"c2ed48ac",1067:"1fc10d8a",1079:"812abec2",1185:"becf3f8a",1227:"efa89a5e",1394:"c6bf3115",1488:"0fd73816",1500:"ce3c2155",1556:"3b4cb9c7",1563:"892a275e",1567:"dc682ff7",1625:"14cdddbe",1690:"70f2fcf5",1809:"2ba71c72",1841:"2b011ec8",1845:"d9012454",1956:"df0c249e",2008:"7ff881a6",2073:"0a119e11",2097:"e2eb4320",2138:"02023697",2273:"8c679b2a",2288:"c860cf3b",2551:"2affcfca",2624:"be6ae30b",2657:"e301f410",2777:"e5097595",2818:"a12a157b",3040:"d5e98483",3042:"f1fb0b14",3110:"0cb7cba6",3247:"60a3cf4e",3327:"afdd620f",3347:"cad1b409",3391:"4d9b6bc5",3576:"85569c4d",3694:"b3375515",3740:"dcdb4594",3758:"72774151",3832:"caaff358",3859:"5206be4c",3917:"5b041d0c",3964:"33002324",3968:"6d49ed88",3997:"ff54fe17",4028:"6050659f",4046:"f7eca8e9",4058:"44d6af12",4133:"56fe7f12",4526:"46dbc5ed",4615:"82ac6ca0",4633:"2670172c",4645:"738e26df",4778:"677c7100",4784:"6f0477c6",4806:"0f85ccb8",4841:"96f5aab2",4891:"028b84a6",4930:"dfda092c",4931:"1f0853a9",4954:"3ee764ef",4973:"76d07199",5107:"834b40b5",5109:"534de25b",5138:"82fa1659",5179:"3a01e125",5195:"bebcd954",5281:"274e41a2",5284:"5ba358fc",5304:"11ff4120",5339:"f2d6d66a",5395:"155b5cc5",5425:"e3d3bacd",5467:"ea36d716",5474:"7bfcedc5",5475:"d430c771",5513:"9ee47fd7",5514:"4b31d3e9",5562:"10eed1f2",5572:"f7be1bf9",5628:"42006513",5634:"f0694192",5647:"1223eeb9",5673:"9e6c75bf",5716:"a6a99e6e",5718:"31276840",5742:"60b1d5b2",5772:"39c29abd",5865:"f19aeb98",5866:"24fce326",5883:"be0b7a4b",5894:"1eb32a42",5979:"bc33f247",6003:"1b762c05",6008:"5253986f",6053:"282a111f",6066:"076e5cc7",6080:"4c16e2f6",6147:"0bd0c5ae",6201:"01e4e67e",6214:"36f07cd2",6281:"0f993e93",6332:"82b6fb32",6350:"e3ef1aad",6419:"a4ac69bf",6445:"4782f40a",6473:"b5e32ff9",6511:"ba1e7472",6550:"5ba8d59c",6559:"175e0ba0",6682:"b23e427b",6890:"af012556",6920:"32ebf47d",6934:"b1764cb8",6949:"81ddd898",7088:"1f49a1ed",7098:"d9bb61a0",7108:"33a95549",7118:"67e70c99",7142:"1ab1d124",7159:"c7233aca",7165:"628c4fdd",7211:"2931db6c",7338:"b8b8ca64",7339:"341b74a4",7408:"ff99b619",7453:"bacf1bcd",7462:"57ad214f",7472:"0ff40a39",7507:"b5ebd895",7713:"7e880e1f",7894:"6aa722d7",8031:"d39ee16a",8054:"b01ef0b9",8064:"8479c14a",8085:"42d21f57",8102:"f87dbf62",8158:"20de8b80",8184:"05ecb008",8188:"219f4971",8196:"44d52b3d",8208:"c52abbdf",8245:"d723ee5e",8298:"6d11f562",8304:"818899b3",8356:"ff51d102",8374:"349c447e",8401:"bf953603",8504:"77f81efb",8598:"70cf61ed",8661:"cf70ad92",8679:"0cffe9bc",8913:"47209f3b",8921:"9f5ccac6",8927:"9d9ff467",8929:"99703724",8953:"f5324ebd",8977:"637025ee",9036:"d0d09670",9048:"810f8ad8",9099:"d785ef9f",9126:"7fa8d7d2",9141:"d3838c09",9306:"8ecb1a62",9371:"91236628",9431:"a391eb1d",9453:"087d9888",9455:"d3aec949",9476:"e9c48620",9479:"1dbfc60c",9483:"ea776824",9555:"ca8bb7aa",9619:"9f160532",9642:"167c6e45",9647:"e6d9c2b6",9681:"1f0feb15",9705:"871cbdcd",9729:"2f32331e",9751:"397cc7c0",9789:"02bccaec",9836:"69fcbaa3",9905:"83748fd4"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),c={},b="langflow-docs:",r.l=(e,a,f,d)=>{if(c[e])c[e].push(a);else{var t,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var b=c[e];if(delete c[e],t.parentNode&&t.parentNode.removeChild(t),b&&b.forEach((e=>e(f))),a)return a(f)},s=setTimeout(u.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=u.bind(null,t.onerror),t.onload=u.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r.p="/",r.gca=function(e){return e={10156854:"5107",17896441:"8401",19136925:"9141",25255263:"9751",64045095:"3576",98058046:"5395",b7251463:"51","0be1d5fe":"145",c643a6d5:"191",bc63ae25:"230",d3ca7a96:"265","6e1a9721":"321","93e16042":"417","14f42f9e":"444","86b18dd0":"730","4af57a32":"762","6d684b63":"768","672a0eba":"787",a4c0ff01:"800",dc7b1ef3:"868",d3600190:"944",c141421f:"957","05d835b4":"964","021496c4":"982","8a61012d":"1022","24d32e91":"1035","4b04f5bc":"1067",f5818e36:"1079",c2de64b8:"1185","647965d5":"1227","8054effa":"1394",ac3cc3f5:"1488","1e9025f7":"1500","264ffc80":"1556","3ef76b56":"1563","22dd74f7":"1567","92852ade":"1625","41a97a99":"1690",de94873f:"1841","2ab0d4f5":"1845",fe6f9601:"1956","7ad92a12":"2008","7b7db446":"2073","338a6f8e":"2097","1a4e3797":"2138",e756fa26:"2273",faf7ef88:"2288","394022bb":"2551","8ff68e6f":"2624",a3ab51d1:"2657",b3ba68b4:"2777",a9b73094:"2818","2148ae42":"3040","6a2beaac":"3110",bd7ab245:"3247","6aa941bb":"3327",b5257597:"3347",f66238ae:"3391",c2b1730c:"3694",f113d167:"3740",a963b3cb:"3758",c3d82421:"3832","7679ca6e":"3859",c8dad5f1:"3917","829ff4d2":"3964","0e5205b8":"3968",c2ebd62a:"4028","9ac856ad":"4046","5cf11f26":"4133","8311683c":"4526","6801371f":"4615",c563aec0:"4633",fef056e9:"4645",e189eece:"4778","438e4337":"4784",fba42286:"4806","8298c1cb":"4841",ca67d85f:"4891",d2ad385b:"4930",a9b4f8aa:"4931",a71efd4a:"4954","2d2c4fcb":"4973","3542ed72":"5109","309383dc":"5138","41e3c105":"5179",b1ab2a41:"5195",a0511a5b:"5281","64ca91f1":"5284","7dbff1af":"5304","9447891f":"5339",ee32130c:"5425","40d13080":"5467",d175aa8b:"5474","18f3809a":"5475","20d49d07":"5513","02955c09":"5514","20e9af62":"5562","873ebc27":"5572",a83bc7c0:"5628","9822a706":"5634","885eb549":"5647","73af8c33":"5673","946d1cee":"5716","5ccf4833":"5718",aba21aa0:"5742","4e7126f8":"5772",e1766139:"5865","3b577cbb":"5866","61cfab8e":"5883",f178e9b3:"5894",a3a1efc2:"5979","4d983c8e":"6003","445668ec":"6008",dfc50084:"6053","3f19c00a":"6066","4d15791b":"6080",ab17fe15:"6147","9ab37888":"6201",b1220dbd:"6214",c96ce3ed:"6281","873508e7":"6332","188ee668":"6350","96eb0e67":"6419","9fb9a766":"6445","4c5e977b":"6473","320c2db0":"6511","05fbee1a":"6550","6f13807a":"6559","5a6d6120":"6682","8b85e1d0":"6890",c817e236:"6920",d745f4e6:"6934",b36bb719:"6949","91282a5c":"7088",a7bd4aaa:"7098","688feaef":"7108","4ce9199e":"7118",d0c1f670:"7142",aecfdd3d:"7159","547df4a1":"7165",cacdc615:"7211",c39b795e:"7338","7a774ddf":"7339","3ae94ad4":"7408",fdefa9a8:"7453","921b5fc1":"7462","744aaf8b":"7472",be76515e:"7507","3a82b27e":"7713","0f44198a":"7894","25bf2d67":"8031","85112c90":"8054","274fd934":"8064",cc44357e:"8085","019dbd1f":"8102","222029a9":"8184",ecd67556:"8188","75a9e1e0":"8196","216e3ed7":"8208","5e834a3c":"8245","153f2b62":"8298","73d1a090":"8304",c6a5eaec:"8356","261f8123":"8374",e6c6a4d2:"8504","44dfcf75":"8598","8f774222":"8661","3705a9c0":"8679","45476a69":"8921",ae68aa8b:"8927","172b3cfb":"8929",adef6868:"8953",e5eb12ce:"8977","850d3674":"9036",a94703ab:"9048",b1bc5ffe:"9099","169603ea":"9126","667d0790":"9306","991799c5":"9371",cd8dccb5:"9431","913561e8":"9453","54175a6c":"9455","57c9a2b8":"9476","4e038a6a":"9479","7823fa72":"9483",dedd5914:"9555","29b8e27a":"9619",eae80ce0:"9642","5e95c892":"9647","5ff9f4db":"9681",ee3b5967:"9705","537e1953":"9789",b3c57e4b:"9836","43df3697":"9905"}[e]||e,r.p+r.u(e)},(()=>{var e={5354:0,1869:0};r.f.j=(a,f)=>{var c=r.o(e,a)?e[a]:void 0;if(0!==c)if(c)f.push(c[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var b=new Promise(((f,b)=>c=e[a]=[f,b]));f.push(c[2]=b);var d=r.p+r.u(a),t=new Error;r.l(d,(f=>{if(r.o(e,a)&&(0!==(c=e[a])&&(e[a]=void 0),c)){var b=f&&("load"===f.type?"missing":f.type),d=f&&f.target&&f.target.src;t.message="Loading chunk "+a+" failed.\n("+b+": "+d+")",t.name="ChunkLoadError",t.type=b,t.request=d,c[1](t)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,f)=>{var c,b,d=f[0],t=f[1],o=f[2],n=0;if(d.some((a=>0!==e[a]))){for(c in t)r.o(t,c)&&(r.m[c]=t[c]);if(o)var i=o(r)}for(a&&a(f);n{"use strict";var e,a,c,f,b,d={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var c=t[e]={id:e,loaded:!1,exports:{}};return d[e].call(c.exports,c,c.exports,r),c.loaded=!0,c.exports}r.m=d,r.c=t,e=[],r.O=(a,c,f,b)=>{if(!c){var d=1/0;for(i=0;i=b)&&Object.keys(r.O).every((e=>r.O[e](c[o])))?c.splice(o--,1):(t=!1,b0&&e[i-1][2]>b;i--)e[i]=e[i-1];e[i]=[c,f,b]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,f){if(1&f&&(e=this(e)),8&f)return e;if("object"==typeof e&&e){if(4&f&&e.__esModule)return e;if(16&f&&"function"==typeof e.then)return e}var b=Object.create(null);r.r(b);var d={};a=a||[null,c({}),c([]),c(c)];for(var t=2&f&&e;"object"==typeof t&&!~a.indexOf(t);t=c(t))Object.getOwnPropertyNames(t).forEach((a=>d[a]=()=>e[a]));return d.default=()=>e,r.d(b,d),b},r.d=(e,a)=>{for(var c in a)r.o(a,c)&&!r.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:a[c]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,c)=>(r.f[c](e,a),a)),[])),r.u=e=>"assets/js/"+({51:"b7251463",145:"0be1d5fe",191:"c643a6d5",230:"bc63ae25",265:"d3ca7a96",321:"6e1a9721",417:"93e16042",444:"14f42f9e",730:"86b18dd0",762:"4af57a32",768:"6d684b63",787:"672a0eba",800:"a4c0ff01",868:"dc7b1ef3",944:"d3600190",957:"c141421f",964:"05d835b4",982:"021496c4",1022:"8a61012d",1035:"24d32e91",1067:"4b04f5bc",1079:"f5818e36",1185:"c2de64b8",1227:"647965d5",1394:"8054effa",1488:"ac3cc3f5",1500:"1e9025f7",1556:"264ffc80",1563:"3ef76b56",1567:"22dd74f7",1625:"92852ade",1690:"41a97a99",1841:"de94873f",1845:"2ab0d4f5",1956:"fe6f9601",2008:"7ad92a12",2073:"7b7db446",2097:"338a6f8e",2138:"1a4e3797",2273:"e756fa26",2288:"faf7ef88",2551:"394022bb",2624:"8ff68e6f",2657:"a3ab51d1",2777:"b3ba68b4",2818:"a9b73094",3040:"2148ae42",3110:"6a2beaac",3247:"bd7ab245",3327:"6aa941bb",3347:"b5257597",3391:"f66238ae",3576:"64045095",3694:"c2b1730c",3740:"f113d167",3758:"a963b3cb",3832:"c3d82421",3859:"7679ca6e",3917:"c8dad5f1",3964:"829ff4d2",3968:"0e5205b8",4028:"c2ebd62a",4046:"9ac856ad",4133:"5cf11f26",4526:"8311683c",4615:"6801371f",4633:"c563aec0",4645:"fef056e9",4778:"e189eece",4784:"438e4337",4806:"fba42286",4841:"8298c1cb",4891:"ca67d85f",4930:"d2ad385b",4931:"a9b4f8aa",4954:"a71efd4a",4973:"2d2c4fcb",5107:"10156854",5109:"3542ed72",5138:"309383dc",5179:"41e3c105",5195:"b1ab2a41",5281:"a0511a5b",5284:"64ca91f1",5304:"7dbff1af",5339:"9447891f",5395:"98058046",5425:"ee32130c",5467:"40d13080",5474:"d175aa8b",5475:"18f3809a",5513:"20d49d07",5514:"02955c09",5562:"20e9af62",5572:"873ebc27",5628:"a83bc7c0",5634:"9822a706",5647:"885eb549",5673:"73af8c33",5716:"946d1cee",5718:"5ccf4833",5742:"aba21aa0",5772:"4e7126f8",5865:"e1766139",5866:"3b577cbb",5883:"61cfab8e",5894:"f178e9b3",5979:"a3a1efc2",6003:"4d983c8e",6008:"445668ec",6053:"dfc50084",6066:"3f19c00a",6080:"4d15791b",6147:"ab17fe15",6201:"9ab37888",6214:"b1220dbd",6281:"c96ce3ed",6332:"873508e7",6350:"188ee668",6419:"96eb0e67",6445:"9fb9a766",6473:"4c5e977b",6511:"320c2db0",6550:"05fbee1a",6559:"6f13807a",6682:"5a6d6120",6890:"8b85e1d0",6920:"c817e236",6934:"d745f4e6",6949:"b36bb719",7088:"91282a5c",7098:"a7bd4aaa",7108:"688feaef",7118:"4ce9199e",7142:"d0c1f670",7159:"aecfdd3d",7165:"547df4a1",7211:"cacdc615",7338:"c39b795e",7339:"7a774ddf",7408:"3ae94ad4",7453:"fdefa9a8",7462:"921b5fc1",7472:"744aaf8b",7507:"be76515e",7713:"3a82b27e",7894:"0f44198a",8031:"25bf2d67",8054:"85112c90",8064:"274fd934",8085:"cc44357e",8102:"019dbd1f",8184:"222029a9",8188:"ecd67556",8196:"75a9e1e0",8208:"216e3ed7",8245:"5e834a3c",8298:"153f2b62",8304:"73d1a090",8356:"c6a5eaec",8374:"261f8123",8401:"17896441",8504:"e6c6a4d2",8598:"44dfcf75",8661:"8f774222",8679:"3705a9c0",8921:"45476a69",8927:"ae68aa8b",8929:"172b3cfb",8953:"adef6868",8977:"e5eb12ce",9036:"850d3674",9048:"a94703ab",9099:"b1bc5ffe",9126:"169603ea",9141:"19136925",9306:"667d0790",9371:"991799c5",9431:"cd8dccb5",9453:"913561e8",9455:"54175a6c",9476:"57c9a2b8",9479:"4e038a6a",9483:"7823fa72",9555:"dedd5914",9619:"29b8e27a",9642:"eae80ce0",9647:"5e95c892",9681:"5ff9f4db",9705:"ee3b5967",9751:"25255263",9789:"537e1953",9836:"b3c57e4b",9905:"43df3697"}[e]||e)+"."+{51:"41498688",145:"b11d2d19",191:"2bae48f1",230:"84fd9c8d",265:"b19b815e",321:"be1bba15",417:"d44a3301",444:"6c4c3b09",730:"e24ec551",756:"240f2e9c",762:"f26eeca8",768:"9f6e007c",787:"9a1de1a3",800:"62f90b59",868:"43e6daba",900:"f83a9a5d",944:"ad8345f5",957:"da9e1d2b",964:"0af714e4",982:"9853829e",1022:"e9c465bb",1035:"c2ed48ac",1067:"1fc10d8a",1079:"812abec2",1185:"becf3f8a",1227:"efa89a5e",1394:"c6bf3115",1488:"0fd73816",1500:"ce3c2155",1556:"3b4cb9c7",1563:"892a275e",1567:"dc682ff7",1625:"14cdddbe",1690:"70f2fcf5",1809:"2ba71c72",1841:"2b011ec8",1845:"0d71373d",1956:"df0c249e",2008:"7ff881a6",2073:"0a119e11",2097:"e2eb4320",2138:"02023697",2273:"8c679b2a",2288:"c860cf3b",2551:"2affcfca",2624:"be6ae30b",2657:"e301f410",2777:"e5097595",2818:"a12a157b",3040:"d5e98483",3042:"f1fb0b14",3110:"0cb7cba6",3247:"60a3cf4e",3327:"ea2cd923",3347:"cad1b409",3391:"4d9b6bc5",3576:"85569c4d",3694:"b3375515",3740:"dcdb4594",3758:"72774151",3832:"caaff358",3859:"5206be4c",3917:"5b041d0c",3964:"33002324",3968:"6d49ed88",3997:"ff54fe17",4028:"6050659f",4046:"f7eca8e9",4058:"44d6af12",4133:"56fe7f12",4526:"46dbc5ed",4615:"82ac6ca0",4633:"2670172c",4645:"738e26df",4778:"677c7100",4784:"6f0477c6",4806:"0f85ccb8",4841:"96f5aab2",4891:"028b84a6",4930:"dfda092c",4931:"1f0853a9",4954:"3ee764ef",4973:"76d07199",5107:"834b40b5",5109:"534de25b",5138:"82fa1659",5179:"3a01e125",5195:"bebcd954",5281:"274e41a2",5284:"5ba358fc",5304:"11ff4120",5339:"f2d6d66a",5395:"155b5cc5",5425:"e3d3bacd",5467:"ea36d716",5474:"7bfcedc5",5475:"d430c771",5513:"9ee47fd7",5514:"4b31d3e9",5562:"10eed1f2",5572:"f7be1bf9",5628:"42006513",5634:"f0694192",5647:"1223eeb9",5673:"9e6c75bf",5716:"a6a99e6e",5718:"31276840",5742:"60b1d5b2",5772:"39c29abd",5865:"f19aeb98",5866:"24fce326",5883:"be0b7a4b",5894:"1eb32a42",5979:"bc33f247",6003:"1b762c05",6008:"5253986f",6053:"282a111f",6066:"076e5cc7",6080:"4c16e2f6",6147:"0bd0c5ae",6201:"01e4e67e",6214:"36f07cd2",6281:"0f993e93",6332:"82b6fb32",6350:"e3ef1aad",6419:"a4ac69bf",6445:"4782f40a",6473:"b5e32ff9",6511:"ba1e7472",6550:"5ba8d59c",6559:"175e0ba0",6682:"b23e427b",6890:"af012556",6920:"32ebf47d",6934:"b1764cb8",6949:"81ddd898",7088:"1f49a1ed",7098:"d9bb61a0",7108:"33a95549",7118:"67e70c99",7142:"1ab1d124",7159:"c7233aca",7165:"628c4fdd",7211:"2931db6c",7338:"b8b8ca64",7339:"341b74a4",7408:"ff99b619",7453:"bacf1bcd",7462:"57ad214f",7472:"0ff40a39",7507:"b5ebd895",7713:"7e880e1f",7894:"6aa722d7",8031:"d39ee16a",8054:"b01ef0b9",8064:"8479c14a",8085:"42d21f57",8102:"f87dbf62",8158:"20de8b80",8184:"05ecb008",8188:"219f4971",8196:"44d52b3d",8208:"c52abbdf",8245:"d723ee5e",8298:"6d11f562",8304:"818899b3",8356:"ff51d102",8374:"349c447e",8401:"bf953603",8504:"3c5fee73",8598:"70cf61ed",8661:"cf70ad92",8679:"0cffe9bc",8913:"47209f3b",8921:"9f5ccac6",8927:"9d9ff467",8929:"99703724",8953:"f5324ebd",8977:"637025ee",9036:"d0d09670",9048:"810f8ad8",9099:"d785ef9f",9126:"7fa8d7d2",9141:"d3838c09",9306:"8ecb1a62",9371:"91236628",9431:"a391eb1d",9453:"087d9888",9455:"d3aec949",9476:"e9c48620",9479:"1dbfc60c",9483:"ea776824",9555:"ca8bb7aa",9619:"9f160532",9642:"167c6e45",9647:"e6d9c2b6",9681:"1f0feb15",9705:"871cbdcd",9729:"2f32331e",9751:"397cc7c0",9789:"02bccaec",9836:"69fcbaa3",9905:"83748fd4"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),f={},b="langflow-docs:",r.l=(e,a,c,d)=>{if(f[e])f[e].push(a);else{var t,o;if(void 0!==c)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var b=f[e];if(delete f[e],t.parentNode&&t.parentNode.removeChild(t),b&&b.forEach((e=>e(c))),a)return a(c)},s=setTimeout(u.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=u.bind(null,t.onerror),t.onload=u.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r.p="/",r.gca=function(e){return e={10156854:"5107",17896441:"8401",19136925:"9141",25255263:"9751",64045095:"3576",98058046:"5395",b7251463:"51","0be1d5fe":"145",c643a6d5:"191",bc63ae25:"230",d3ca7a96:"265","6e1a9721":"321","93e16042":"417","14f42f9e":"444","86b18dd0":"730","4af57a32":"762","6d684b63":"768","672a0eba":"787",a4c0ff01:"800",dc7b1ef3:"868",d3600190:"944",c141421f:"957","05d835b4":"964","021496c4":"982","8a61012d":"1022","24d32e91":"1035","4b04f5bc":"1067",f5818e36:"1079",c2de64b8:"1185","647965d5":"1227","8054effa":"1394",ac3cc3f5:"1488","1e9025f7":"1500","264ffc80":"1556","3ef76b56":"1563","22dd74f7":"1567","92852ade":"1625","41a97a99":"1690",de94873f:"1841","2ab0d4f5":"1845",fe6f9601:"1956","7ad92a12":"2008","7b7db446":"2073","338a6f8e":"2097","1a4e3797":"2138",e756fa26:"2273",faf7ef88:"2288","394022bb":"2551","8ff68e6f":"2624",a3ab51d1:"2657",b3ba68b4:"2777",a9b73094:"2818","2148ae42":"3040","6a2beaac":"3110",bd7ab245:"3247","6aa941bb":"3327",b5257597:"3347",f66238ae:"3391",c2b1730c:"3694",f113d167:"3740",a963b3cb:"3758",c3d82421:"3832","7679ca6e":"3859",c8dad5f1:"3917","829ff4d2":"3964","0e5205b8":"3968",c2ebd62a:"4028","9ac856ad":"4046","5cf11f26":"4133","8311683c":"4526","6801371f":"4615",c563aec0:"4633",fef056e9:"4645",e189eece:"4778","438e4337":"4784",fba42286:"4806","8298c1cb":"4841",ca67d85f:"4891",d2ad385b:"4930",a9b4f8aa:"4931",a71efd4a:"4954","2d2c4fcb":"4973","3542ed72":"5109","309383dc":"5138","41e3c105":"5179",b1ab2a41:"5195",a0511a5b:"5281","64ca91f1":"5284","7dbff1af":"5304","9447891f":"5339",ee32130c:"5425","40d13080":"5467",d175aa8b:"5474","18f3809a":"5475","20d49d07":"5513","02955c09":"5514","20e9af62":"5562","873ebc27":"5572",a83bc7c0:"5628","9822a706":"5634","885eb549":"5647","73af8c33":"5673","946d1cee":"5716","5ccf4833":"5718",aba21aa0:"5742","4e7126f8":"5772",e1766139:"5865","3b577cbb":"5866","61cfab8e":"5883",f178e9b3:"5894",a3a1efc2:"5979","4d983c8e":"6003","445668ec":"6008",dfc50084:"6053","3f19c00a":"6066","4d15791b":"6080",ab17fe15:"6147","9ab37888":"6201",b1220dbd:"6214",c96ce3ed:"6281","873508e7":"6332","188ee668":"6350","96eb0e67":"6419","9fb9a766":"6445","4c5e977b":"6473","320c2db0":"6511","05fbee1a":"6550","6f13807a":"6559","5a6d6120":"6682","8b85e1d0":"6890",c817e236:"6920",d745f4e6:"6934",b36bb719:"6949","91282a5c":"7088",a7bd4aaa:"7098","688feaef":"7108","4ce9199e":"7118",d0c1f670:"7142",aecfdd3d:"7159","547df4a1":"7165",cacdc615:"7211",c39b795e:"7338","7a774ddf":"7339","3ae94ad4":"7408",fdefa9a8:"7453","921b5fc1":"7462","744aaf8b":"7472",be76515e:"7507","3a82b27e":"7713","0f44198a":"7894","25bf2d67":"8031","85112c90":"8054","274fd934":"8064",cc44357e:"8085","019dbd1f":"8102","222029a9":"8184",ecd67556:"8188","75a9e1e0":"8196","216e3ed7":"8208","5e834a3c":"8245","153f2b62":"8298","73d1a090":"8304",c6a5eaec:"8356","261f8123":"8374",e6c6a4d2:"8504","44dfcf75":"8598","8f774222":"8661","3705a9c0":"8679","45476a69":"8921",ae68aa8b:"8927","172b3cfb":"8929",adef6868:"8953",e5eb12ce:"8977","850d3674":"9036",a94703ab:"9048",b1bc5ffe:"9099","169603ea":"9126","667d0790":"9306","991799c5":"9371",cd8dccb5:"9431","913561e8":"9453","54175a6c":"9455","57c9a2b8":"9476","4e038a6a":"9479","7823fa72":"9483",dedd5914:"9555","29b8e27a":"9619",eae80ce0:"9642","5e95c892":"9647","5ff9f4db":"9681",ee3b5967:"9705","537e1953":"9789",b3c57e4b:"9836","43df3697":"9905"}[e]||e,r.p+r.u(e)},(()=>{var e={5354:0,1869:0};r.f.j=(a,c)=>{var f=r.o(e,a)?e[a]:void 0;if(0!==f)if(f)c.push(f[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var b=new Promise(((c,b)=>f=e[a]=[c,b]));c.push(f[2]=b);var d=r.p+r.u(a),t=new Error;r.l(d,(c=>{if(r.o(e,a)&&(0!==(f=e[a])&&(e[a]=void 0),f)){var b=c&&("load"===c.type?"missing":c.type),d=c&&c.target&&c.target.src;t.message="Loading chunk "+a+" failed.\n("+b+": "+d+")",t.name="ChunkLoadError",t.type=b,t.request=d,f[1](t)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,c)=>{var f,b,d=c[0],t=c[1],o=c[2],n=0;if(d.some((a=>0!==e[a]))){for(f in t)r.o(t,f)&&(r.m[f]=t[f]);if(o)var i=o(r)}for(a&&a(c);n - + diff --git a/components-agents.html b/components-agents.html index 8e3c88a28f..f9e96a77c4 100644 --- a/components-agents.html +++ b/components-agents.html @@ -21,7 +21,7 @@ - + diff --git a/components-bundle-components.html b/components-bundle-components.html index 5cb4e0732a..0be7e55198 100644 --- a/components-bundle-components.html +++ b/components-bundle-components.html @@ -21,7 +21,7 @@ - + diff --git a/components-custom-components.html b/components-custom-components.html index ae3f6b42aa..aa042c25a7 100644 --- a/components-custom-components.html +++ b/components-custom-components.html @@ -21,7 +21,7 @@ - + diff --git a/components-data.html b/components-data.html index d8fa091346..470e2706b1 100644 --- a/components-data.html +++ b/components-data.html @@ -21,7 +21,7 @@ - + diff --git a/components-embedding-models.html b/components-embedding-models.html index 0c4200d7f8..462dc0152f 100644 --- a/components-embedding-models.html +++ b/components-embedding-models.html @@ -21,7 +21,7 @@ - + diff --git a/components-helpers.html b/components-helpers.html index caffcd973d..0db2d0fe1b 100644 --- a/components-helpers.html +++ b/components-helpers.html @@ -21,7 +21,7 @@ - + diff --git a/components-io.html b/components-io.html index a32f4dbb72..ddbe665e95 100644 --- a/components-io.html +++ b/components-io.html @@ -21,7 +21,7 @@ - + diff --git a/components-loaders.html b/components-loaders.html index 7f8cfe8192..5a878f0f17 100644 --- a/components-loaders.html +++ b/components-loaders.html @@ -21,7 +21,7 @@ - + diff --git a/components-logic.html b/components-logic.html index 2c8b9415c5..74cfb87b38 100644 --- a/components-logic.html +++ b/components-logic.html @@ -21,7 +21,7 @@ - + @@ -47,66 +47,60 @@ This is represented in Langflow by connecting the Parse Data component's The output will look similar to this:


_10
Document Summary
_10
Total Pages Processed
_10
Total Pages: 2
_10
Overall Tone of Document
_10
Tone: Informative and Instructional
_10
The documentation outlines microservices architecture patterns and best practices.
_10
It emphasizes service isolation and inter-service communication protocols.
_10
The use of asynchronous messaging patterns is recommended for system scalability.
_10
It includes code examples of REST and gRPC implementations to demonstrate integration approaches.

Conditional router (If-Else component)​

-

This component routes messages by comparing two strings. It evaluates a condition by comparing two text inputs using the specified operator and routes the message to true_result or false_result.

+

This component routes messages by comparing two strings. +It evaluates a condition by comparing two text inputs using the specified operator and routes the message to true_result or false_result.

+

The operator looks for single strings based on your defined operator behavior, but it can also search for multiple words by regex matching.

+

To use the Conditional router component to check incoming messages with regex matching, do the following:

+
    +
  1. Connect the If-Else component's Text Input port to a Chat Input component.
  2. +
  3. In the If-Else component, enter the following values.
  4. +
+
    +
  • In the Match Text field, enter .*(urgent|warning|caution).*. The component looks for these values. The regex match is case sensitive, so to look for all permutations of warning, enter warning|Warning|WARNING.
  • +
  • In the Operator field, enter regex. The component looks for the strings urgent, warning, and caution. For more operators, see Operator behavior.
  • +
  • In the Message field, enter New Message Detected. This field is optional. The message is sent to both the True and False ports. +The component is now set up to send a New Message Detected message out of its True port if it matches any of the strings. +If no strings are detected, it sends a message out of the False port.
  • +
+
    +
  1. Create two identical flows to process the messages. Connect an Open AI component, a Prompt, and a Chat Output component together.
  2. +
  3. Connect one chain to the If-Else component's True port, and one chain to the False port.
  4. +
+

The flow looks like this:

+

A conditional router connected to two OpenAI components

+
    +
  1. Add your OpenAI API key to both OpenAI components.
  2. +
  3. In both Prompt components, enter the behavior you want each route to take. +When a match is found:
  4. +
+

_10
Send a message that a new message has been received and added to the Urgent queue.

+

When a match is not found:

+

_10
Send a message that a new message has been received and added to the backlog.

+
    +
  1. Open the Playground.
  2. +
  3. Send the flow some messages. Your messages route differently based on the if-else component's evaluation.
  4. +
+

_11
User
_11
A new user was created.
_11
_11
AI
_11
A new message has been received and added to the backlog.
_11
_11
User
_11
Sign-in warning: new user locked out.
_11
_11
AI
_11
A new message has been received and added to the Urgent queue. Please review it at your earliest convenience.

Inputs​

-
NameTypeDescription
input_textStringThe primary text input for the operation.
match_textStringThe text input to compare against.
operatorDropdownThe operator to compare texts. Options: "equals", "not equals", "contains", "starts with", "ends with", "regex". Default: "equals".
case_sensitiveBooleanIf true, the comparison is case sensitive. This setting is ignored for regex comparison. Default: false.
messageMessageThe message to pass through either route.
max_iterationsInteger(Advanced) The maximum number of iterations for the conditional router. Default: 10.
default_routeDropdown(Advanced) The default route to take when max iterations are reached. Options: "true_result" or "false_result". Default: "false_result".
+
NameTypeDescription
input_textStringThe primary text input for the operation.
match_textStringThe text input to compare against.
operatorDropdownThe operator to compare texts. Options: "equals", "not equals", "contains", "starts with", "ends with", "regex". Default: "equals".
case_sensitiveBooleanIf true, the comparison is case sensitive. This setting is ignored for regex comparison. Default: false.
messageMessageThe message to pass through either route.
max_iterationsIntegerThe maximum number of iterations for the conditional router. Default: 10.
default_routeDropdownThe default route to take when max iterations are reached. Options: "true_result" or "false_result". Default: "false_result".

Outputs​

NameTypeDescription
true_resultMessageThe output when the condition is true.
false_resultMessageThe output when the condition is false.

Operator Behavior​

The If-else component includes a comparison operator to compare the values in input_text and match_text.

All options respect the case_sensitive setting except regex.

    -
  • equals: Exact match comparison
  • -
  • not equals: Inverse of exact match
  • -
  • contains: Checks if match_text is found within input_text
  • -
  • starts with: Checks if input_text begins with match_text
  • -
  • ends with: Checks if input_text ends with match_text
  • +
  • equals: Exact match comparison.
  • +
  • not equals: Inverse of exact match.
  • +
  • contains: Checks if match_text is found within input_text.
  • +
  • starts with: Checks if input_text begins with match_text.
  • +
  • ends with: Checks if input_text ends with match_text.
  • regex: Performs regular expression matching. It is always case sensitive and ignores the case_sensitive setting.
-

Data Conditional Router​

-
important

This component is in Legacy, which means it is no longer in active development as of Langflow version 1.3.

-

This component routes Data objects based on a condition applied to a specified key, including boolean validation. It can process either a single Data object or a list of Data objects.

-

This component is particularly useful in workflows that require conditional routing of complex data structures, enabling dynamic decision-making based on data content.

-

Inputs​

-
NameTypeDescription
data_inputDataThe Data object or list of Data objects to process. Can handle both single items and lists.
key_nameStringThe name of the key in the Data object to check.
operatorDropdownThe operator to apply. Options: "equals", "not equals", "contains", "starts with", "ends with", "boolean validator". Default: "equals".
compare_valueStringThe value to compare against. Not shown/used when operator is "boolean validator".
-

Outputs​

-
NameTypeDescription
true_outputData/ListOutput when the condition is met.
false_outputData/ListOutput when the condition is not met.
-

Operator Behavior​

-
    -
  • equals: Exact match comparison between the key's value and compare_value
  • -
  • not equals: Inverse of exact match
  • -
  • contains: Checks if compare_value is found within the key's value
  • -
  • starts with: Checks if the key's value begins with compare_value
  • -
  • ends with: Checks if the key's value ends with compare_value
  • -
  • boolean validator: Treats the key's value as a boolean. The following values are considered true: -
      -
    • Boolean true
    • -
    • Strings: "true", "1", "yes", "y", "on" (case-insensitive)
    • -
    • Any other value is converted using Python's bool() function
    • -
    -
  • -
-

List Processing​

-

The following actions occur when processing a list of Data objects:

-
    -
  • Each object in the list is evaluated individually
  • -
  • Objects meeting the condition go to true_output
  • -
  • Objects not meeting the condition go to false_output
  • -
  • If all objects go to one output, the other output is empty
  • -
-

Flow as tool​

-
important

This component is deprecated as of Langflow version 1.1.2. -Instead, use the Run flow component

-

This component constructs a tool from a function that runs a loaded flow.

-

Inputs​

-
NameTypeDescription
flow_nameDropdownThe name of the flow to run.
tool_nameStringThe name of the tool.
tool_descriptionStringThe description of the tool.
return_directBooleanIf true, returns the result directly from the tool.
-

Outputs​

-
NameTypeDescription
api_build_toolToolThe constructed tool from the flow.

Listen​

This component listens for a notification and retrieves its associated state.

-

Inputs​

+

Inputs​

NameTypeDescription
nameStringThe name of the notification to listen for.
-

Outputs​

+

Outputs​

NameTypeDescription
outputDataThe state associated with the notification.

Loop​

This component iterates over a list of Data objects, outputting one item at a time and aggregating results from loop inputs.

@@ -122,21 +116,21 @@ The dotted line connected from the Structured Output component& In this example, the data is loaded into Chroma DB.

Loop CSV parser

Follow along with this step-by-step video guide for creating this flow and adding agentic RAG: Mastering the Loop Component & Agentic RAG in Langflow.

-

Inputs​

+

Inputs​

NameTypeDescription
dataData/ListThe initial list of Data objects to iterate over.
-

Outputs​

+

Outputs​

NameTypeDescription
itemDataOutputs one item at a time from the data list.
doneDataTriggered when iteration complete, returns aggregated results.

Notify​

This component generates a notification for the Listen component to use.

-

Inputs​

+

Inputs​

NameTypeDescription
nameStringThe name of the notification.
dataDataThe data to store in the notification.
appendBooleanIf true, the record will be appended to the existing notification.
-

Outputs​

+

Outputs​

NameTypeDescription
outputDataThe data stored in the notification.

Pass message​

This component forwards the input message, unchanged.

-

Inputs​

+

Inputs​

NameDisplay NameInfo
input_messageInput MessageThe message to be passed forward.
ignored_messageIgnored MessageA second message to be ignored. Used as a workaround for continuity.
-

Outputs​

+

Outputs​

NameDisplay NameInfo
output_messageOutput MessageThe forwarded input message.

Run flow​

This component allows you to run any flow stored in your Langflow database without opening the flow editor.

@@ -153,19 +147,62 @@ Your flow should now look like this: Run Flow component
  • Run the flow. The Agent uses the Run Flow component as a tool to run the selected sub-flow.
  • -

    Inputs​

    +

    Inputs​

    NameTypeDescription
    flow_name_selectedDropdownThe name of the flow to run.
    flow_tweak_dataDictDictionary of tweaks to customize the flow's behavior.
    dynamic inputsVariousAdditional inputs that are generated based on the selected flow.
    -

    Outputs​

    +

    Outputs​

    NameTypeDescription
    run_outputsA List of types Data, Message, or DataFrameAll outputs are generated from running the flow.
    -

    Sub flow​

    +

    Legacy components​

    +

    Legacy components are available to use but no longer supported.

    +

    Data Conditional Router​

    +
    important

    This component is in Legacy, which means it is no longer in active development as of Langflow version 1.3.

    +

    This component routes Data objects based on a condition applied to a specified key, including boolean validation. It can process either a single Data object or a list of Data objects.

    +

    This component is particularly useful in workflows that require conditional routing of complex data structures, enabling dynamic decision-making based on data content.

    +

    Inputs​

    +
    NameTypeDescription
    data_inputDataThe Data object or list of Data objects to process. This input can handle both single items and lists.
    key_nameStringThe name of the key in the Data object to check.
    operatorDropdownThe operator to apply. Options: "equals", "not equals", "contains", "starts with", "ends with", "boolean validator". Default: "equals".
    compare_valueStringThe value to compare against. Not shown/used when operator is "boolean validator".
    +

    Outputs​

    +
    NameTypeDescription
    true_outputData/ListOutput when the condition is met.
    false_outputData/ListOutput when the condition is not met.
    +

    Operator behavior​

    +
      +
    • equals: Exact match comparison between the key's value and compare_value.
    • +
    • not equals: Inverse of exact match.
    • +
    • contains: Checks if compare_value is found within the key's value.
    • +
    • starts with: Checks if the key's value begins with compare_value.
    • +
    • ends with: Checks if the key's value ends with compare_value.
    • +
    • boolean validator: Treats the key's value as a boolean. The following values are considered true: +
        +
      • Boolean true.
      • +
      • Strings: "true", "1", "yes", "y", "on" (case-insensitive).
      • +
      • Any other value is converted using Python's bool() function.
      • +
      +
    • +
    +

    List processing​

    +

    The following actions occur when processing a list of Data objects:

    +
      +
    • Each object in the list is evaluated individually
    • +
    • Objects meeting the condition go to true_output
    • +
    • Objects not meeting the condition go to false_output
    • +
    • If all objects go to one output, the other output is empty
    • +
    +

    Deprecated components​

    +

    Deprecated components have been replaced by newer alternatives and should not be used in new projects.

    +

    Flow as tool​

    +
    important

    This component is deprecated as of Langflow version 1.1.2. +Instead, use the Run flow component

    +

    This component constructs a tool from a function that runs a loaded flow.

    +

    Inputs​

    +
    NameTypeDescription
    flow_nameDropdownThe name of the flow to run.
    tool_nameStringThe name of the tool.
    tool_descriptionStringThe description of the tool.
    return_directBooleanIf true, returns the result directly from the tool.
    +

    Outputs​

    +
    NameTypeDescription
    api_build_toolToolThe constructed tool from the flow.
    +

    Sub flow​

    important

    This component is deprecated as of Langflow version 1.1.2. Instead, use the Run flow component

    This SubFlowComponent generates a component from a flow with all of its inputs and outputs.

    This component can integrate entire flows as components within a larger workflow. It dynamically generates inputs based on the selected flow and executes the flow with provided parameters.

    -

    Inputs​

    +

    Inputs​

    NameTypeDescription
    flow_nameDropdownThe name of the flow to run.
    -

    Outputs​

    -
    NameTypeDescription
    flow_outputsList[Data]The outputs generated from the flow.