diff --git a/404.html b/404.html index d8aff17ea8..fb6ac46c2d 100644 --- a/404.html +++ b/404.html @@ -23,7 +23,7 @@ - + diff --git a/agent-tutorial.html b/agent-tutorial.html index 920499091f..373a57b079 100644 --- a/agent-tutorial.html +++ b/agent-tutorial.html @@ -23,7 +23,7 @@ - + diff --git a/agents-tools.html b/agents-tools.html index 6e174c38e8..d92be6348f 100644 --- a/agents-tools.html +++ b/agents-tools.html @@ -23,7 +23,7 @@ - + diff --git a/agents.html b/agents.html index df214ac328..8cec10df3e 100644 --- a/agents.html +++ b/agents.html @@ -23,7 +23,7 @@ - + diff --git a/api-build.html b/api-build.html index 881f11d94e..bbbb11aff9 100644 --- a/api-build.html +++ b/api-build.html @@ -23,7 +23,7 @@ - + diff --git a/api-files.html b/api-files.html index 9dbaa8f929..a8bcbd4a5b 100644 --- a/api-files.html +++ b/api-files.html @@ -23,7 +23,7 @@ - + diff --git a/api-flows-run.html b/api-flows-run.html index 21281af5bc..0a1010c86a 100644 --- a/api-flows-run.html +++ b/api-flows-run.html @@ -23,7 +23,7 @@ - + diff --git a/api-flows.html b/api-flows.html index 61e6d988e3..5c9554676e 100644 --- a/api-flows.html +++ b/api-flows.html @@ -23,7 +23,7 @@ - + diff --git a/api-keys-and-authentication.html b/api-keys-and-authentication.html index 3c156b6f90..e0088ba618 100644 --- a/api-keys-and-authentication.html +++ b/api-keys-and-authentication.html @@ -23,7 +23,7 @@ - + diff --git a/api-logs.html b/api-logs.html index a0ab8f4d32..561c47e4d4 100644 --- a/api-logs.html +++ b/api-logs.html @@ -23,7 +23,7 @@ - + diff --git a/api-monitor.html b/api-monitor.html index 1307733b64..be24c7f21a 100644 --- a/api-monitor.html +++ b/api-monitor.html @@ -23,7 +23,7 @@ - + diff --git a/api-openai-responses.html b/api-openai-responses.html index d523d9ef2c..47d4c7f4b8 100644 --- a/api-openai-responses.html +++ b/api-openai-responses.html @@ -23,7 +23,7 @@ - + diff --git a/api-projects.html b/api-projects.html index e55d97eee7..fe3f19933b 100644 --- a/api-projects.html +++ b/api-projects.html @@ -23,7 +23,7 @@ - + diff --git a/api-reference-api-examples.html b/api-reference-api-examples.html index 2cafbce4fc..f4aea64d87 100644 --- a/api-reference-api-examples.html +++ b/api-reference-api-examples.html @@ -23,7 +23,7 @@ - + diff --git a/api-users.html b/api-users.html index aeec9a9e0a..683514254b 100644 --- a/api-users.html +++ b/api-users.html @@ -23,7 +23,7 @@ - + diff --git a/api.html b/api.html index 4d2c199030..5776e12317 100644 --- a/api.html +++ b/api.html @@ -23,7 +23,7 @@ - + diff --git a/api/add-server.html b/api/add-server.html index 26417120f1..cd50303c7e 100644 --- a/api/add-server.html +++ b/api/add-server.html @@ -23,7 +23,7 @@ - + diff --git a/api/add-user.html b/api/add-user.html index 4a2bac91e7..500aad8573 100644 --- a/api/add-user.html +++ b/api/add-user.html @@ -23,7 +23,7 @@ - + diff --git a/api/auto-login.html b/api/auto-login.html index 4e29eb2945..5305240c09 100644 --- a/api/auto-login.html +++ b/api/auto-login.html @@ -23,7 +23,7 @@ - + diff --git a/api/build-flow.html b/api/build-flow.html index 9284e227c3..ebe6445628 100644 --- a/api/build-flow.html +++ b/api/build-flow.html @@ -23,7 +23,7 @@ - + diff --git a/api/build-public-tmp.html b/api/build-public-tmp.html index 465a26ff2d..6c220eaaad 100644 --- a/api/build-public-tmp.html +++ b/api/build-public-tmp.html @@ -23,7 +23,7 @@ - + diff --git a/api/build-vertex-stream.html b/api/build-vertex-stream.html index 55745a52dd..9fdb304ea2 100644 --- a/api/build-vertex-stream.html +++ b/api/build-vertex-stream.html @@ -23,7 +23,7 @@ - + diff --git a/api/build-vertex.html b/api/build-vertex.html index ac360f0324..8d88b429d4 100644 --- a/api/build-vertex.html +++ b/api/build-vertex.html @@ -23,7 +23,7 @@ - + diff --git a/api/cancel-build.html b/api/cancel-build.html index 39761e2af5..ddee7dbd88 100644 --- a/api/cancel-build.html +++ b/api/cancel-build.html @@ -23,7 +23,7 @@ - + diff --git a/api/check-if-store-has-api-key.html b/api/check-if-store-has-api-key.html index 6090da2f15..62186d1c1b 100644 --- a/api/check-if-store-has-api-key.html +++ b/api/check-if-store-has-api-key.html @@ -23,7 +23,7 @@ - + diff --git a/api/check-if-store-is-enabled.html b/api/check-if-store-is-enabled.html index a4fd34d5f1..4bcec76f65 100644 --- a/api/check-if-store-is-enabled.html +++ b/api/check-if-store-is-enabled.html @@ -23,7 +23,7 @@ - + diff --git a/api/check-installed-mcp-servers.html b/api/check-installed-mcp-servers.html index 8b14bd2ddf..16266ada3c 100644 --- a/api/check-installed-mcp-servers.html +++ b/api/check-installed-mcp-servers.html @@ -23,7 +23,7 @@ - + diff --git a/api/create-api-key-route.html b/api/create-api-key-route.html index fa34c79dec..2562a3787f 100644 --- a/api/create-api-key-route.html +++ b/api/create-api-key-route.html @@ -23,7 +23,7 @@ - + diff --git a/api/create-flow.html b/api/create-flow.html index 4dd0c2d186..1bedabf7a4 100644 --- a/api/create-flow.html +++ b/api/create-flow.html @@ -23,7 +23,7 @@ - + diff --git a/api/create-flows.html b/api/create-flows.html index 82b80d9c23..ebec0ef087 100644 --- a/api/create-flows.html +++ b/api/create-flows.html @@ -23,7 +23,7 @@ - + diff --git a/api/create-folder-redirect.html b/api/create-folder-redirect.html index 82e1acda0e..04920dafcb 100644 --- a/api/create-folder-redirect.html +++ b/api/create-folder-redirect.html @@ -23,7 +23,7 @@ - + diff --git a/api/create-project.html b/api/create-project.html index 03bfd80ef6..d936c221c4 100644 --- a/api/create-project.html +++ b/api/create-project.html @@ -23,7 +23,7 @@ - + diff --git a/api/create-response.html b/api/create-response.html index 0dee59e61a..f3e6054a45 100644 --- a/api/create-response.html +++ b/api/create-response.html @@ -23,7 +23,7 @@ - + diff --git a/api/create-upload-file.html b/api/create-upload-file.html index 5a0e0d6911..f650824633 100644 --- a/api/create-upload-file.html +++ b/api/create-upload-file.html @@ -23,7 +23,7 @@ - + diff --git a/api/create-variable.html b/api/create-variable.html index 1f35ba103f..0c3c199609 100644 --- a/api/create-variable.html +++ b/api/create-variable.html @@ -23,7 +23,7 @@ - + diff --git a/api/custom-component-update.html b/api/custom-component-update.html index 08ac7afc6c..0139999509 100644 --- a/api/custom-component-update.html +++ b/api/custom-component-update.html @@ -23,7 +23,7 @@ - + diff --git a/api/custom-component.html b/api/custom-component.html index 7f2fc96db1..9d8c11bd99 100644 --- a/api/custom-component.html +++ b/api/custom-component.html @@ -23,7 +23,7 @@ - + diff --git a/api/delete-all-files-1.html b/api/delete-all-files-1.html index 002c35901f..81a62e9642 100644 --- a/api/delete-all-files-1.html +++ b/api/delete-all-files-1.html @@ -23,7 +23,7 @@ - + diff --git a/api/delete-all-files.html b/api/delete-all-files.html index c3393e5bdb..615de4d40d 100644 --- a/api/delete-all-files.html +++ b/api/delete-all-files.html @@ -23,7 +23,7 @@ - + diff --git a/api/delete-api-key-route.html b/api/delete-api-key-route.html index 7434dd0234..b413c489da 100644 --- a/api/delete-api-key-route.html +++ b/api/delete-api-key-route.html @@ -23,7 +23,7 @@ - + diff --git a/api/delete-file-1.html b/api/delete-file-1.html index d574ad9bb7..ed7613f9a5 100644 --- a/api/delete-file-1.html +++ b/api/delete-file-1.html @@ -23,7 +23,7 @@ - + diff --git a/api/delete-file.html b/api/delete-file.html index 2a578158aa..de838d3b24 100644 --- a/api/delete-file.html +++ b/api/delete-file.html @@ -23,7 +23,7 @@ - + diff --git a/api/delete-files-batch.html b/api/delete-files-batch.html index f4e065b3d6..c94b9c62f9 100644 --- a/api/delete-files-batch.html +++ b/api/delete-files-batch.html @@ -23,7 +23,7 @@ - + diff --git a/api/delete-flow.html b/api/delete-flow.html index 5bd3f35bba..1a0c86b7e5 100644 --- a/api/delete-flow.html +++ b/api/delete-flow.html @@ -23,7 +23,7 @@ - + diff --git a/api/delete-folder-redirect.html b/api/delete-folder-redirect.html index 42967a780f..6ec908805c 100644 --- a/api/delete-folder-redirect.html +++ b/api/delete-folder-redirect.html @@ -23,7 +23,7 @@ - + diff --git a/api/delete-knowledge-base.html b/api/delete-knowledge-base.html index 7cf17532c8..941464ad7b 100644 --- a/api/delete-knowledge-base.html +++ b/api/delete-knowledge-base.html @@ -23,7 +23,7 @@ - + diff --git a/api/delete-knowledge-bases-bulk-1.html b/api/delete-knowledge-bases-bulk-1.html index f4b0b03e9e..05236b4b41 100644 --- a/api/delete-knowledge-bases-bulk-1.html +++ b/api/delete-knowledge-bases-bulk-1.html @@ -23,7 +23,7 @@ - + diff --git a/api/delete-knowledge-bases-bulk.html b/api/delete-knowledge-bases-bulk.html index 05a4808c14..57092c80d0 100644 --- a/api/delete-knowledge-bases-bulk.html +++ b/api/delete-knowledge-bases-bulk.html @@ -23,7 +23,7 @@ - + diff --git a/api/delete-messages-session.html b/api/delete-messages-session.html index c4d1690579..53743ad9ba 100644 --- a/api/delete-messages-session.html +++ b/api/delete-messages-session.html @@ -23,7 +23,7 @@ - + diff --git a/api/delete-messages.html b/api/delete-messages.html index fa3fe442e6..87bc8c0c07 100644 --- a/api/delete-messages.html +++ b/api/delete-messages.html @@ -23,7 +23,7 @@ - + diff --git a/api/delete-multiple-flows.html b/api/delete-multiple-flows.html index b71982946b..0ed72654b9 100644 --- a/api/delete-multiple-flows.html +++ b/api/delete-multiple-flows.html @@ -23,7 +23,7 @@ - + diff --git a/api/delete-project.html b/api/delete-project.html index 65e6f00e2e..db00400dfa 100644 --- a/api/delete-project.html +++ b/api/delete-project.html @@ -23,7 +23,7 @@ - + diff --git a/api/delete-server.html b/api/delete-server.html index df477c1ee1..8883f14552 100644 --- a/api/delete-server.html +++ b/api/delete-server.html @@ -23,7 +23,7 @@ - + diff --git a/api/delete-user.html b/api/delete-user.html index 8d775dec50..6f47198678 100644 --- a/api/delete-user.html +++ b/api/delete-user.html @@ -23,7 +23,7 @@ - + diff --git a/api/delete-variable.html b/api/delete-variable.html index ce7db6faa8..a920f5afde 100644 --- a/api/delete-variable.html +++ b/api/delete-variable.html @@ -23,7 +23,7 @@ - + diff --git a/api/delete-vertex-builds.html b/api/delete-vertex-builds.html index c843ec5d07..ceb9b5c3b9 100644 --- a/api/delete-vertex-builds.html +++ b/api/delete-vertex-builds.html @@ -23,7 +23,7 @@ - + diff --git a/api/download-component.html b/api/download-component.html index 65b11cfbe2..96be8c97b3 100644 --- a/api/download-component.html +++ b/api/download-component.html @@ -23,7 +23,7 @@ - + diff --git a/api/download-file-1.html b/api/download-file-1.html index ca4963ca31..2a6e731f53 100644 --- a/api/download-file-1.html +++ b/api/download-file-1.html @@ -23,7 +23,7 @@ - + diff --git a/api/download-file-2.html b/api/download-file-2.html index c960169534..3269dc0073 100644 --- a/api/download-file-2.html +++ b/api/download-file-2.html @@ -23,7 +23,7 @@ - + diff --git a/api/download-file-redirect.html b/api/download-file-redirect.html index 76f67f37b6..87654badef 100644 --- a/api/download-file-redirect.html +++ b/api/download-file-redirect.html @@ -23,7 +23,7 @@ - + diff --git a/api/download-file.html b/api/download-file.html index b45edb15e1..63d41101eb 100644 --- a/api/download-file.html +++ b/api/download-file.html @@ -23,7 +23,7 @@ - + diff --git a/api/download-files-batch.html b/api/download-files-batch.html index 81624983fa..8b551514a8 100644 --- a/api/download-files-batch.html +++ b/api/download-files-batch.html @@ -23,7 +23,7 @@ - + diff --git a/api/download-image.html b/api/download-image.html index e2b38e5d48..3ca45c0792 100644 --- a/api/download-image.html +++ b/api/download-image.html @@ -23,7 +23,7 @@ - + diff --git a/api/download-multiple-file.html b/api/download-multiple-file.html index f0584c0c0c..74ea183bca 100644 --- a/api/download-multiple-file.html +++ b/api/download-multiple-file.html @@ -23,7 +23,7 @@ - + diff --git a/api/download-profile-picture.html b/api/download-profile-picture.html index e3db1c888b..5e07737f9f 100644 --- a/api/download-profile-picture.html +++ b/api/download-profile-picture.html @@ -23,7 +23,7 @@ - + diff --git a/api/edit-file-name.html b/api/edit-file-name.html index dce64fdff9..a4b0bd1bc1 100644 --- a/api/edit-file-name.html +++ b/api/edit-file-name.html @@ -23,7 +23,7 @@ - + diff --git a/api/experimental-run-flow.html b/api/experimental-run-flow.html index 467edc9c1b..5b4f7f28aa 100644 --- a/api/experimental-run-flow.html +++ b/api/experimental-run-flow.html @@ -23,7 +23,7 @@ - + diff --git a/api/get-all.html b/api/get-all.html index 95450afca3..5067f6a538 100644 --- a/api/get-all.html +++ b/api/get-all.html @@ -23,7 +23,7 @@ - + diff --git a/api/get-api-keys-route.html b/api/get-api-keys-route.html index c5cec7225c..655d5de13d 100644 --- a/api/get-api-keys-route.html +++ b/api/get-api-keys-route.html @@ -23,7 +23,7 @@ - + diff --git a/api/get-build-events.html b/api/get-build-events.html index 9ec263ac7f..e7dd4fc3ec 100644 --- a/api/get-build-events.html +++ b/api/get-build-events.html @@ -23,7 +23,7 @@ - + diff --git a/api/get-components.html b/api/get-components.html index 5a7935ce7e..5617f0170b 100644 --- a/api/get-components.html +++ b/api/get-components.html @@ -23,7 +23,7 @@ - + diff --git a/api/get-config.html b/api/get-config.html index 2a046c3960..6fa799c177 100644 --- a/api/get-config.html +++ b/api/get-config.html @@ -23,7 +23,7 @@ - + diff --git a/api/get-elevenlabs-voice-ids.html b/api/get-elevenlabs-voice-ids.html index 30225ff258..47563acf7f 100644 --- a/api/get-elevenlabs-voice-ids.html +++ b/api/get-elevenlabs-voice-ids.html @@ -23,7 +23,7 @@ - + diff --git a/api/get-knowledge-base.html b/api/get-knowledge-base.html index 57aff34c86..1c84cc00c9 100644 --- a/api/get-knowledge-base.html +++ b/api/get-knowledge-base.html @@ -23,7 +23,7 @@ - + diff --git a/api/get-list-of-components-liked-by-user.html b/api/get-list-of-components-liked-by-user.html index e42419462c..c7e8630a7e 100644 --- a/api/get-list-of-components-liked-by-user.html +++ b/api/get-list-of-components-liked-by-user.html @@ -23,7 +23,7 @@ - + diff --git a/api/get-message-sessions.html b/api/get-message-sessions.html index a6a3860356..55d1cdb11a 100644 --- a/api/get-message-sessions.html +++ b/api/get-message-sessions.html @@ -23,7 +23,7 @@ - + diff --git a/api/get-messages.html b/api/get-messages.html index a14e0f72e2..6756d293ac 100644 --- a/api/get-messages.html +++ b/api/get-messages.html @@ -23,7 +23,7 @@ - + diff --git a/api/get-project-composer-url.html b/api/get-project-composer-url.html index 04e3085592..5038b72156 100644 --- a/api/get-project-composer-url.html +++ b/api/get-project-composer-url.html @@ -23,7 +23,7 @@ - + diff --git a/api/get-server-endpoint.html b/api/get-server-endpoint.html index 9fb339e742..0e69ab3cfe 100644 --- a/api/get-server-endpoint.html +++ b/api/get-server-endpoint.html @@ -23,7 +23,7 @@ - + diff --git a/api/get-servers.html b/api/get-servers.html index 2de3645944..a703729ab6 100644 --- a/api/get-servers.html +++ b/api/get-servers.html @@ -23,7 +23,7 @@ - + diff --git a/api/get-starter-projects.html b/api/get-starter-projects.html index b78c6b2cc9..b6fb8cc64f 100644 --- a/api/get-starter-projects.html +++ b/api/get-starter-projects.html @@ -23,7 +23,7 @@ - + diff --git a/api/get-tags.html b/api/get-tags.html index a55c584a00..f2cf5e25bf 100644 --- a/api/get-tags.html +++ b/api/get-tags.html @@ -23,7 +23,7 @@ - + diff --git a/api/get-task-status.html b/api/get-task-status.html index b52fb11f9e..aada9c2b46 100644 --- a/api/get-task-status.html +++ b/api/get-task-status.html @@ -23,7 +23,7 @@ - + diff --git a/api/get-transactions.html b/api/get-transactions.html index 32bf2364af..30d98fef85 100644 --- a/api/get-transactions.html +++ b/api/get-transactions.html @@ -23,7 +23,7 @@ - + diff --git a/api/get-version.html b/api/get-version.html index 4c4cf62127..b0baa9a252 100644 --- a/api/get-version.html +++ b/api/get-version.html @@ -23,7 +23,7 @@ - + diff --git a/api/get-vertex-builds.html b/api/get-vertex-builds.html index 1e0c315ee7..45942f61c5 100644 --- a/api/get-vertex-builds.html +++ b/api/get-vertex-builds.html @@ -23,7 +23,7 @@ - + diff --git a/api/handle-messages-1.html b/api/handle-messages-1.html index a2641afcb2..f5722ee214 100644 --- a/api/handle-messages-1.html +++ b/api/handle-messages-1.html @@ -23,7 +23,7 @@ - + diff --git a/api/handle-messages.html b/api/handle-messages.html index f9f2f0ad1f..cfa687167e 100644 --- a/api/handle-messages.html +++ b/api/handle-messages.html @@ -23,7 +23,7 @@ - + diff --git a/api/handle-project-messages-with-slash.html b/api/handle-project-messages-with-slash.html index 596f88c6c2..6a9c539472 100644 --- a/api/handle-project-messages-with-slash.html +++ b/api/handle-project-messages-with-slash.html @@ -23,7 +23,7 @@ - + diff --git a/api/handle-project-messages.html b/api/handle-project-messages.html index bcca0b0dd3..6ca96c49b6 100644 --- a/api/handle-project-messages.html +++ b/api/handle-project-messages.html @@ -23,7 +23,7 @@ - + diff --git a/api/handle-project-sse.html b/api/handle-project-sse.html index a02a11c92c..4618ab2f6d 100644 --- a/api/handle-project-sse.html +++ b/api/handle-project-sse.html @@ -23,7 +23,7 @@ - + diff --git a/api/handle-sse-1.html b/api/handle-sse-1.html index fc0eecfdf9..addafb529e 100644 --- a/api/handle-sse-1.html +++ b/api/handle-sse-1.html @@ -23,7 +23,7 @@ - + diff --git a/api/handle-sse.html b/api/handle-sse.html index 1841446bcf..faaac53637 100644 --- a/api/handle-sse.html +++ b/api/handle-sse.html @@ -23,7 +23,7 @@ - + diff --git a/api/health-check.html b/api/health-check.html index 8f5cb333c7..04103db05d 100644 --- a/api/health-check.html +++ b/api/health-check.html @@ -23,7 +23,7 @@ - + diff --git a/api/health.html b/api/health.html index e6d4715308..709c78e354 100644 --- a/api/health.html +++ b/api/health.html @@ -23,7 +23,7 @@ - + diff --git a/api/install-mcp-config.html b/api/install-mcp-config.html index 4f7c30b219..7438e4e538 100644 --- a/api/install-mcp-config.html +++ b/api/install-mcp-config.html @@ -23,7 +23,7 @@ - + diff --git a/api/like-component.html b/api/like-component.html index 70402e537f..25b40a6786 100644 --- a/api/like-component.html +++ b/api/like-component.html @@ -23,7 +23,7 @@ - + diff --git a/api/list-files-1.html b/api/list-files-1.html index f3883a76b8..da630b94ac 100644 --- a/api/list-files-1.html +++ b/api/list-files-1.html @@ -23,7 +23,7 @@ - + diff --git a/api/list-files-2.html b/api/list-files-2.html index 8a9bf1cc60..0bc279fabb 100644 --- a/api/list-files-2.html +++ b/api/list-files-2.html @@ -23,7 +23,7 @@ - + diff --git a/api/list-files.html b/api/list-files.html index 51ac109ce9..7d4628d6e2 100644 --- a/api/list-files.html +++ b/api/list-files.html @@ -23,7 +23,7 @@ - + diff --git a/api/list-knowledge-bases-1.html b/api/list-knowledge-bases-1.html index 81083ea62d..ac09b7aa23 100644 --- a/api/list-knowledge-bases-1.html +++ b/api/list-knowledge-bases-1.html @@ -23,7 +23,7 @@ - + diff --git a/api/list-knowledge-bases.html b/api/list-knowledge-bases.html index 813f15000b..352bc5c9ec 100644 --- a/api/list-knowledge-bases.html +++ b/api/list-knowledge-bases.html @@ -23,7 +23,7 @@ - + diff --git a/api/list-profile-pictures.html b/api/list-profile-pictures.html index a1aff7b710..6a89fd9873 100644 --- a/api/list-profile-pictures.html +++ b/api/list-profile-pictures.html @@ -23,7 +23,7 @@ - + diff --git a/api/list-project-tools.html b/api/list-project-tools.html index 95a0e420e4..10664b6f04 100644 --- a/api/list-project-tools.html +++ b/api/list-project-tools.html @@ -23,7 +23,7 @@ - + diff --git a/api/login-to-get-access-token.html b/api/login-to-get-access-token.html index 23112dc153..725d6cc484 100644 --- a/api/login-to-get-access-token.html +++ b/api/login-to-get-access-token.html @@ -23,7 +23,7 @@ - + diff --git a/api/logout.html b/api/logout.html index b42e50f4b0..e13557ebe7 100644 --- a/api/logout.html +++ b/api/logout.html @@ -23,7 +23,7 @@ - + diff --git a/api/logs.html b/api/logs.html index dfba642199..63ecf617cd 100644 --- a/api/logs.html +++ b/api/logs.html @@ -23,7 +23,7 @@ - + diff --git a/api/patch-user.html b/api/patch-user.html index 086d378ed2..43b1052e21 100644 --- a/api/patch-user.html +++ b/api/patch-user.html @@ -23,7 +23,7 @@ - + diff --git a/api/post-validate-code.html b/api/post-validate-code.html index 409ed0cc2b..c04c57520d 100644 --- a/api/post-validate-code.html +++ b/api/post-validate-code.html @@ -23,7 +23,7 @@ - + diff --git a/api/post-validate-prompt.html b/api/post-validate-prompt.html index 1982354ab6..ebc149b76b 100644 --- a/api/post-validate-prompt.html +++ b/api/post-validate-prompt.html @@ -23,7 +23,7 @@ - + diff --git a/api/process-1.html b/api/process-1.html index 206aeff286..d7fa57a3cd 100644 --- a/api/process-1.html +++ b/api/process-1.html @@ -23,7 +23,7 @@ - + diff --git a/api/process.html b/api/process.html index c92fe7dc8e..eed338ac30 100644 --- a/api/process.html +++ b/api/process.html @@ -23,7 +23,7 @@ - + diff --git a/api/read-all-users.html b/api/read-all-users.html index e5180c9aab..8f41ca61f9 100644 --- a/api/read-all-users.html +++ b/api/read-all-users.html @@ -23,7 +23,7 @@ - + diff --git a/api/read-basic-examples.html b/api/read-basic-examples.html index 73c846008a..5a6aff6aeb 100644 --- a/api/read-basic-examples.html +++ b/api/read-basic-examples.html @@ -23,7 +23,7 @@ - + diff --git a/api/read-current-user.html b/api/read-current-user.html index eb05b8e3e8..c3581f0f71 100644 --- a/api/read-current-user.html +++ b/api/read-current-user.html @@ -23,7 +23,7 @@ - + diff --git a/api/read-flow.html b/api/read-flow.html index c0d8eb3674..fed6ea4f38 100644 --- a/api/read-flow.html +++ b/api/read-flow.html @@ -23,7 +23,7 @@ - + diff --git a/api/read-flows.html b/api/read-flows.html index af84f7d074..205bb77586 100644 --- a/api/read-flows.html +++ b/api/read-flows.html @@ -23,7 +23,7 @@ - + diff --git a/api/read-folder-redirect.html b/api/read-folder-redirect.html index 248c985984..bf76a3fe52 100644 --- a/api/read-folder-redirect.html +++ b/api/read-folder-redirect.html @@ -23,7 +23,7 @@ - + diff --git a/api/read-folders-redirect.html b/api/read-folders-redirect.html index 0b1bbf77f6..0942914de9 100644 --- a/api/read-folders-redirect.html +++ b/api/read-folders-redirect.html @@ -23,7 +23,7 @@ - + diff --git a/api/read-project.html b/api/read-project.html index 8de3f2578a..4700fade25 100644 --- a/api/read-project.html +++ b/api/read-project.html @@ -23,7 +23,7 @@ - + diff --git a/api/read-projects.html b/api/read-projects.html index 1a04778774..96152d6494 100644 --- a/api/read-projects.html +++ b/api/read-projects.html @@ -23,7 +23,7 @@ - + diff --git a/api/read-public-flow.html b/api/read-public-flow.html index 484fe24afd..4bb8f9e1dc 100644 --- a/api/read-public-flow.html +++ b/api/read-public-flow.html @@ -23,7 +23,7 @@ - + diff --git a/api/read-variables.html b/api/read-variables.html index 81f5bb9af6..4edc3091b2 100644 --- a/api/read-variables.html +++ b/api/read-variables.html @@ -23,7 +23,7 @@ - + diff --git a/api/refresh-token.html b/api/refresh-token.html index 590b4eabc7..138027615b 100644 --- a/api/refresh-token.html +++ b/api/refresh-token.html @@ -23,7 +23,7 @@ - + diff --git a/api/reset-password.html b/api/reset-password.html index 79f1441140..dd7e7ce508 100644 --- a/api/reset-password.html +++ b/api/reset-password.html @@ -23,7 +23,7 @@ - + diff --git a/api/retrieve-vertices-order.html b/api/retrieve-vertices-order.html index 04b25f82f5..5b90fc0897 100644 --- a/api/retrieve-vertices-order.html +++ b/api/retrieve-vertices-order.html @@ -23,7 +23,7 @@ - + diff --git a/api/save-store-api-key.html b/api/save-store-api-key.html index 47a60f124a..fe7977c452 100644 --- a/api/save-store-api-key.html +++ b/api/save-store-api-key.html @@ -23,7 +23,7 @@ - + diff --git a/api/share-component.html b/api/share-component.html index bde233db68..9c4b199a4c 100644 --- a/api/share-component.html +++ b/api/share-component.html @@ -23,7 +23,7 @@ - + diff --git a/api/simplified-run-flow.html b/api/simplified-run-flow.html index f204fd3a9a..25a5bfe75a 100644 --- a/api/simplified-run-flow.html +++ b/api/simplified-run-flow.html @@ -23,7 +23,7 @@ - + diff --git a/api/stream-logs.html b/api/stream-logs.html index 82c676a582..9742add635 100644 --- a/api/stream-logs.html +++ b/api/stream-logs.html @@ -23,7 +23,7 @@ - + diff --git a/api/update-flow.html b/api/update-flow.html index 6265923627..b52eeec654 100644 --- a/api/update-flow.html +++ b/api/update-flow.html @@ -23,7 +23,7 @@ - + diff --git a/api/update-folder-redirect.html b/api/update-folder-redirect.html index 8e7389264e..8a6d256337 100644 --- a/api/update-folder-redirect.html +++ b/api/update-folder-redirect.html @@ -23,7 +23,7 @@ - + diff --git a/api/update-message.html b/api/update-message.html index 4163e10b6f..6e7a4e549f 100644 --- a/api/update-message.html +++ b/api/update-message.html @@ -23,7 +23,7 @@ - + diff --git a/api/update-project-mcp-settings.html b/api/update-project-mcp-settings.html index b0d7ab3aa5..25763f04cb 100644 --- a/api/update-project-mcp-settings.html +++ b/api/update-project-mcp-settings.html @@ -23,7 +23,7 @@ - + diff --git a/api/update-project.html b/api/update-project.html index b39bba8cc1..d42b214326 100644 --- a/api/update-project.html +++ b/api/update-project.html @@ -23,7 +23,7 @@ - + diff --git a/api/update-server-endpoint.html b/api/update-server-endpoint.html index 723fb39c4f..586b9f4649 100644 --- a/api/update-server-endpoint.html +++ b/api/update-server-endpoint.html @@ -23,7 +23,7 @@ - + diff --git a/api/update-session-id.html b/api/update-session-id.html index 142f728578..649f001ca2 100644 --- a/api/update-session-id.html +++ b/api/update-session-id.html @@ -23,7 +23,7 @@ - + diff --git a/api/update-shared-component.html b/api/update-shared-component.html index 5ac0e03d02..1c6c80515d 100644 --- a/api/update-shared-component.html +++ b/api/update-shared-component.html @@ -23,7 +23,7 @@ - + diff --git a/api/update-variable.html b/api/update-variable.html index daffce6431..4335bdc659 100644 --- a/api/update-variable.html +++ b/api/update-variable.html @@ -23,7 +23,7 @@ - + diff --git a/api/upload-file-1.html b/api/upload-file-1.html index 4784c89556..0995564395 100644 --- a/api/upload-file-1.html +++ b/api/upload-file-1.html @@ -23,7 +23,7 @@ - + diff --git a/api/upload-file-2.html b/api/upload-file-2.html index 433129e158..0218bde5bd 100644 --- a/api/upload-file-2.html +++ b/api/upload-file-2.html @@ -23,7 +23,7 @@ - + diff --git a/api/upload-file-redirect.html b/api/upload-file-redirect.html index 9575c5027d..8519796752 100644 --- a/api/upload-file-redirect.html +++ b/api/upload-file-redirect.html @@ -23,7 +23,7 @@ - + diff --git a/api/upload-file.html b/api/upload-file.html index f834aa8784..d39f5c86eb 100644 --- a/api/upload-file.html +++ b/api/upload-file.html @@ -23,7 +23,7 @@ - + diff --git a/api/upload-user-file-1.html b/api/upload-user-file-1.html index 3ebcba874a..063a2bc9e8 100644 --- a/api/upload-user-file-1.html +++ b/api/upload-user-file-1.html @@ -23,7 +23,7 @@ - + diff --git a/api/upload-user-file.html b/api/upload-user-file.html index 5d83b2e791..abedade827 100644 --- a/api/upload-user-file.html +++ b/api/upload-user-file.html @@ -23,7 +23,7 @@ - + diff --git a/api/webhook-run-flow.html b/api/webhook-run-flow.html index adc03305a3..01f8d087e0 100644 --- a/api/webhook-run-flow.html +++ b/api/webhook-run-flow.html @@ -23,7 +23,7 @@ - + diff --git a/assets/js/0f761898.1c6d3f4b.js b/assets/js/0f761898.1c6d3f4b.js deleted file mode 100644 index 3d01dfb36a..0000000000 --- a/assets/js/0f761898.1c6d3f4b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[1490],{17886:(e,n,t)=>{t.d(n,{A:()=>i});t(96540);var s=t(64058),r=t(74848);function i({name:e,...n}){const t=s[e];return t?(0,r.jsx)(t,{...n}):null}},31929:(e,n,t)=>{t.d(n,{Ay:()=>d,RM:()=>o});var s=t(74848),r=t(28453),i=t(17886);const o=[];function c(e){const n={a:"a",p:"p",strong:"strong",...(0,r.R)(),...e.components};return(0,s.jsxs)(n.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,s.jsx)(i.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Controls"})," in the ",(0,s.jsx)(n.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function d(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},63261:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>d,metadata:()=>s,toc:()=>g});const s=JSON.parse('{"id":"Components/bundles-huggingface","title":"Hugging Face","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-huggingface.mdx","sourceDirName":"Components","slug":"/bundles-huggingface","permalink":"/bundles-huggingface","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Hugging Face","slug":"/bundles-huggingface"},"sidebar":"docs","previous":{"title":"Groq","permalink":"/bundles-groq"},"next":{"title":"IBM","permalink":"/bundles-ibm"}}');var r=t(74848),i=t(28453),o=t(17886),c=t(31929);const d={title:"Hugging Face",slug:"/bundles-huggingface"},a=void 0,l={},g=[{value:"Hugging Face text generation",id:"hugging-face-text-generation",level:2},{value:"Hugging Face text generation parameters",id:"hugging-face-text-generation-parameters",level:3},...c.RM,{value:"Hugging Face Embeddings Inference",id:"hugging-face-embeddings-inference",level:2},{value:"Hugging Face Embeddings Inference parameters",id:"hugging-face-embeddings-inference-parameters",level:3},{value:"Use a local Hugging Face embeddings model",id:"local-hugging-face-model",level:3}];function h(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",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(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:[(0,r.jsx)(o.A,{name:"Blocks","aria-hidden":"true"})," ",(0,r.jsx)(n.a,{href:"/components-bundle-components",children:(0,r.jsx)(n.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,r.jsxs)(n.p,{children:["The components in the ",(0,r.jsx)(n.strong,{children:"Hugging Face"})," bundle require access to Hugging Face APIs."]}),"\n",(0,r.jsxs)(n.p,{children:["For more information about Hugging Face features and functionality used by Hugging Face components, see the ",(0,r.jsx)(n.a,{href:"https://huggingface.co/docs",children:"Hugging Face documentation"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"hugging-face-text-generation",children:"Hugging Face text generation"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.strong,{children:"Hugging Face"})," component generates text using a specified model by sending requests to the Hugging Face API, which is a hosted inference API for models hosted on Hugging Face.\nAuthentication is required."]}),"\n",(0,r.jsxs)(n.p,{children:["This component can output either a ",(0,r.jsx)(n.strong,{children:"Model Response"})," (",(0,r.jsx)(n.a,{href:"/data-types#message",children:(0,r.jsx)(n.code,{children:"Message"})}),") or a ",(0,r.jsx)(n.strong,{children:"Language Model"})," (",(0,r.jsx)(n.a,{href:"/data-types#languagemodel",children:(0,r.jsx)(n.code,{children:"LanguageModel"})}),").\nSpecifically, the ",(0,r.jsx)(n.strong,{children:"Language Model"})," output is an instance of ",(0,r.jsx)(n.a,{href:"https://docs.langchain.com/oss/python/integrations/chat/huggingface",children:(0,r.jsx)(n.code,{children:"ChatHuggingFace"})})," configured according to the component's parameters."]}),"\n",(0,r.jsxs)(n.p,{children:["Use the ",(0,r.jsx)(n.strong,{children:"Language Model"})," output when you want to use a Hugging Face model as the LLM for another LLM-driven component, such as an ",(0,r.jsx)(n.strong,{children:"Agent"})," or ",(0,r.jsx)(n.strong,{children:"Smart Transform"})," component."]}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see ",(0,r.jsx)(n.a,{href:"/components-models",children:"Language model components"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"hugging-face-text-generation-parameters",children:"Hugging Face text generation parameters"}),"\n",(0,r.jsx)(c.Ay,{}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Name"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model_id"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:'Input parameter. The model ID from Hugging Face Hub. For example, "gpt2", "facebook/bart-large".'})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"huggingfacehub_api_token"}),(0,r.jsx)(n.td,{children:"SecretString"}),(0,r.jsxs)(n.td,{children:["Input parameter. Your ",(0,r.jsx)(n.a,{href:"https://huggingface.co/docs/hub/security-tokens",children:"Hugging Face API token"})," for authentication."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"temperature"}),(0,r.jsx)(n.td,{children:"Float"}),(0,r.jsx)(n.td,{children:"Input parameter. Controls randomness in the output. Range: [0.0, 1.0]. Default: 0.7."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"max_new_tokens"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsx)(n.td,{children:"Input parameter. Maximum number of tokens to generate. Default: 512."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"top_p"}),(0,r.jsx)(n.td,{children:"Float"}),(0,r.jsx)(n.td,{children:"Input parameter. Nucleus sampling parameter. Range: [0.0, 1.0]. Default: 0.95."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"top_k"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsx)(n.td,{children:"Input parameter. Top-k sampling parameter. Default: 50."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model_kwargs"}),(0,r.jsx)(n.td,{children:"Dictionary"}),(0,r.jsx)(n.td,{children:"Input parameter. Additional keyword arguments to pass to the model."})]})]})]}),"\n",(0,r.jsx)(n.h2,{id:"hugging-face-embeddings-inference",children:"Hugging Face Embeddings Inference"}),"\n",(0,r.jsxs)(n.p,{children:["Use the ",(0,r.jsx)(n.strong,{children:"Hugging Face Embeddings Inference"})," component to create embeddings with Hugging Face's hosted models or with your own locally hosted models."]}),"\n",(0,r.jsxs)(n.p,{children:["The component generates embeddings using ",(0,r.jsx)(n.a,{href:"https://huggingface.co/models",children:"Hugging Face Inference API models"}),".\nAuthentication is required when not using a local model."]}),"\n",(0,r.jsxs)(n.p,{children:["For more information about using embedding model components in flows, see ",(0,r.jsx)(n.a,{href:"/components-embedding-models",children:"Embedding model components"})," and ",(0,r.jsx)(n.a,{href:"#local-hugging-face-model",children:"Use a local Hugging Face embeddings model"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"hugging-face-embeddings-inference-parameters",children:"Hugging Face Embeddings Inference parameters"}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Name"}),(0,r.jsx)(n.th,{children:"Display Name"}),(0,r.jsx)(n.th,{children:"Info"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"api_key"}),(0,r.jsx)(n.td,{children:"API Key"}),(0,r.jsxs)(n.td,{children:["Input parameter. Your ",(0,r.jsx)(n.a,{href:"https://huggingface.co/docs/hub/security-tokens",children:"Hugging Face API token"})," for accessing the Hugging Face Inference API, if required. Local inference models don't require an API key."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"api_url"}),(0,r.jsx)(n.td,{children:"API URL"}),(0,r.jsx)(n.td,{children:"Input parameter. The URL of the Hugging Face Inference API."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model_name"}),(0,r.jsx)(n.td,{children:"Model Name"}),(0,r.jsx)(n.td,{children:"Input parameter. The name of the model to use for embeddings."})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"local-hugging-face-model",children:"Use a local Hugging Face embeddings model"}),"\n",(0,r.jsxs)(n.p,{children:["To connect the local Hugging Face model to the ",(0,r.jsx)(n.strong,{children:"Hugging Face Embeddings Inference"})," component and use it in a flow, follow these steps:"]}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Run a ",(0,r.jsx)(n.a,{href:"https://huggingface.co/docs/text-embeddings-inference/local_cpu",children:"local Hugging Face embeddings inference"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["For this example, create a flow from the ",(0,r.jsx)(n.strong,{children:"Vector Store RAG"})," template."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Replace the two ",(0,r.jsx)(n.strong,{children:"OpenAI Embeddings"})," components with ",(0,r.jsx)(n.strong,{children:"Hugging Face Embeddings Inference"})," components."]}),"\n",(0,r.jsxs)(n.p,{children:["Make sure to reconnect the ",(0,r.jsx)(n.strong,{children:"Embedding Model"})," ports from each ",(0,r.jsx)(n.strong,{children:"Embeddings Inference"})," component to its corresponding ",(0,r.jsx)(n.strong,{children:"Astra DB"})," component."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Configure the ",(0,r.jsx)(n.strong,{children:"Astra DB"})," components to connect to your Astra organization, or replace both ",(0,r.jsx)(n.strong,{children:"Astra DB"})," components with other vector store components."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Connect each ",(0,r.jsx)(n.strong,{children:"Hugging Face Embeddings Inference"})," component to your local inference model:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Inference Endpoint"}),": Enter the URL of your local inference model."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"API Key"}),": Can be empty for local inference."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Model Name"}),": Enter the name of your local inference model if it isn't automatically detected."]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["To test the flow, click ",(0,r.jsx)(n.strong,{children:"Playground"}),", and then enter some text to generate an embedding."]}),"\n"]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}}}]); \ No newline at end of file diff --git a/assets/js/0f761898.6c645c9b.js b/assets/js/0f761898.6c645c9b.js new file mode 100644 index 0000000000..167f6ecf7d --- /dev/null +++ b/assets/js/0f761898.6c645c9b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[1490],{17886:(e,n,t)=>{t.d(n,{A:()=>i});t(96540);var s=t(64058),r=t(74848);function i({name:e,...n}){const t=s[e];return t?(0,r.jsx)(t,{...n}):null}},31929:(e,n,t)=>{t.d(n,{Ay:()=>d,RM:()=>o});var s=t(74848),r=t(28453),i=t(17886);const o=[];function c(e){const n={a:"a",p:"p",strong:"strong",...(0,r.R)(),...e.components};return(0,s.jsxs)(n.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,s.jsx)(i.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Controls"})," in the ",(0,s.jsx)(n.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function d(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},63261:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>d,metadata:()=>s,toc:()=>g});const s=JSON.parse('{"id":"Components/bundles-huggingface","title":"Hugging Face","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-huggingface.mdx","sourceDirName":"Components","slug":"/bundles-huggingface","permalink":"/bundles-huggingface","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Hugging Face","slug":"/bundles-huggingface"},"sidebar":"docs","previous":{"title":"Groq","permalink":"/bundles-groq"},"next":{"title":"IBM","permalink":"/bundles-ibm"}}');var r=t(74848),i=t(28453),o=t(17886),c=t(31929);const d={title:"Hugging Face",slug:"/bundles-huggingface"},a=void 0,l={},g=[{value:"Hugging Face text generation",id:"hugging-face-text-generation",level:2},{value:"Hugging Face text generation parameters",id:"hugging-face-text-generation-parameters",level:3},...c.RM,{value:"Hugging Face Embeddings Inference",id:"hugging-face-embeddings-inference",level:2},{value:"Hugging Face Embeddings Inference parameters",id:"hugging-face-embeddings-inference-parameters",level:3},{value:"Use a local Hugging Face embeddings model",id:"local-hugging-face-model",level:3}];function h(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",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(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:[(0,r.jsx)(o.A,{name:"Blocks","aria-hidden":"true"})," ",(0,r.jsx)(n.a,{href:"/components-bundle-components",children:(0,r.jsx)(n.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,r.jsxs)(n.p,{children:["The components in the ",(0,r.jsx)(n.strong,{children:"Hugging Face"})," bundle require access to Hugging Face APIs."]}),"\n",(0,r.jsxs)(n.p,{children:["For more information about Hugging Face features and functionality used by Hugging Face components, see the ",(0,r.jsx)(n.a,{href:"https://huggingface.co/docs",children:"Hugging Face documentation"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"hugging-face-text-generation",children:"Hugging Face text generation"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.strong,{children:"Hugging Face"})," component generates text using a specified model by sending requests to the Hugging Face API, which is a hosted inference API for models hosted on Hugging Face.\nAuthentication is required."]}),"\n",(0,r.jsxs)(n.p,{children:["This component can output either a ",(0,r.jsx)(n.strong,{children:"Model Response"})," (",(0,r.jsx)(n.a,{href:"/data-types#message",children:(0,r.jsx)(n.code,{children:"Message"})}),") or a ",(0,r.jsx)(n.strong,{children:"Language Model"})," (",(0,r.jsx)(n.a,{href:"/data-types#languagemodel",children:(0,r.jsx)(n.code,{children:"LanguageModel"})}),").\nSpecifically, the ",(0,r.jsx)(n.strong,{children:"Language Model"})," output is an instance of ",(0,r.jsx)(n.a,{href:"https://docs.langchain.com/oss/python/integrations/chat/huggingface",children:(0,r.jsx)(n.code,{children:"ChatHuggingFace"})})," configured according to the component's parameters."]}),"\n",(0,r.jsxs)(n.p,{children:["Use the ",(0,r.jsx)(n.strong,{children:"Language Model"})," output when you want to use a Hugging Face model as the LLM for another LLM-driven component, such as an ",(0,r.jsx)(n.strong,{children:"Agent"})," or ",(0,r.jsx)(n.strong,{children:"Smart Function"})," component."]}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see ",(0,r.jsx)(n.a,{href:"/components-models",children:"Language model components"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"hugging-face-text-generation-parameters",children:"Hugging Face text generation parameters"}),"\n",(0,r.jsx)(c.Ay,{}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Name"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model_id"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:'Input parameter. The model ID from Hugging Face Hub. For example, "gpt2", "facebook/bart-large".'})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"huggingfacehub_api_token"}),(0,r.jsx)(n.td,{children:"SecretString"}),(0,r.jsxs)(n.td,{children:["Input parameter. Your ",(0,r.jsx)(n.a,{href:"https://huggingface.co/docs/hub/security-tokens",children:"Hugging Face API token"})," for authentication."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"temperature"}),(0,r.jsx)(n.td,{children:"Float"}),(0,r.jsx)(n.td,{children:"Input parameter. Controls randomness in the output. Range: [0.0, 1.0]. Default: 0.7."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"max_new_tokens"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsx)(n.td,{children:"Input parameter. Maximum number of tokens to generate. Default: 512."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"top_p"}),(0,r.jsx)(n.td,{children:"Float"}),(0,r.jsx)(n.td,{children:"Input parameter. Nucleus sampling parameter. Range: [0.0, 1.0]. Default: 0.95."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"top_k"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsx)(n.td,{children:"Input parameter. Top-k sampling parameter. Default: 50."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model_kwargs"}),(0,r.jsx)(n.td,{children:"Dictionary"}),(0,r.jsx)(n.td,{children:"Input parameter. Additional keyword arguments to pass to the model."})]})]})]}),"\n",(0,r.jsx)(n.h2,{id:"hugging-face-embeddings-inference",children:"Hugging Face Embeddings Inference"}),"\n",(0,r.jsxs)(n.p,{children:["Use the ",(0,r.jsx)(n.strong,{children:"Hugging Face Embeddings Inference"})," component to create embeddings with Hugging Face's hosted models or with your own locally hosted models."]}),"\n",(0,r.jsxs)(n.p,{children:["The component generates embeddings using ",(0,r.jsx)(n.a,{href:"https://huggingface.co/models",children:"Hugging Face Inference API models"}),".\nAuthentication is required when not using a local model."]}),"\n",(0,r.jsxs)(n.p,{children:["For more information about using embedding model components in flows, see ",(0,r.jsx)(n.a,{href:"/components-embedding-models",children:"Embedding model components"})," and ",(0,r.jsx)(n.a,{href:"#local-hugging-face-model",children:"Use a local Hugging Face embeddings model"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"hugging-face-embeddings-inference-parameters",children:"Hugging Face Embeddings Inference parameters"}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Name"}),(0,r.jsx)(n.th,{children:"Display Name"}),(0,r.jsx)(n.th,{children:"Info"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"api_key"}),(0,r.jsx)(n.td,{children:"API Key"}),(0,r.jsxs)(n.td,{children:["Input parameter. Your ",(0,r.jsx)(n.a,{href:"https://huggingface.co/docs/hub/security-tokens",children:"Hugging Face API token"})," for accessing the Hugging Face Inference API, if required. Local inference models don't require an API key."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"api_url"}),(0,r.jsx)(n.td,{children:"API URL"}),(0,r.jsx)(n.td,{children:"Input parameter. The URL of the Hugging Face Inference API."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model_name"}),(0,r.jsx)(n.td,{children:"Model Name"}),(0,r.jsx)(n.td,{children:"Input parameter. The name of the model to use for embeddings."})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"local-hugging-face-model",children:"Use a local Hugging Face embeddings model"}),"\n",(0,r.jsxs)(n.p,{children:["To connect the local Hugging Face model to the ",(0,r.jsx)(n.strong,{children:"Hugging Face Embeddings Inference"})," component and use it in a flow, follow these steps:"]}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Run a ",(0,r.jsx)(n.a,{href:"https://huggingface.co/docs/text-embeddings-inference/local_cpu",children:"local Hugging Face embeddings inference"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["For this example, create a flow from the ",(0,r.jsx)(n.strong,{children:"Vector Store RAG"})," template."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Replace the two ",(0,r.jsx)(n.strong,{children:"OpenAI Embeddings"})," components with ",(0,r.jsx)(n.strong,{children:"Hugging Face Embeddings Inference"})," components."]}),"\n",(0,r.jsxs)(n.p,{children:["Make sure to reconnect the ",(0,r.jsx)(n.strong,{children:"Embedding Model"})," ports from each ",(0,r.jsx)(n.strong,{children:"Embeddings Inference"})," component to its corresponding ",(0,r.jsx)(n.strong,{children:"Astra DB"})," component."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Configure the ",(0,r.jsx)(n.strong,{children:"Astra DB"})," components to connect to your Astra organization, or replace both ",(0,r.jsx)(n.strong,{children:"Astra DB"})," components with other vector store components."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Connect each ",(0,r.jsx)(n.strong,{children:"Hugging Face Embeddings Inference"})," component to your local inference model:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Inference Endpoint"}),": Enter the URL of your local inference model."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"API Key"}),": Can be empty for local inference."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Model Name"}),": Enter the name of your local inference model if it isn't automatically detected."]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["To test the flow, click ",(0,r.jsx)(n.strong,{children:"Playground"}),", and then enter some text to generate an embedding."]}),"\n"]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}}}]); \ No newline at end of file diff --git a/assets/js/16faf8bf.06370702.js b/assets/js/16faf8bf.06370702.js new file mode 100644 index 0000000000..0bd445b378 --- /dev/null +++ b/assets/js/16faf8bf.06370702.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[9315],{17886:(e,t,n)=>{n.d(t,{A:()=>r});n(96540);var s=n(64058),d=n(74848);function r({name:e,...t}){const n=s[e];return n?(0,d.jsx)(n,{...t}):null}},31929:(e,t,n)=>{n.d(t,{Ay:()=>l,RM:()=>i});var s=n(74848),d=n(28453),r=n(17886);const i=[];function o(e){const t={a:"a",p:"p",strong:"strong",...(0,d.R)(),...e.components};return(0,s.jsxs)(t.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,s.jsx)(r.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,s.jsx)(t.strong,{children:"Controls"})," in the ",(0,s.jsx)(t.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function l(e={}){const{wrapper:t}={...(0,d.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(o,{...e})}):o(e)}},34531:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>m,frontMatter:()=>l,metadata:()=>s,toc:()=>h});const s=JSON.parse('{"id":"Components/bundles-lmstudio","title":"LM Studio","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-lmstudio.mdx","sourceDirName":"Components","slug":"/bundles-lmstudio","permalink":"/bundles-lmstudio","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"LM Studio","slug":"/bundles-lmstudio"},"sidebar":"docs","previous":{"title":"LangChain","permalink":"/bundles-langchain"},"next":{"title":"MariTalk","permalink":"/bundles-maritalk"}}');var d=n(74848),r=n(28453),i=n(17886),o=n(31929);const l={title:"LM Studio",slug:"/bundles-lmstudio"},a=void 0,c={},h=[{value:"LM Studio text generation",id:"lm-studio-text-generation",level:2},{value:"LM Studio text generation parameters",id:"lm-studio-text-generation-parameters",level:3},...o.RM,{value:"LM Studio Embeddings",id:"lm-studio-embeddings",level:2},{value:"LM Studio Embeddings parameters",id:"lm-studio-embeddings-parameters",level:3},...o.RM];function u(e){const t={a:"a",code:"code",h2:"h2",h3:"h3",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,r.R)(),...e.components};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)(t.p,{children:[(0,d.jsx)(i.A,{name:"Blocks","aria-hidden":"true"})," ",(0,d.jsx)(t.a,{href:"/components-bundle-components",children:(0,d.jsx)(t.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,d.jsxs)(t.p,{children:["The components in the ",(0,d.jsx)(t.strong,{children:"LM Studio"})," bundle let you use models from a local or hosted instance of LM Studio.\nComponents can require authentication with an LM Studio API key. For information about LM Studio models, connections, and credentials, see the ",(0,d.jsx)(t.a,{href:"https://lmstudio.ai/docs",children:"LM Studio documentation"}),"."]}),"\n",(0,d.jsx)(t.h2,{id:"lm-studio-text-generation",children:"LM Studio text generation"}),"\n",(0,d.jsxs)(t.p,{children:["The ",(0,d.jsx)(t.strong,{children:"LM Studio"})," component generates text using LM Studio's local language models."]}),"\n",(0,d.jsxs)(t.p,{children:["It can output either a ",(0,d.jsx)(t.strong,{children:"Model Response"})," (",(0,d.jsx)(t.a,{href:"/data-types#message",children:(0,d.jsx)(t.code,{children:"Message"})}),") or a ",(0,d.jsx)(t.strong,{children:"Language Model"})," (",(0,d.jsx)(t.a,{href:"/data-types#languagemodel",children:(0,d.jsx)(t.code,{children:"LanguageModel"})}),")."]}),"\n",(0,d.jsxs)(t.p,{children:["Use the ",(0,d.jsx)(t.strong,{children:"Language Model"})," output when you want to use an LM Studio model as the LLM for another LLM-driven component, such as an ",(0,d.jsx)(t.strong,{children:"Agent"})," or ",(0,d.jsx)(t.strong,{children:"Smart Function"})," component."]}),"\n",(0,d.jsxs)(t.p,{children:["For more information, see ",(0,d.jsx)(t.a,{href:"/components-models",children:"Language model components"}),"."]}),"\n",(0,d.jsx)(t.h3,{id:"lm-studio-text-generation-parameters",children:"LM Studio text generation parameters"}),"\n",(0,d.jsx)(o.Ay,{}),"\n",(0,d.jsxs)(t.table,{children:[(0,d.jsx)(t.thead,{children:(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.th,{children:"Name"}),(0,d.jsx)(t.th,{children:"Type"}),(0,d.jsx)(t.th,{children:"Description"})]})}),(0,d.jsxs)(t.tbody,{children:[(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"base_url"}),(0,d.jsx)(t.td,{children:"String"}),(0,d.jsxs)(t.td,{children:["Input parameter. The URL where LM Studio is running. Default: ",(0,d.jsx)(t.code,{children:'"http://localhost:1234"'}),"."]})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"api_key"}),(0,d.jsx)(t.td,{children:"LM Studio API Key"}),(0,d.jsx)(t.td,{children:"Input parameter. The API key for authentication with LM Studio, if required."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"max_tokens"}),(0,d.jsx)(t.td,{children:"Integer"}),(0,d.jsxs)(t.td,{children:["Input parameter. Maximum number of tokens to generate in the response. Default: ",(0,d.jsx)(t.code,{children:"512"}),"."]})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"temperature"}),(0,d.jsx)(t.td,{children:"Float"}),(0,d.jsxs)(t.td,{children:["Input parameter. Controls randomness in the output. Range: ",(0,d.jsx)(t.code,{children:"[0.0, 2.0]"}),". Default: ",(0,d.jsx)(t.code,{children:"0.7"}),"."]})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"top_p"}),(0,d.jsx)(t.td,{children:"Float"}),(0,d.jsxs)(t.td,{children:["Input parameter. Controls diversity with nucleus sampling. Range: ",(0,d.jsx)(t.code,{children:"[0.0, 1.0]"}),". Default: ",(0,d.jsx)(t.code,{children:"1.0"}),"."]})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"stop"}),(0,d.jsx)(t.td,{children:"List[String]"}),(0,d.jsx)(t.td,{children:"Input parameter. List of strings that stop generation when encountered."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"stream"}),(0,d.jsx)(t.td,{children:"Boolean"}),(0,d.jsxs)(t.td,{children:["Input parameter. Whether to stream the response. Default: ",(0,d.jsx)(t.code,{children:"false"}),"."]})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"presence_penalty"}),(0,d.jsx)(t.td,{children:"Float"}),(0,d.jsxs)(t.td,{children:["Input parameter. Penalizes repeated tokens. Range: ",(0,d.jsx)(t.code,{children:"[-2.0, 2.0]"}),". Default: ",(0,d.jsx)(t.code,{children:"0.0"}),"."]})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"frequency_penalty"}),(0,d.jsx)(t.td,{children:"Float"}),(0,d.jsxs)(t.td,{children:["Input parameter. Penalizes frequent tokens. Range: ",(0,d.jsx)(t.code,{children:"[-2.0, 2.0]"}),". Default: ",(0,d.jsx)(t.code,{children:"0.0"}),"."]})]})]})]}),"\n",(0,d.jsx)(t.h2,{id:"lm-studio-embeddings",children:"LM Studio Embeddings"}),"\n",(0,d.jsxs)(t.p,{children:["The ",(0,d.jsx)(t.strong,{children:"LM Studio Embeddings"})," component generates embeddings using LM Studio models."]}),"\n",(0,d.jsxs)(t.p,{children:["For more information about using embedding model components in flows, see ",(0,d.jsx)(t.a,{href:"/components-embedding-models",children:"Embedding model components"}),"."]}),"\n",(0,d.jsx)(t.h3,{id:"lm-studio-embeddings-parameters",children:"LM Studio Embeddings parameters"}),"\n",(0,d.jsx)(o.Ay,{}),"\n",(0,d.jsxs)(t.table,{children:[(0,d.jsx)(t.thead,{children:(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.th,{children:"Name"}),(0,d.jsx)(t.th,{children:"Display Name"}),(0,d.jsx)(t.th,{children:"Info"})]})}),(0,d.jsxs)(t.tbody,{children:[(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"model"}),(0,d.jsx)(t.td,{children:"Model"}),(0,d.jsx)(t.td,{children:"Input parameter. The LM Studio model to use for generating embeddings."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"base_url"}),(0,d.jsx)(t.td,{children:"LM Studio Base URL"}),(0,d.jsx)(t.td,{children:"Input parameter. The base URL for the LM Studio API."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"api_key"}),(0,d.jsx)(t.td,{children:"LM Studio API Key"}),(0,d.jsx)(t.td,{children:"Input parameter. The API key for authentication with LM Studio."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"temperature"}),(0,d.jsx)(t.td,{children:"Model Temperature"}),(0,d.jsx)(t.td,{children:"Input parameter. The temperature setting for the model."})]})]})]})]})}function m(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,d.jsx)(t,{...e,children:(0,d.jsx)(u,{...e})}):u(e)}}}]); \ No newline at end of file diff --git a/assets/js/16faf8bf.b8dfb4d7.js b/assets/js/16faf8bf.b8dfb4d7.js deleted file mode 100644 index 74d00c0c69..0000000000 --- a/assets/js/16faf8bf.b8dfb4d7.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[9315],{17886:(e,t,n)=>{n.d(t,{A:()=>r});n(96540);var s=n(64058),d=n(74848);function r({name:e,...t}){const n=s[e];return n?(0,d.jsx)(n,{...t}):null}},31929:(e,t,n)=>{n.d(t,{Ay:()=>l,RM:()=>i});var s=n(74848),d=n(28453),r=n(17886);const i=[];function o(e){const t={a:"a",p:"p",strong:"strong",...(0,d.R)(),...e.components};return(0,s.jsxs)(t.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,s.jsx)(r.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,s.jsx)(t.strong,{children:"Controls"})," in the ",(0,s.jsx)(t.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function l(e={}){const{wrapper:t}={...(0,d.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(o,{...e})}):o(e)}},34531:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>m,frontMatter:()=>l,metadata:()=>s,toc:()=>h});const s=JSON.parse('{"id":"Components/bundles-lmstudio","title":"LM Studio","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-lmstudio.mdx","sourceDirName":"Components","slug":"/bundles-lmstudio","permalink":"/bundles-lmstudio","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"LM Studio","slug":"/bundles-lmstudio"},"sidebar":"docs","previous":{"title":"LangChain","permalink":"/bundles-langchain"},"next":{"title":"MariTalk","permalink":"/bundles-maritalk"}}');var d=n(74848),r=n(28453),i=n(17886),o=n(31929);const l={title:"LM Studio",slug:"/bundles-lmstudio"},a=void 0,c={},h=[{value:"LM Studio text generation",id:"lm-studio-text-generation",level:2},{value:"LM Studio text generation parameters",id:"lm-studio-text-generation-parameters",level:3},...o.RM,{value:"LM Studio Embeddings",id:"lm-studio-embeddings",level:2},{value:"LM Studio Embeddings parameters",id:"lm-studio-embeddings-parameters",level:3},...o.RM];function u(e){const t={a:"a",code:"code",h2:"h2",h3:"h3",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,r.R)(),...e.components};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)(t.p,{children:[(0,d.jsx)(i.A,{name:"Blocks","aria-hidden":"true"})," ",(0,d.jsx)(t.a,{href:"/components-bundle-components",children:(0,d.jsx)(t.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,d.jsxs)(t.p,{children:["The components in the ",(0,d.jsx)(t.strong,{children:"LM Studio"})," bundle let you use models from a local or hosted instance of LM Studio.\nComponents can require authentication with an LM Studio API key. For information about LM Studio models, connections, and credentials, see the ",(0,d.jsx)(t.a,{href:"https://lmstudio.ai/docs",children:"LM Studio documentation"}),"."]}),"\n",(0,d.jsx)(t.h2,{id:"lm-studio-text-generation",children:"LM Studio text generation"}),"\n",(0,d.jsxs)(t.p,{children:["The ",(0,d.jsx)(t.strong,{children:"LM Studio"})," component generates text using LM Studio's local language models."]}),"\n",(0,d.jsxs)(t.p,{children:["It can output either a ",(0,d.jsx)(t.strong,{children:"Model Response"})," (",(0,d.jsx)(t.a,{href:"/data-types#message",children:(0,d.jsx)(t.code,{children:"Message"})}),") or a ",(0,d.jsx)(t.strong,{children:"Language Model"})," (",(0,d.jsx)(t.a,{href:"/data-types#languagemodel",children:(0,d.jsx)(t.code,{children:"LanguageModel"})}),")."]}),"\n",(0,d.jsxs)(t.p,{children:["Use the ",(0,d.jsx)(t.strong,{children:"Language Model"})," output when you want to use an LM Studio model as the LLM for another LLM-driven component, such as an ",(0,d.jsx)(t.strong,{children:"Agent"})," or ",(0,d.jsx)(t.strong,{children:"Smart Transform"})," component."]}),"\n",(0,d.jsxs)(t.p,{children:["For more information, see ",(0,d.jsx)(t.a,{href:"/components-models",children:"Language model components"}),"."]}),"\n",(0,d.jsx)(t.h3,{id:"lm-studio-text-generation-parameters",children:"LM Studio text generation parameters"}),"\n",(0,d.jsx)(o.Ay,{}),"\n",(0,d.jsxs)(t.table,{children:[(0,d.jsx)(t.thead,{children:(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.th,{children:"Name"}),(0,d.jsx)(t.th,{children:"Type"}),(0,d.jsx)(t.th,{children:"Description"})]})}),(0,d.jsxs)(t.tbody,{children:[(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"base_url"}),(0,d.jsx)(t.td,{children:"String"}),(0,d.jsxs)(t.td,{children:["Input parameter. The URL where LM Studio is running. Default: ",(0,d.jsx)(t.code,{children:'"http://localhost:1234"'}),"."]})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"api_key"}),(0,d.jsx)(t.td,{children:"LM Studio API Key"}),(0,d.jsx)(t.td,{children:"Input parameter. The API key for authentication with LM Studio, if required."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"max_tokens"}),(0,d.jsx)(t.td,{children:"Integer"}),(0,d.jsxs)(t.td,{children:["Input parameter. Maximum number of tokens to generate in the response. Default: ",(0,d.jsx)(t.code,{children:"512"}),"."]})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"temperature"}),(0,d.jsx)(t.td,{children:"Float"}),(0,d.jsxs)(t.td,{children:["Input parameter. Controls randomness in the output. Range: ",(0,d.jsx)(t.code,{children:"[0.0, 2.0]"}),". Default: ",(0,d.jsx)(t.code,{children:"0.7"}),"."]})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"top_p"}),(0,d.jsx)(t.td,{children:"Float"}),(0,d.jsxs)(t.td,{children:["Input parameter. Controls diversity with nucleus sampling. Range: ",(0,d.jsx)(t.code,{children:"[0.0, 1.0]"}),". Default: ",(0,d.jsx)(t.code,{children:"1.0"}),"."]})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"stop"}),(0,d.jsx)(t.td,{children:"List[String]"}),(0,d.jsx)(t.td,{children:"Input parameter. List of strings that stop generation when encountered."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"stream"}),(0,d.jsx)(t.td,{children:"Boolean"}),(0,d.jsxs)(t.td,{children:["Input parameter. Whether to stream the response. Default: ",(0,d.jsx)(t.code,{children:"false"}),"."]})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"presence_penalty"}),(0,d.jsx)(t.td,{children:"Float"}),(0,d.jsxs)(t.td,{children:["Input parameter. Penalizes repeated tokens. Range: ",(0,d.jsx)(t.code,{children:"[-2.0, 2.0]"}),". Default: ",(0,d.jsx)(t.code,{children:"0.0"}),"."]})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"frequency_penalty"}),(0,d.jsx)(t.td,{children:"Float"}),(0,d.jsxs)(t.td,{children:["Input parameter. Penalizes frequent tokens. Range: ",(0,d.jsx)(t.code,{children:"[-2.0, 2.0]"}),". Default: ",(0,d.jsx)(t.code,{children:"0.0"}),"."]})]})]})]}),"\n",(0,d.jsx)(t.h2,{id:"lm-studio-embeddings",children:"LM Studio Embeddings"}),"\n",(0,d.jsxs)(t.p,{children:["The ",(0,d.jsx)(t.strong,{children:"LM Studio Embeddings"})," component generates embeddings using LM Studio models."]}),"\n",(0,d.jsxs)(t.p,{children:["For more information about using embedding model components in flows, see ",(0,d.jsx)(t.a,{href:"/components-embedding-models",children:"Embedding model components"}),"."]}),"\n",(0,d.jsx)(t.h3,{id:"lm-studio-embeddings-parameters",children:"LM Studio Embeddings parameters"}),"\n",(0,d.jsx)(o.Ay,{}),"\n",(0,d.jsxs)(t.table,{children:[(0,d.jsx)(t.thead,{children:(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.th,{children:"Name"}),(0,d.jsx)(t.th,{children:"Display Name"}),(0,d.jsx)(t.th,{children:"Info"})]})}),(0,d.jsxs)(t.tbody,{children:[(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"model"}),(0,d.jsx)(t.td,{children:"Model"}),(0,d.jsx)(t.td,{children:"Input parameter. The LM Studio model to use for generating embeddings."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"base_url"}),(0,d.jsx)(t.td,{children:"LM Studio Base URL"}),(0,d.jsx)(t.td,{children:"Input parameter. The base URL for the LM Studio API."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"api_key"}),(0,d.jsx)(t.td,{children:"LM Studio API Key"}),(0,d.jsx)(t.td,{children:"Input parameter. The API key for authentication with LM Studio."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"temperature"}),(0,d.jsx)(t.td,{children:"Model Temperature"}),(0,d.jsx)(t.td,{children:"Input parameter. The temperature setting for the model."})]})]})]})]})}function m(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,d.jsx)(t,{...e,children:(0,d.jsx)(u,{...e})}):u(e)}}}]); \ No newline at end of file diff --git a/assets/js/230d5fdc.72bfd912.js b/assets/js/230d5fdc.72bfd912.js new file mode 100644 index 0000000000..6f24a5f993 --- /dev/null +++ b/assets/js/230d5fdc.72bfd912.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[9976],{17886:(e,t,n)=>{n.d(t,{A:()=>o});n(96540);var r=n(64058),s=n(74848);function o({name:e,...t}){const n=r[e];return n?(0,s.jsx)(n,{...t}):null}},25791:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>d,default:()=>u,frontMatter:()=>a,metadata:()=>r,toc:()=>h});const r=JSON.parse('{"id":"Components/bundles-vertexai","title":"Vertex AI","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-vertexai.mdx","sourceDirName":"Components","slug":"/bundles-vertexai","permalink":"/bundles-vertexai","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Vertex AI","slug":"/bundles-vertexai"},"sidebar":"docs","previous":{"title":"Vectara","permalink":"/bundles-vectara"},"next":{"title":"Weaviate","permalink":"/bundles-weaviate"}}');var s=n(74848),o=n(28453),i=n(17886),l=n(31929);const a={title:"Vertex AI",slug:"/bundles-vertexai"},d=void 0,c={},h=[{value:"Vertex AI text generation",id:"vertex-ai-text-generation",level:2},{value:"Vertex AI text generation parameters",id:"vertex-ai-text-generation-parameters",level:3},...l.RM,{value:"Vertex AI Embeddings",id:"vertex-ai-embeddings",level:2},{value:"Vertex AI Embeddings parameters",id:"vertex-ai-embeddings-parameters",level:3},...l.RM,{value:"Create a service account for Vertex AI authentication",id:"vertexai-credentials",level:2}];function x(e){const t={a:"a",code:"code",h2:"h2",h3:"h3",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(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(t.p,{children:[(0,s.jsx)(i.A,{name:"Blocks","aria-hidden":"true"})," ",(0,s.jsx)(t.a,{href:"/components-bundle-components",children:(0,s.jsx)(t.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,s.jsxs)(t.p,{children:["This page describes the components that are available in the ",(0,s.jsx)(t.strong,{children:"Vertex AI"})," bundle."]}),"\n",(0,s.jsxs)(t.p,{children:["For more information about Vertex AI features and functionality used by Vertex AI components, see the ",(0,s.jsx)(t.a,{href:"https://cloud.google.com/vertex-ai",children:"Vertex AI documentation"}),"."]}),"\n",(0,s.jsxs)(t.p,{children:["For other Google components, see the ",(0,s.jsxs)(t.a,{href:"/bundles-google",children:[(0,s.jsx)(t.strong,{children:"Google"})," bundle"]}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"vertex-ai-text-generation",children:"Vertex AI text generation"}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.strong,{children:"Vertex AI"})," component generates text using Google Vertex AI models."]}),"\n",(0,s.jsxs)(t.p,{children:["It can output either a ",(0,s.jsx)(t.strong,{children:"Model Response"})," (",(0,s.jsx)(t.a,{href:"/data-types#message",children:(0,s.jsx)(t.code,{children:"Message"})}),") or a ",(0,s.jsx)(t.strong,{children:"Language Model"})," (",(0,s.jsx)(t.a,{href:"/data-types#languagemodel",children:(0,s.jsx)(t.code,{children:"LanguageModel"})}),")."]}),"\n",(0,s.jsxs)(t.p,{children:["Use the ",(0,s.jsx)(t.strong,{children:"Language Model"})," output when you want to use a Vertex AI model as the LLM for another LLM-driven component, such as an ",(0,s.jsx)(t.strong,{children:"Agent"})," or ",(0,s.jsx)(t.strong,{children:"Smart Function"})," component."]}),"\n",(0,s.jsxs)(t.p,{children:["For more information, see ",(0,s.jsx)(t.a,{href:"/components-models",children:"Language model components"}),"."]}),"\n",(0,s.jsx)(t.h3,{id:"vertex-ai-text-generation-parameters",children:"Vertex AI text generation parameters"}),"\n",(0,s.jsx)(l.Ay,{}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"Name"}),(0,s.jsx)(t.th,{children:"Type"}),(0,s.jsx)(t.th,{children:"Description"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"credentials"}),(0,s.jsx)(t.td,{children:"File"}),(0,s.jsxs)(t.td,{children:["Input parameter. JSON credentials file. Leave empty to fall back to environment variables. File type: JSON. For more information, see ",(0,s.jsx)(t.a,{href:"#vertexai-credentials",children:"Create a service account for Vertex AI authentication"}),"."]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"model_name"}),(0,s.jsx)(t.td,{children:"String"}),(0,s.jsx)(t.td,{children:'Input parameter. The name of the Vertex AI model to use. Default: "gemini-1.5-pro".'})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"project"}),(0,s.jsx)(t.td,{children:"String"}),(0,s.jsx)(t.td,{children:"Input parameter. The project ID."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"location"}),(0,s.jsx)(t.td,{children:"String"}),(0,s.jsx)(t.td,{children:'Input parameter. The location for the Vertex AI API. Default: "us-central1".'})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"max_output_tokens"}),(0,s.jsx)(t.td,{children:"Integer"}),(0,s.jsx)(t.td,{children:"Input parameter. The maximum number of tokens to generate."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"max_retries"}),(0,s.jsx)(t.td,{children:"Integer"}),(0,s.jsx)(t.td,{children:"Input parameter. Maximum number of retries for API calls. Default: 1."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"temperature"}),(0,s.jsx)(t.td,{children:"Float"}),(0,s.jsx)(t.td,{children:"Input parameter. Controls randomness in the output. Default: 0.0."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"top_k"}),(0,s.jsx)(t.td,{children:"Integer"}),(0,s.jsx)(t.td,{children:"Input parameter. The number of highest-probability vocabulary tokens to keep for top-k-filtering."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"top_p"}),(0,s.jsx)(t.td,{children:"Float"}),(0,s.jsx)(t.td,{children:"Input parameter. The cumulative probability of all highest-probability vocabulary tokens that are kept for nucleus sampling. Default: 0.95."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"verbose"}),(0,s.jsx)(t.td,{children:"Boolean"}),(0,s.jsxs)(t.td,{children:["Input parameter. Whether to print verbose output. Default: ",(0,s.jsx)(t.code,{children:"false"}),"."]})]})]})]}),"\n",(0,s.jsxs)(t.p,{children:["For more information about Vertex AI text generation parameters, see the ",(0,s.jsx)(t.a,{href:"https://cloud.google.com/vertex-ai/generative-ai/docs/multimodal/content-generation-parameters#token-sampling-parameters",children:"Vertex AI content generation parameters documentation"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"vertex-ai-embeddings",children:"Vertex AI Embeddings"}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.strong,{children:"Vertex AI Embeddings"})," component is a wrapper around the ",(0,s.jsx)(t.a,{href:"https://cloud.google.com/vertex-ai/docs/generative-ai/embeddings/get-text-embeddings",children:"Google Vertex AI Embeddings API"})," for embedding generation."]}),"\n",(0,s.jsxs)(t.p,{children:["For more information about using embedding model components in flows, see ",(0,s.jsx)(t.a,{href:"/components-embedding-models",children:"Embedding model components"}),"."]}),"\n",(0,s.jsx)(t.h3,{id:"vertex-ai-embeddings-parameters",children:"Vertex AI Embeddings parameters"}),"\n",(0,s.jsx)(l.Ay,{}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"Name"}),(0,s.jsx)(t.th,{children:"Type"}),(0,s.jsx)(t.th,{children:"Description"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"credentials"}),(0,s.jsx)(t.td,{children:"Credentials"}),(0,s.jsxs)(t.td,{children:["Input parameter. JSON credentials file. Leave empty to fall back to environment variables. File type: JSON. For more information, see ",(0,s.jsx)(t.a,{href:"#vertexai-credentials",children:"Create a service account for Vertex AI authentication"}),"."]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"location"}),(0,s.jsx)(t.td,{children:"String"}),(0,s.jsxs)(t.td,{children:["Input parameter. The default location to use when making API calls. Default: ",(0,s.jsx)(t.code,{children:"us-central1"}),"."]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"max_output_tokens"}),(0,s.jsx)(t.td,{children:"Integer"}),(0,s.jsxs)(t.td,{children:["Input parameter. The token limit determines the maximum amount of text output from one prompt. Default: ",(0,s.jsx)(t.code,{children:"128"}),"."]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"model_name"}),(0,s.jsx)(t.td,{children:"String"}),(0,s.jsxs)(t.td,{children:["Input parameter. The name of the Vertex AI large language model. Default: ",(0,s.jsx)(t.code,{children:"text-bison"}),"."]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"project"}),(0,s.jsx)(t.td,{children:"String"}),(0,s.jsx)(t.td,{children:"Input parameter. The default GCP project to use when making Vertex API calls."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"request_parallelism"}),(0,s.jsx)(t.td,{children:"Integer"}),(0,s.jsxs)(t.td,{children:["Input parameter. The amount of parallelism allowed for requests issued to Vertex AI models. Default: ",(0,s.jsx)(t.code,{children:"5"}),"."]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"temperature"}),(0,s.jsx)(t.td,{children:"Float"}),(0,s.jsxs)(t.td,{children:["Input parameter. Tunes the degree of randomness in text generations. Should be a non-negative value. Default: ",(0,s.jsx)(t.code,{children:"0"}),"."]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"top_k"}),(0,s.jsx)(t.td,{children:"Integer"}),(0,s.jsxs)(t.td,{children:["Input parameter. How the model selects tokens for output. The next token is selected from the top ",(0,s.jsx)(t.code,{children:"k"})," tokens. Default: ",(0,s.jsx)(t.code,{children:"40"}),"."]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"top_p"}),(0,s.jsx)(t.td,{children:"Float"}),(0,s.jsxs)(t.td,{children:["Input parameter. Tokens are selected from the most probable to least until the sum of their probabilities exceeds the top ",(0,s.jsx)(t.code,{children:"p"})," value. Default: ",(0,s.jsx)(t.code,{children:"0.95"}),"."]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"tuned_model_name"}),(0,s.jsx)(t.td,{children:"String"}),(0,s.jsxs)(t.td,{children:["Input parameter. The name of a tuned model. If provided, ",(0,s.jsx)(t.code,{children:"model_name"})," is ignored."]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"verbose"}),(0,s.jsx)(t.td,{children:"Boolean"}),(0,s.jsxs)(t.td,{children:["Input parameter. This parameter controls the level of detail in the output. When set to ",(0,s.jsx)(t.code,{children:"true"}),", it prints internal states of the chain to help debug. Default: ",(0,s.jsx)(t.code,{children:"false"}),"."]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"embeddings"}),(0,s.jsx)(t.td,{children:"Embeddings"}),(0,s.jsx)(t.td,{children:"Output parameter. An instance for generating embeddings using Vertex AI."})]})]})]}),"\n",(0,s.jsx)(t.h2,{id:"vertexai-credentials",children:"Create a service account for Vertex AI authentication"}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.strong,{children:"Vertex AI Embeddings"})," and ",(0,s.jsx)(t.strong,{children:"Vertex AI"})," components authenticate with the ",(0,s.jsx)(t.a,{href:"https://console.cloud.google.com/marketplace/product/google/aiplatform.googleapis.com",children:"Google Vertex AI API"})," using a service account JSON file."]}),"\n",(0,s.jsxs)(t.p,{children:["These components require that you provide a service account JSON file in the ",(0,s.jsx)(t.strong,{children:"Credentials"})," parameter (",(0,s.jsx)(t.code,{children:"credentials"}),").\nYou can either provide the file directly in your component's settings or you can use a ",(0,s.jsxs)(t.a,{href:"https://cloud.google.com/docs/authentication/application-default-credentials",children:[(0,s.jsx)(t.code,{children:"GOOGLE_APPLICATION_CREDENTIALS"})," environment variable"]})," to reference the path to your JSON file."]}),"\n",(0,s.jsx)(t.p,{children:"The following steps explain how to create a service account for Langflow, create a service account JSON key file, and then use the JSON key file in Langflow:"}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:["If you haven't done so already, ",(0,s.jsx)(t.a,{href:"https://cloud.google.com/vertex-ai/docs/start/cloud-environment",children:"enable the Vertex AI APIs in your Google Cloud project"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:["Create a ",(0,s.jsx)(t.a,{href:"https://cloud.google.com/iam/docs/service-account-overview",children:"service account"})," in your Google Cloud project."]}),"\n",(0,s.jsxs)(t.p,{children:["It is recommended that you ",(0,s.jsx)(t.a,{href:"https://cloud.google.com/vertex-ai/docs/general/custom-service-account",children:"create a custom service account for Vertex AI"})," because Langflow uses this account to access the Vertex AI APIs."]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:["Assign the ",(0,s.jsx)(t.strong,{children:"Vertex AI Service Agent"})," role to the service account."]}),"\n",(0,s.jsxs)(t.p,{children:["This role allows Langflow to access Vertex AI resources.\nFor more information, see ",(0,s.jsx)(t.a,{href:"https://cloud.google.com/vertex-ai/docs/general/access-control",children:"Vertex AI access control with IAM"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.a,{href:"https://cloud.google.com/iam/docs/keys-create-delete#console",children:"Create a service account key"})," in JSON format for your Langflow Vertex AI service account."]}),"\n",(0,s.jsxs)(t.p,{children:["When you click ",(0,s.jsx)(t.strong,{children:"Create"}),", the JSON key file is downloaded."]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:["In Langflow, create or open a flow with the ",(0,s.jsx)(t.strong,{children:"Vertex AI"})," or ",(0,s.jsx)(t.strong,{children:"Vertex AI Embeddings"})," component."]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:["In the component's ",(0,s.jsx)(t.strong,{children:"Credentials"})," field, do one of the following:"]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsx)(t.p,{children:"Select your service account JSON file directly."}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:["Leave the ",(0,s.jsx)(t.strong,{children:"Credentials"})," field empty if you want to pull the key file from an environment variable.\nThen, you must provide the path to your JSON file in a ",(0,s.jsx)(t.code,{children:"GOOGLE_APPLICATION_CREDENTIALS"})," environment variable that is set somewhere relative to your Langflow instance.\nFor example, you can set the environment variable in your terminal, your Langflow ",(0,s.jsx)(t.code,{children:".env"})," file, or otherwise in the environment where your Langflow server or application runs."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"Select a local JSON key file for the Vertex AI component",src:n(62156).A+"",width:"1913",height:"819"})}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsx)(t.p,{children:"Run your flow to verify that Langflow can use the service account credentials successfully."}),"\n",(0,s.jsxs)(t.p,{children:["For example, in a flow with ",(0,s.jsx)(t.strong,{children:"Chat Input"}),", ",(0,s.jsx)(t.strong,{children:"Chat Output"}),", and ",(0,s.jsx)(t.strong,{children:"Vertex AI"})," components, you can open the ",(0,s.jsx)(t.strong,{children:"Playground"})," and try chatting with the LLM.\nIf the LLM responds, then the credentials are configured correctly."]}),"\n"]}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(x,{...e})}):x(e)}},31929:(e,t,n)=>{n.d(t,{Ay:()=>a,RM:()=>i});var r=n(74848),s=n(28453),o=n(17886);const i=[];function l(e){const t={a:"a",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,r.jsxs)(t.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,r.jsx)(o.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Controls"})," in the ",(0,r.jsx)(t.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function a(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},62156:(e,t,n)=>{n.d(t,{A:()=>r});const r=n.p+"assets/images/configure-vertex-ai-credentials-in-langflow-10c417c45f725fee46d4ef5f740316b3.gif"}}]); \ No newline at end of file diff --git a/assets/js/230d5fdc.8d5648fe.js b/assets/js/230d5fdc.8d5648fe.js deleted file mode 100644 index e073b234f3..0000000000 --- a/assets/js/230d5fdc.8d5648fe.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[9976],{17886:(e,t,n)=>{n.d(t,{A:()=>o});n(96540);var r=n(64058),s=n(74848);function o({name:e,...t}){const n=r[e];return n?(0,s.jsx)(n,{...t}):null}},25791:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>d,default:()=>u,frontMatter:()=>a,metadata:()=>r,toc:()=>h});const r=JSON.parse('{"id":"Components/bundles-vertexai","title":"Vertex AI","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-vertexai.mdx","sourceDirName":"Components","slug":"/bundles-vertexai","permalink":"/bundles-vertexai","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Vertex AI","slug":"/bundles-vertexai"},"sidebar":"docs","previous":{"title":"Vectara","permalink":"/bundles-vectara"},"next":{"title":"Weaviate","permalink":"/bundles-weaviate"}}');var s=n(74848),o=n(28453),i=n(17886),l=n(31929);const a={title:"Vertex AI",slug:"/bundles-vertexai"},d=void 0,c={},h=[{value:"Vertex AI text generation",id:"vertex-ai-text-generation",level:2},{value:"Vertex AI text generation parameters",id:"vertex-ai-text-generation-parameters",level:3},...l.RM,{value:"Vertex AI Embeddings",id:"vertex-ai-embeddings",level:2},{value:"Vertex AI Embeddings parameters",id:"vertex-ai-embeddings-parameters",level:3},...l.RM,{value:"Create a service account for Vertex AI authentication",id:"vertexai-credentials",level:2}];function x(e){const t={a:"a",code:"code",h2:"h2",h3:"h3",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(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(t.p,{children:[(0,s.jsx)(i.A,{name:"Blocks","aria-hidden":"true"})," ",(0,s.jsx)(t.a,{href:"/components-bundle-components",children:(0,s.jsx)(t.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,s.jsxs)(t.p,{children:["This page describes the components that are available in the ",(0,s.jsx)(t.strong,{children:"Vertex AI"})," bundle."]}),"\n",(0,s.jsxs)(t.p,{children:["For more information about Vertex AI features and functionality used by Vertex AI components, see the ",(0,s.jsx)(t.a,{href:"https://cloud.google.com/vertex-ai",children:"Vertex AI documentation"}),"."]}),"\n",(0,s.jsxs)(t.p,{children:["For other Google components, see the ",(0,s.jsxs)(t.a,{href:"/bundles-google",children:[(0,s.jsx)(t.strong,{children:"Google"})," bundle"]}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"vertex-ai-text-generation",children:"Vertex AI text generation"}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.strong,{children:"Vertex AI"})," component generates text using Google Vertex AI models."]}),"\n",(0,s.jsxs)(t.p,{children:["It can output either a ",(0,s.jsx)(t.strong,{children:"Model Response"})," (",(0,s.jsx)(t.a,{href:"/data-types#message",children:(0,s.jsx)(t.code,{children:"Message"})}),") or a ",(0,s.jsx)(t.strong,{children:"Language Model"})," (",(0,s.jsx)(t.a,{href:"/data-types#languagemodel",children:(0,s.jsx)(t.code,{children:"LanguageModel"})}),")."]}),"\n",(0,s.jsxs)(t.p,{children:["Use the ",(0,s.jsx)(t.strong,{children:"Language Model"})," output when you want to use a Vertex AI model as the LLM for another LLM-driven component, such as an ",(0,s.jsx)(t.strong,{children:"Agent"})," or ",(0,s.jsx)(t.strong,{children:"Smart Transform"})," component."]}),"\n",(0,s.jsxs)(t.p,{children:["For more information, see ",(0,s.jsx)(t.a,{href:"/components-models",children:"Language model components"}),"."]}),"\n",(0,s.jsx)(t.h3,{id:"vertex-ai-text-generation-parameters",children:"Vertex AI text generation parameters"}),"\n",(0,s.jsx)(l.Ay,{}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"Name"}),(0,s.jsx)(t.th,{children:"Type"}),(0,s.jsx)(t.th,{children:"Description"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"credentials"}),(0,s.jsx)(t.td,{children:"File"}),(0,s.jsxs)(t.td,{children:["Input parameter. JSON credentials file. Leave empty to fall back to environment variables. File type: JSON. For more information, see ",(0,s.jsx)(t.a,{href:"#vertexai-credentials",children:"Create a service account for Vertex AI authentication"}),"."]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"model_name"}),(0,s.jsx)(t.td,{children:"String"}),(0,s.jsx)(t.td,{children:'Input parameter. The name of the Vertex AI model to use. Default: "gemini-1.5-pro".'})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"project"}),(0,s.jsx)(t.td,{children:"String"}),(0,s.jsx)(t.td,{children:"Input parameter. The project ID."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"location"}),(0,s.jsx)(t.td,{children:"String"}),(0,s.jsx)(t.td,{children:'Input parameter. The location for the Vertex AI API. Default: "us-central1".'})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"max_output_tokens"}),(0,s.jsx)(t.td,{children:"Integer"}),(0,s.jsx)(t.td,{children:"Input parameter. The maximum number of tokens to generate."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"max_retries"}),(0,s.jsx)(t.td,{children:"Integer"}),(0,s.jsx)(t.td,{children:"Input parameter. Maximum number of retries for API calls. Default: 1."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"temperature"}),(0,s.jsx)(t.td,{children:"Float"}),(0,s.jsx)(t.td,{children:"Input parameter. Controls randomness in the output. Default: 0.0."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"top_k"}),(0,s.jsx)(t.td,{children:"Integer"}),(0,s.jsx)(t.td,{children:"Input parameter. The number of highest-probability vocabulary tokens to keep for top-k-filtering."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"top_p"}),(0,s.jsx)(t.td,{children:"Float"}),(0,s.jsx)(t.td,{children:"Input parameter. The cumulative probability of all highest-probability vocabulary tokens that are kept for nucleus sampling. Default: 0.95."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"verbose"}),(0,s.jsx)(t.td,{children:"Boolean"}),(0,s.jsxs)(t.td,{children:["Input parameter. Whether to print verbose output. Default: ",(0,s.jsx)(t.code,{children:"false"}),"."]})]})]})]}),"\n",(0,s.jsxs)(t.p,{children:["For more information about Vertex AI text generation parameters, see the ",(0,s.jsx)(t.a,{href:"https://cloud.google.com/vertex-ai/generative-ai/docs/multimodal/content-generation-parameters#token-sampling-parameters",children:"Vertex AI content generation parameters documentation"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"vertex-ai-embeddings",children:"Vertex AI Embeddings"}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.strong,{children:"Vertex AI Embeddings"})," component is a wrapper around the ",(0,s.jsx)(t.a,{href:"https://cloud.google.com/vertex-ai/docs/generative-ai/embeddings/get-text-embeddings",children:"Google Vertex AI Embeddings API"})," for embedding generation."]}),"\n",(0,s.jsxs)(t.p,{children:["For more information about using embedding model components in flows, see ",(0,s.jsx)(t.a,{href:"/components-embedding-models",children:"Embedding model components"}),"."]}),"\n",(0,s.jsx)(t.h3,{id:"vertex-ai-embeddings-parameters",children:"Vertex AI Embeddings parameters"}),"\n",(0,s.jsx)(l.Ay,{}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"Name"}),(0,s.jsx)(t.th,{children:"Type"}),(0,s.jsx)(t.th,{children:"Description"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"credentials"}),(0,s.jsx)(t.td,{children:"Credentials"}),(0,s.jsxs)(t.td,{children:["Input parameter. JSON credentials file. Leave empty to fall back to environment variables. File type: JSON. For more information, see ",(0,s.jsx)(t.a,{href:"#vertexai-credentials",children:"Create a service account for Vertex AI authentication"}),"."]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"location"}),(0,s.jsx)(t.td,{children:"String"}),(0,s.jsxs)(t.td,{children:["Input parameter. The default location to use when making API calls. Default: ",(0,s.jsx)(t.code,{children:"us-central1"}),"."]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"max_output_tokens"}),(0,s.jsx)(t.td,{children:"Integer"}),(0,s.jsxs)(t.td,{children:["Input parameter. The token limit determines the maximum amount of text output from one prompt. Default: ",(0,s.jsx)(t.code,{children:"128"}),"."]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"model_name"}),(0,s.jsx)(t.td,{children:"String"}),(0,s.jsxs)(t.td,{children:["Input parameter. The name of the Vertex AI large language model. Default: ",(0,s.jsx)(t.code,{children:"text-bison"}),"."]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"project"}),(0,s.jsx)(t.td,{children:"String"}),(0,s.jsx)(t.td,{children:"Input parameter. The default GCP project to use when making Vertex API calls."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"request_parallelism"}),(0,s.jsx)(t.td,{children:"Integer"}),(0,s.jsxs)(t.td,{children:["Input parameter. The amount of parallelism allowed for requests issued to Vertex AI models. Default: ",(0,s.jsx)(t.code,{children:"5"}),"."]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"temperature"}),(0,s.jsx)(t.td,{children:"Float"}),(0,s.jsxs)(t.td,{children:["Input parameter. Tunes the degree of randomness in text generations. Should be a non-negative value. Default: ",(0,s.jsx)(t.code,{children:"0"}),"."]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"top_k"}),(0,s.jsx)(t.td,{children:"Integer"}),(0,s.jsxs)(t.td,{children:["Input parameter. How the model selects tokens for output. The next token is selected from the top ",(0,s.jsx)(t.code,{children:"k"})," tokens. Default: ",(0,s.jsx)(t.code,{children:"40"}),"."]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"top_p"}),(0,s.jsx)(t.td,{children:"Float"}),(0,s.jsxs)(t.td,{children:["Input parameter. Tokens are selected from the most probable to least until the sum of their probabilities exceeds the top ",(0,s.jsx)(t.code,{children:"p"})," value. Default: ",(0,s.jsx)(t.code,{children:"0.95"}),"."]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"tuned_model_name"}),(0,s.jsx)(t.td,{children:"String"}),(0,s.jsxs)(t.td,{children:["Input parameter. The name of a tuned model. If provided, ",(0,s.jsx)(t.code,{children:"model_name"})," is ignored."]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"verbose"}),(0,s.jsx)(t.td,{children:"Boolean"}),(0,s.jsxs)(t.td,{children:["Input parameter. This parameter controls the level of detail in the output. When set to ",(0,s.jsx)(t.code,{children:"true"}),", it prints internal states of the chain to help debug. Default: ",(0,s.jsx)(t.code,{children:"false"}),"."]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"embeddings"}),(0,s.jsx)(t.td,{children:"Embeddings"}),(0,s.jsx)(t.td,{children:"Output parameter. An instance for generating embeddings using Vertex AI."})]})]})]}),"\n",(0,s.jsx)(t.h2,{id:"vertexai-credentials",children:"Create a service account for Vertex AI authentication"}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.strong,{children:"Vertex AI Embeddings"})," and ",(0,s.jsx)(t.strong,{children:"Vertex AI"})," components authenticate with the ",(0,s.jsx)(t.a,{href:"https://console.cloud.google.com/marketplace/product/google/aiplatform.googleapis.com",children:"Google Vertex AI API"})," using a service account JSON file."]}),"\n",(0,s.jsxs)(t.p,{children:["These components require that you provide a service account JSON file in the ",(0,s.jsx)(t.strong,{children:"Credentials"})," parameter (",(0,s.jsx)(t.code,{children:"credentials"}),").\nYou can either provide the file directly in your component's settings or you can use a ",(0,s.jsxs)(t.a,{href:"https://cloud.google.com/docs/authentication/application-default-credentials",children:[(0,s.jsx)(t.code,{children:"GOOGLE_APPLICATION_CREDENTIALS"})," environment variable"]})," to reference the path to your JSON file."]}),"\n",(0,s.jsx)(t.p,{children:"The following steps explain how to create a service account for Langflow, create a service account JSON key file, and then use the JSON key file in Langflow:"}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:["If you haven't done so already, ",(0,s.jsx)(t.a,{href:"https://cloud.google.com/vertex-ai/docs/start/cloud-environment",children:"enable the Vertex AI APIs in your Google Cloud project"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:["Create a ",(0,s.jsx)(t.a,{href:"https://cloud.google.com/iam/docs/service-account-overview",children:"service account"})," in your Google Cloud project."]}),"\n",(0,s.jsxs)(t.p,{children:["It is recommended that you ",(0,s.jsx)(t.a,{href:"https://cloud.google.com/vertex-ai/docs/general/custom-service-account",children:"create a custom service account for Vertex AI"})," because Langflow uses this account to access the Vertex AI APIs."]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:["Assign the ",(0,s.jsx)(t.strong,{children:"Vertex AI Service Agent"})," role to the service account."]}),"\n",(0,s.jsxs)(t.p,{children:["This role allows Langflow to access Vertex AI resources.\nFor more information, see ",(0,s.jsx)(t.a,{href:"https://cloud.google.com/vertex-ai/docs/general/access-control",children:"Vertex AI access control with IAM"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.a,{href:"https://cloud.google.com/iam/docs/keys-create-delete#console",children:"Create a service account key"})," in JSON format for your Langflow Vertex AI service account."]}),"\n",(0,s.jsxs)(t.p,{children:["When you click ",(0,s.jsx)(t.strong,{children:"Create"}),", the JSON key file is downloaded."]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:["In Langflow, create or open a flow with the ",(0,s.jsx)(t.strong,{children:"Vertex AI"})," or ",(0,s.jsx)(t.strong,{children:"Vertex AI Embeddings"})," component."]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:["In the component's ",(0,s.jsx)(t.strong,{children:"Credentials"})," field, do one of the following:"]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsx)(t.p,{children:"Select your service account JSON file directly."}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:["Leave the ",(0,s.jsx)(t.strong,{children:"Credentials"})," field empty if you want to pull the key file from an environment variable.\nThen, you must provide the path to your JSON file in a ",(0,s.jsx)(t.code,{children:"GOOGLE_APPLICATION_CREDENTIALS"})," environment variable that is set somewhere relative to your Langflow instance.\nFor example, you can set the environment variable in your terminal, your Langflow ",(0,s.jsx)(t.code,{children:".env"})," file, or otherwise in the environment where your Langflow server or application runs."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"Select a local JSON key file for the Vertex AI component",src:n(62156).A+"",width:"1913",height:"819"})}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsx)(t.p,{children:"Run your flow to verify that Langflow can use the service account credentials successfully."}),"\n",(0,s.jsxs)(t.p,{children:["For example, in a flow with ",(0,s.jsx)(t.strong,{children:"Chat Input"}),", ",(0,s.jsx)(t.strong,{children:"Chat Output"}),", and ",(0,s.jsx)(t.strong,{children:"Vertex AI"})," components, you can open the ",(0,s.jsx)(t.strong,{children:"Playground"})," and try chatting with the LLM.\nIf the LLM responds, then the credentials are configured correctly."]}),"\n"]}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(x,{...e})}):x(e)}},31929:(e,t,n)=>{n.d(t,{Ay:()=>a,RM:()=>i});var r=n(74848),s=n(28453),o=n(17886);const i=[];function l(e){const t={a:"a",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,r.jsxs)(t.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,r.jsx)(o.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Controls"})," in the ",(0,r.jsx)(t.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function a(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},62156:(e,t,n)=>{n.d(t,{A:()=>r});const r=n.p+"assets/images/configure-vertex-ai-credentials-in-langflow-10c417c45f725fee46d4ef5f740316b3.gif"}}]); \ No newline at end of file diff --git a/assets/js/2ab0d4f5.f888ca0e.js b/assets/js/2ab0d4f5.ffb9c13f.js similarity index 50% rename from assets/js/2ab0d4f5.f888ca0e.js rename to assets/js/2ab0d4f5.ffb9c13f.js index e522e5f705..567695a081 100644 --- a/assets/js/2ab0d4f5.f888ca0e.js +++ b/assets/js/2ab0d4f5.ffb9c13f.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.6.0"},"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 \\"esse_f1e\\": \\"\\",\\n \\"laborum_5\\": \\"\\"\\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.6.0"},"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 \\"in_d\\": \\"\\",\\n \\"Duis_79\\": \\"\\"\\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/2ea623f2.71fb0ad4.js b/assets/js/2ea623f2.71fb0ad4.js new file mode 100644 index 0000000000..3f53a34c07 --- /dev/null +++ b/assets/js/2ea623f2.71fb0ad4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[7356],{17886:(e,n,t)=>{t.d(n,{A:()=>d});t(96540);var r=t(64058),s=t(74848);function d({name:e,...n}){const t=r[e];return t?(0,s.jsx)(t,{...n}):null}},31929:(e,n,t)=>{t.d(n,{Ay:()=>a,RM:()=>i});var r=t(74848),s=t(28453),d=t(17886);const i=[];function o(e){const n={a:"a",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,r.jsxs)(n.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,r.jsx)(d.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,r.jsx)(n.strong,{children:"Controls"})," in the ",(0,r.jsx)(n.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function a(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(o,{...e})}):o(e)}},93792:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>c,default:()=>x,frontMatter:()=>a,metadata:()=>r,toc:()=>h});const r=JSON.parse('{"id":"Components/bundles-amazon","title":"Amazon","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-amazon.mdx","sourceDirName":"Components","slug":"/bundles-amazon","permalink":"/bundles-amazon","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Amazon","slug":"/bundles-amazon"},"sidebar":"docs","previous":{"title":"AI/ML API","permalink":"/bundles-aiml"},"next":{"title":"Anthropic","permalink":"/bundles-anthropic"}}');var s=t(74848),d=t(28453),i=t(17886),o=t(31929);const a={title:"Amazon",slug:"/bundles-amazon"},c=void 0,l={},h=[{value:"Amazon Bedrock",id:"amazon-bedrock",level:2},{value:"Amazon Bedrock parameters",id:"amazon-bedrock-parameters",level:3},...o.RM,{value:"Amazon Bedrock Embeddings",id:"amazon-bedrock-embeddings",level:2},{value:"Amazon Bedrock Embeddings parameters",id:"amazon-bedrock-embeddings-parameters",level:3},...o.RM,{value:"S3 Bucket Uploader",id:"s3-bucket-uploader",level:2},{value:"S3 Bucket Uploader parameters",id:"s3-bucket-uploader-parameters",level:3},...o.RM];function p(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,d.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:[(0,s.jsx)(i.A,{name:"Blocks","aria-hidden":"true"})," ",(0,s.jsx)(n.a,{href:"/components-bundle-components",children:(0,s.jsx)(n.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,s.jsxs)(n.p,{children:["This page describes the components that are available in the ",(0,s.jsx)(n.strong,{children:"Amazon"})," bundle."]}),"\n",(0,s.jsx)(n.h2,{id:"amazon-bedrock",children:"Amazon Bedrock"}),"\n",(0,s.jsxs)(n.p,{children:["This component generates text using ",(0,s.jsx)(n.a,{href:"https://docs.aws.amazon.com/bedrock",children:"Amazon Bedrock LLMs"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["It can output either a ",(0,s.jsx)(n.strong,{children:"Model Response"})," (",(0,s.jsx)(n.a,{href:"/data-types#message",children:(0,s.jsx)(n.code,{children:"Message"})}),") or a ",(0,s.jsx)(n.strong,{children:"Language Model"})," (",(0,s.jsx)(n.a,{href:"/data-types#languagemodel",children:(0,s.jsx)(n.code,{children:"LanguageModel"})}),").\nSpecifically, the ",(0,s.jsx)(n.strong,{children:"Language Model"})," output is an instance of ",(0,s.jsx)(n.a,{href:"https://docs.langchain.com/oss/python/integrations/chat/bedrock",children:(0,s.jsx)(n.code,{children:"ChatBedrock"})})," configured according to the component's parameters."]}),"\n",(0,s.jsxs)(n.p,{children:["Use the ",(0,s.jsx)(n.strong,{children:"Language Model"})," output when you want to use an Amazon Bedrock model as the LLM for another LLM-driven component, such as an ",(0,s.jsx)(n.strong,{children:"Agent"})," or ",(0,s.jsx)(n.strong,{children:"Smart Function"})," component."]}),"\n",(0,s.jsxs)(n.p,{children:["For more information, see ",(0,s.jsx)(n.a,{href:"/components-models",children:"Language model components"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"amazon-bedrock-parameters",children:"Amazon Bedrock parameters"}),"\n",(0,s.jsx)(o.Ay,{}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Name"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"input"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The input string for text generation."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"system_message"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. A system message to pass to the model."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"stream"}),(0,s.jsx)(n.td,{children:"Boolean"}),(0,s.jsxs)(n.td,{children:["Input parameter. Whether to stream the response. Only works in chat. Default: ",(0,s.jsx)(n.code,{children:"false"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"model_id"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The Amazon Bedrock model to use."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"aws_access_key_id"}),(0,s.jsx)(n.td,{children:"SecretString"}),(0,s.jsx)(n.td,{children:"Input parameter. AWS Access Key for authentication."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"aws_secret_access_key"}),(0,s.jsx)(n.td,{children:"SecretString"}),(0,s.jsx)(n.td,{children:"Input parameter. AWS Secret Key for authentication."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"aws_session_token"}),(0,s.jsx)(n.td,{children:"SecretString"}),(0,s.jsx)(n.td,{children:"Input parameter. The session key for your AWS account."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"credentials_profile_name"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. Name of the AWS credentials profile to use."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"region_name"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsxs)(n.td,{children:["Input parameter. AWS region where your Bedrock resources are located. Default: ",(0,s.jsx)(n.code,{children:"us-east-1"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"model_kwargs"}),(0,s.jsx)(n.td,{children:"Dictionary"}),(0,s.jsx)(n.td,{children:"Input parameter. Additional keyword arguments to pass to the model."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"endpoint_url"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. Custom endpoint URL for a Bedrock service."})]})]})]}),"\n",(0,s.jsx)(n.h2,{id:"amazon-bedrock-embeddings",children:"Amazon Bedrock Embeddings"}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.strong,{children:"Amazon Bedrock Embeddings"})," component is used to load embedding models from ",(0,s.jsx)(n.a,{href:"https://aws.amazon.com/bedrock/",children:"Amazon Bedrock"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["For more information about using embedding model components in flows, see ",(0,s.jsx)(n.a,{href:"/components-embedding-models",children:"Embedding model components"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"amazon-bedrock-embeddings-parameters",children:"Amazon Bedrock Embeddings parameters"}),"\n",(0,s.jsx)(o.Ay,{}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Name"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"model_id"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsxs)(n.td,{children:["Input parameter. The ID of the model to call, such as ",(0,s.jsx)(n.code,{children:"amazon.titan-embed-text-v1"}),". This is equivalent to the ",(0,s.jsx)(n.code,{children:"modelId"})," property in the ",(0,s.jsx)(n.code,{children:"list-foundation-models"})," API."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"aws_access_key_id"}),(0,s.jsx)(n.td,{children:"SecretString"}),(0,s.jsx)(n.td,{children:"Input parameter. AWS Access Key for authentication."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"aws_secret_access_key"}),(0,s.jsx)(n.td,{children:"SecretString"}),(0,s.jsx)(n.td,{children:"Input parameter. AWS Secret Key for authentication."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"aws_session_token"}),(0,s.jsx)(n.td,{children:"SecretString"}),(0,s.jsx)(n.td,{children:"Input parameter. The session key for your AWS account."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"credentials_profile_name"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsxs)(n.td,{children:["Input parameter. The name of the AWS credentials profile in ",(0,s.jsx)(n.code,{children:"~/.aws/credentials"})," or ",(0,s.jsx)(n.code,{children:"~/.aws/config"}),", which has access keys or role information."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"region_name"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsxs)(n.td,{children:["Input parameter. The AWS region to use, such as ",(0,s.jsx)(n.code,{children:"us-west-2"}),". Falls back to the ",(0,s.jsx)(n.code,{children:"AWS_DEFAULT_REGION"})," environment variable or region specified in ",(0,s.jsx)(n.code,{children:"~/.aws/config"})," if not provided."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"endpoint_url"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The URL to set a specific service endpoint other than the default AWS endpoint."})]})]})]}),"\n",(0,s.jsx)(n.h2,{id:"s3-bucket-uploader",children:"S3 Bucket Uploader"}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.strong,{children:"S3 Bucket Uploader"})," component uploads files to an Amazon S3 bucket.\nIt is designed to process ",(0,s.jsx)(n.code,{children:"Data"})," input from a ",(0,s.jsx)(n.strong,{children:"File"})," or ",(0,s.jsx)(n.strong,{children:"Directory"})," component.\nIf you upload ",(0,s.jsx)(n.code,{children:"Data"})," from other components, test the results before running the flow in production."]}),"\n",(0,s.jsxs)(n.p,{children:["Requires the ",(0,s.jsx)(n.code,{children:"boto3"})," package, which is included in your Langflow installation."]}),"\n",(0,s.jsx)(n.p,{children:"The component produces logs but it doesn't emit output to the flow."}),"\n",(0,s.jsx)(n.h3,{id:"s3-bucket-uploader-parameters",children:"S3 Bucket Uploader parameters"}),"\n",(0,s.jsx)(o.Ay,{}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Name"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"AWS Access Key ID"})}),(0,s.jsx)(n.td,{children:"SecretString"}),(0,s.jsx)(n.td,{children:"Input parameter. AWS Access Key ID for authentication."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"AWS Secret Key"})}),(0,s.jsx)(n.td,{children:"SecretString"}),(0,s.jsx)(n.td,{children:"Input parameter. AWS Secret Key for authentication."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Bucket Name"})}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The name of the S3 bucket to upload files to."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Strategy for file upload"})}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsxs)(n.td,{children:["Input parameter. The file upload strategy. ",(0,s.jsx)(n.strong,{children:"Store Data"})," (default) iterates over ",(0,s.jsx)(n.code,{children:"Data"})," inputs, logs the file path and text content, and uploads each file to the specified S3 bucket if both file path and text content are available. ",(0,s.jsx)(n.strong,{children:"Store Original File"})," iterates through the list of data inputs, retrieves the file path from each data item, uploads the file to the specified S3 bucket if the file path is available, and logs the file path being uploaded."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Data Inputs"})}),(0,s.jsx)(n.td,{children:"Data"}),(0,s.jsxs)(n.td,{children:["Input parameter. The ",(0,s.jsx)(n.code,{children:"Data"})," input to iterate over and upload as files in the specified S3 bucket."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"S3 Prefix"})}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. Optional prefix (folder path) within the S3 bucket where files will be uploaded."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Strip Path"})}),(0,s.jsx)(n.td,{children:"Boolean"}),(0,s.jsxs)(n.td,{children:["Input parameter. Whether to strip the file path when uploading. Default: ",(0,s.jsx)(n.code,{children:"false"}),"."]})]})]})]})]})}function x(e={}){const{wrapper:n}={...(0,d.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(p,{...e})}):p(e)}}}]); \ No newline at end of file diff --git a/assets/js/2ea623f2.deacdac4.js b/assets/js/2ea623f2.deacdac4.js deleted file mode 100644 index 59d0f1ac69..0000000000 --- a/assets/js/2ea623f2.deacdac4.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[7356],{17886:(e,n,t)=>{t.d(n,{A:()=>d});t(96540);var r=t(64058),s=t(74848);function d({name:e,...n}){const t=r[e];return t?(0,s.jsx)(t,{...n}):null}},31929:(e,n,t)=>{t.d(n,{Ay:()=>a,RM:()=>i});var r=t(74848),s=t(28453),d=t(17886);const i=[];function o(e){const n={a:"a",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,r.jsxs)(n.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,r.jsx)(d.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,r.jsx)(n.strong,{children:"Controls"})," in the ",(0,r.jsx)(n.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function a(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(o,{...e})}):o(e)}},93792:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>c,default:()=>x,frontMatter:()=>a,metadata:()=>r,toc:()=>h});const r=JSON.parse('{"id":"Components/bundles-amazon","title":"Amazon","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-amazon.mdx","sourceDirName":"Components","slug":"/bundles-amazon","permalink":"/bundles-amazon","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Amazon","slug":"/bundles-amazon"},"sidebar":"docs","previous":{"title":"AI/ML API","permalink":"/bundles-aiml"},"next":{"title":"Anthropic","permalink":"/bundles-anthropic"}}');var s=t(74848),d=t(28453),i=t(17886),o=t(31929);const a={title:"Amazon",slug:"/bundles-amazon"},c=void 0,l={},h=[{value:"Amazon Bedrock",id:"amazon-bedrock",level:2},{value:"Amazon Bedrock parameters",id:"amazon-bedrock-parameters",level:3},...o.RM,{value:"Amazon Bedrock Embeddings",id:"amazon-bedrock-embeddings",level:2},{value:"Amazon Bedrock Embeddings parameters",id:"amazon-bedrock-embeddings-parameters",level:3},...o.RM,{value:"S3 Bucket Uploader",id:"s3-bucket-uploader",level:2},{value:"S3 Bucket Uploader parameters",id:"s3-bucket-uploader-parameters",level:3},...o.RM];function p(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,d.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:[(0,s.jsx)(i.A,{name:"Blocks","aria-hidden":"true"})," ",(0,s.jsx)(n.a,{href:"/components-bundle-components",children:(0,s.jsx)(n.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,s.jsxs)(n.p,{children:["This page describes the components that are available in the ",(0,s.jsx)(n.strong,{children:"Amazon"})," bundle."]}),"\n",(0,s.jsx)(n.h2,{id:"amazon-bedrock",children:"Amazon Bedrock"}),"\n",(0,s.jsxs)(n.p,{children:["This component generates text using ",(0,s.jsx)(n.a,{href:"https://docs.aws.amazon.com/bedrock",children:"Amazon Bedrock LLMs"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["It can output either a ",(0,s.jsx)(n.strong,{children:"Model Response"})," (",(0,s.jsx)(n.a,{href:"/data-types#message",children:(0,s.jsx)(n.code,{children:"Message"})}),") or a ",(0,s.jsx)(n.strong,{children:"Language Model"})," (",(0,s.jsx)(n.a,{href:"/data-types#languagemodel",children:(0,s.jsx)(n.code,{children:"LanguageModel"})}),").\nSpecifically, the ",(0,s.jsx)(n.strong,{children:"Language Model"})," output is an instance of ",(0,s.jsx)(n.a,{href:"https://docs.langchain.com/oss/python/integrations/chat/bedrock",children:(0,s.jsx)(n.code,{children:"ChatBedrock"})})," configured according to the component's parameters."]}),"\n",(0,s.jsxs)(n.p,{children:["Use the ",(0,s.jsx)(n.strong,{children:"Language Model"})," output when you want to use an Amazon Bedrock model as the LLM for another LLM-driven component, such as an ",(0,s.jsx)(n.strong,{children:"Agent"})," or ",(0,s.jsx)(n.strong,{children:"Smart Transform"})," component."]}),"\n",(0,s.jsxs)(n.p,{children:["For more information, see ",(0,s.jsx)(n.a,{href:"/components-models",children:"Language model components"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"amazon-bedrock-parameters",children:"Amazon Bedrock parameters"}),"\n",(0,s.jsx)(o.Ay,{}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Name"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"input"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The input string for text generation."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"system_message"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. A system message to pass to the model."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"stream"}),(0,s.jsx)(n.td,{children:"Boolean"}),(0,s.jsxs)(n.td,{children:["Input parameter. Whether to stream the response. Only works in chat. Default: ",(0,s.jsx)(n.code,{children:"false"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"model_id"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The Amazon Bedrock model to use."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"aws_access_key_id"}),(0,s.jsx)(n.td,{children:"SecretString"}),(0,s.jsx)(n.td,{children:"Input parameter. AWS Access Key for authentication."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"aws_secret_access_key"}),(0,s.jsx)(n.td,{children:"SecretString"}),(0,s.jsx)(n.td,{children:"Input parameter. AWS Secret Key for authentication."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"aws_session_token"}),(0,s.jsx)(n.td,{children:"SecretString"}),(0,s.jsx)(n.td,{children:"Input parameter. The session key for your AWS account."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"credentials_profile_name"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. Name of the AWS credentials profile to use."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"region_name"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsxs)(n.td,{children:["Input parameter. AWS region where your Bedrock resources are located. Default: ",(0,s.jsx)(n.code,{children:"us-east-1"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"model_kwargs"}),(0,s.jsx)(n.td,{children:"Dictionary"}),(0,s.jsx)(n.td,{children:"Input parameter. Additional keyword arguments to pass to the model."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"endpoint_url"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. Custom endpoint URL for a Bedrock service."})]})]})]}),"\n",(0,s.jsx)(n.h2,{id:"amazon-bedrock-embeddings",children:"Amazon Bedrock Embeddings"}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.strong,{children:"Amazon Bedrock Embeddings"})," component is used to load embedding models from ",(0,s.jsx)(n.a,{href:"https://aws.amazon.com/bedrock/",children:"Amazon Bedrock"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["For more information about using embedding model components in flows, see ",(0,s.jsx)(n.a,{href:"/components-embedding-models",children:"Embedding model components"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"amazon-bedrock-embeddings-parameters",children:"Amazon Bedrock Embeddings parameters"}),"\n",(0,s.jsx)(o.Ay,{}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Name"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"model_id"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsxs)(n.td,{children:["Input parameter. The ID of the model to call, such as ",(0,s.jsx)(n.code,{children:"amazon.titan-embed-text-v1"}),". This is equivalent to the ",(0,s.jsx)(n.code,{children:"modelId"})," property in the ",(0,s.jsx)(n.code,{children:"list-foundation-models"})," API."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"aws_access_key_id"}),(0,s.jsx)(n.td,{children:"SecretString"}),(0,s.jsx)(n.td,{children:"Input parameter. AWS Access Key for authentication."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"aws_secret_access_key"}),(0,s.jsx)(n.td,{children:"SecretString"}),(0,s.jsx)(n.td,{children:"Input parameter. AWS Secret Key for authentication."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"aws_session_token"}),(0,s.jsx)(n.td,{children:"SecretString"}),(0,s.jsx)(n.td,{children:"Input parameter. The session key for your AWS account."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"credentials_profile_name"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsxs)(n.td,{children:["Input parameter. The name of the AWS credentials profile in ",(0,s.jsx)(n.code,{children:"~/.aws/credentials"})," or ",(0,s.jsx)(n.code,{children:"~/.aws/config"}),", which has access keys or role information."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"region_name"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsxs)(n.td,{children:["Input parameter. The AWS region to use, such as ",(0,s.jsx)(n.code,{children:"us-west-2"}),". Falls back to the ",(0,s.jsx)(n.code,{children:"AWS_DEFAULT_REGION"})," environment variable or region specified in ",(0,s.jsx)(n.code,{children:"~/.aws/config"})," if not provided."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"endpoint_url"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The URL to set a specific service endpoint other than the default AWS endpoint."})]})]})]}),"\n",(0,s.jsx)(n.h2,{id:"s3-bucket-uploader",children:"S3 Bucket Uploader"}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.strong,{children:"S3 Bucket Uploader"})," component uploads files to an Amazon S3 bucket.\nIt is designed to process ",(0,s.jsx)(n.code,{children:"Data"})," input from a ",(0,s.jsx)(n.strong,{children:"File"})," or ",(0,s.jsx)(n.strong,{children:"Directory"})," component.\nIf you upload ",(0,s.jsx)(n.code,{children:"Data"})," from other components, test the results before running the flow in production."]}),"\n",(0,s.jsxs)(n.p,{children:["Requires the ",(0,s.jsx)(n.code,{children:"boto3"})," package, which is included in your Langflow installation."]}),"\n",(0,s.jsx)(n.p,{children:"The component produces logs but it doesn't emit output to the flow."}),"\n",(0,s.jsx)(n.h3,{id:"s3-bucket-uploader-parameters",children:"S3 Bucket Uploader parameters"}),"\n",(0,s.jsx)(o.Ay,{}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Name"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"AWS Access Key ID"})}),(0,s.jsx)(n.td,{children:"SecretString"}),(0,s.jsx)(n.td,{children:"Input parameter. AWS Access Key ID for authentication."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"AWS Secret Key"})}),(0,s.jsx)(n.td,{children:"SecretString"}),(0,s.jsx)(n.td,{children:"Input parameter. AWS Secret Key for authentication."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Bucket Name"})}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The name of the S3 bucket to upload files to."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Strategy for file upload"})}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsxs)(n.td,{children:["Input parameter. The file upload strategy. ",(0,s.jsx)(n.strong,{children:"Store Data"})," (default) iterates over ",(0,s.jsx)(n.code,{children:"Data"})," inputs, logs the file path and text content, and uploads each file to the specified S3 bucket if both file path and text content are available. ",(0,s.jsx)(n.strong,{children:"Store Original File"})," iterates through the list of data inputs, retrieves the file path from each data item, uploads the file to the specified S3 bucket if the file path is available, and logs the file path being uploaded."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Data Inputs"})}),(0,s.jsx)(n.td,{children:"Data"}),(0,s.jsxs)(n.td,{children:["Input parameter. The ",(0,s.jsx)(n.code,{children:"Data"})," input to iterate over and upload as files in the specified S3 bucket."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"S3 Prefix"})}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. Optional prefix (folder path) within the S3 bucket where files will be uploaded."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Strip Path"})}),(0,s.jsx)(n.td,{children:"Boolean"}),(0,s.jsxs)(n.td,{children:["Input parameter. Whether to strip the file path when uploading. Default: ",(0,s.jsx)(n.code,{children:"false"}),"."]})]})]})]})]})}function x(e={}){const{wrapper:n}={...(0,d.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(p,{...e})}):p(e)}}}]); \ No newline at end of file diff --git a/assets/js/33b5ee95.c5f2f436.js b/assets/js/33b5ee95.b97cd5b1.js similarity index 76% rename from assets/js/33b5ee95.c5f2f436.js rename to assets/js/33b5ee95.b97cd5b1.js index c02acf853b..eb0ae8f621 100644 --- a/assets/js/33b5ee95.c5f2f436.js +++ b/assets/js/33b5ee95.b97cd5b1.js @@ -1 +1 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[750],{7685:(e,n,t)=>{t.d(n,{A:()=>o});const o=t.p+"assets/images/vector-store-document-ingestion-6157311fb4d16e7f944d55254f0cc0e2.png"},11470:(e,n,t)=>{t.d(n,{A:()=>w});var o=t(96540),s=t(18215),r=t(23104),a=t(56347),i=t(205),l=t(57485),d=t(31682),c=t(70679);function h(e){return o.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,o.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)})?.filter(Boolean)??[]}function u(e){const{values:n,children:t}=e;return(0,o.useMemo)(()=>{const e=n??function(e){return h(e).map(({props:{value:e,label:n,attributes:t,default:o}})=>({value:e,label:n,attributes:t,default:o}))}(t);return function(e){const n=(0,d.XI)(e,(e,n)=>e.value===n.value);if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map(e=>e.value).join(", ")}" found in . Every value needs to be unique.`)}(e),e},[n,t])}function p({value:e,tabValues:n}){return n.some(n=>n.value===e)}function m({queryString:e=!1,groupId:n}){const t=(0,a.W6)(),s=function({queryString:e=!1,groupId:n}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:e,groupId:n});return[(0,l.aZ)(s),(0,o.useCallback)(e=>{if(!s)return;const n=new URLSearchParams(t.location.search);n.set(s,e),t.replace({...t.location,search:n.toString()})},[s,t])]}function g(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,r=u(e),[a,l]=(0,o.useState)(()=>function({defaultValue:e,tabValues:n}){if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(e){if(!p({value:e,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${n.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const t=n.find(e=>e.default)??n[0];if(!t)throw new Error("Unexpected error: 0 tabValues");return t.value}({defaultValue:n,tabValues:r})),[d,h]=m({queryString:t,groupId:s}),[g,x]=function({groupId:e}){const n=function(e){return e?`docusaurus.tab.${e}`:null}(e),[t,s]=(0,c.Dv)(n);return[t,(0,o.useCallback)(e=>{n&&s.set(e)},[n,s])]}({groupId:s}),f=(()=>{const e=d??g;return p({value:e,tabValues:r})?e:null})();(0,i.A)(()=>{f&&l(f)},[f]);return{selectedValue:a,selectValue:(0,o.useCallback)(e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),h(e),x(e)},[h,x,r]),tabValues:r}}var x=t(92303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=t(74848);function y({className:e,block:n,selectedValue:t,selectValue:o,tabValues:a}){const i=[],{blockElementScrollPositionUntilNextRender:l}=(0,r.a_)(),d=e=>{const n=e.currentTarget,s=i.indexOf(n),r=a[s].value;r!==t&&(l(n),o(r))},c=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const t=i.indexOf(e.currentTarget)+1;n=i[t]??i[0];break}case"ArrowLeft":{const t=i.indexOf(e.currentTarget)-1;n=i[t]??i[i.length-1];break}}n?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},e),children:a.map(({value:e,label:n,attributes:o})=>(0,j.jsx)("li",{role:"tab",tabIndex:t===e?0:-1,"aria-selected":t===e,ref:e=>{i.push(e)},onKeyDown:c,onClick:d,...o,className:(0,s.A)("tabs__item",f.tabItem,o?.className,{"tabs__item--active":t===e}),children:n??e},e))})}function b({lazy:e,children:n,selectedValue:t}){const r=(Array.isArray(n)?n:[n]).filter(Boolean);if(e){const e=r.find(e=>e.props.value===t);return e?(0,o.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:r.map((e,n)=>(0,o.cloneElement)(e,{key:n,hidden:e.props.value!==t}))})}function v(e){const n=g(e);return(0,j.jsxs)("div",{className:(0,s.A)("tabs-container",f.tabList),children:[(0,j.jsx)(y,{...n,...e}),(0,j.jsx)(b,{...n,...e})]})}function w(e){const n=(0,x.A)();return(0,j.jsx)(v,{...e,children:h(e.children)},String(n))}},17886:(e,n,t)=>{t.d(n,{A:()=>r});t(96540);var o=t(64058),s=t(74848);function r({name:e,...n}){const t=o[e];return t?(0,s.jsx)(t,{...n}):null}},19365:(e,n,t)=>{t.d(n,{A:()=>a});t(96540);var o=t(18215);const s={tabItem:"tabItem_Ymn6"};var r=t(74848);function a({children:e,hidden:n,className:t}){return(0,r.jsx)("div",{role:"tabpanel",className:(0,o.A)(s.tabItem,t),hidden:n,children:e})}},22444:(e,n,t)=>{t.d(n,{Ay:()=>l,RM:()=>a});var o=t(74848),s=t(28453),r=t(17886);const a=[];function i(e){const n={a:"a",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.p,{children:"By design, vector data is essential for LLM applications, such as chatbots and agents."}),"\n",(0,o.jsx)(n.p,{children:"While you can use an LLM alone for generic chat interactions and common tasks, you can take your application to the next level with context sensitivity (such as RAG) and custom datasets (such as internal business data).\nThis often requires integrating vector databases and vector searches that provide the additional context and define meaningful queries."}),"\n",(0,o.jsx)(n.p,{children:"Langflow includes vector store components that can read and write vector data, including embedding storage, similarity search, Graph RAG traversals, and dedicated search instances like OpenSearch.\nBecause of their interdependent functionality, it is common to use vector store, language model, and embedding model components in the same flow or in a series of dependent flows."}),"\n",(0,o.jsxs)(n.p,{children:["To find available vector store components, browse ",(0,o.jsx)(r.A,{name:"Blocks","aria-hidden":"true"})," ",(0,o.jsx)(n.a,{href:"/components-bundle-components",children:(0,o.jsx)(n.strong,{children:"Bundles"})})," or ",(0,o.jsx)(r.A,{name:"Search","aria-hidden":"true"})," ",(0,o.jsx)(n.strong,{children:"Search"})," for your preferred vector database provider."]})]})}function l(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(i,{...e})}):i(e)}},27027:(e,n,t)=>{t.d(n,{Ay:()=>l,RM:()=>a});var o=t(74848),s=t(28453),r=t(17886);const a=[];function i(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.admonition,{type:"tip",children:(0,o.jsxs)(n.p,{children:["For a tutorial that uses vector data in a flow, see ",(0,o.jsx)(n.a,{href:"/chat-with-rag",children:"Create a vector RAG chatbot"}),"."]})}),"\n",(0,o.jsx)(n.p,{children:"The following example demonstrates how to use vector store components in flows alongside related components like embedding model and language model components.\nThese steps walk through important configuration details, functionality, and best practices for using these components effectively.\nThis is only one example; it isn't a prescriptive guide to all possible use cases or configurations."}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Create a flow with the ",(0,o.jsx)(n.strong,{children:"Vector Store RAG"})," template."]}),"\n",(0,o.jsxs)(n.p,{children:["This template has two subflows.\nThe ",(0,o.jsx)(n.strong,{children:"Load Data"})," subflow loads embeddings and content into a vector database, and the ",(0,o.jsx)(n.strong,{children:"Retriever"})," subflow runs a vector search to retrieve relevant context based on a user's query."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Configure the database connection for both ",(0,o.jsxs)(n.a,{href:"/bundles-datastax#astra-db",children:[(0,o.jsx)(n.strong,{children:"Astra DB"})," components"]}),", or replace them with another pair of vector store components of your choice.\nMake sure the components connect to the same vector store, and that the component in the ",(0,o.jsx)(n.strong,{children:"Retriever"})," subflow is able to run a similarity search."]}),"\n",(0,o.jsxs)(n.p,{children:["The parameters you set in each vector store component depend on the component's role in your flow.\nIn this example, the ",(0,o.jsx)(n.strong,{children:"Load Data"})," subflow ",(0,o.jsx)(n.em,{children:"writes"})," to the vector store, whereas the ",(0,o.jsx)(n.strong,{children:"Retriever"})," subflow ",(0,o.jsx)(n.em,{children:"reads"})," from the vector store.\nTherefore, search-related parameters are only relevant to the ",(0,o.jsx)(n.strong,{children:"Vector Search"})," component in the ",(0,o.jsx)(n.strong,{children:"Retriever"})," subflow."]}),"\n",(0,o.jsx)(n.p,{children:"For information about specific parameters, see the documentation for your chosen vector store component."}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"To configure the embedding model, do one of the following:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Use an OpenAI model"}),": In both ",(0,o.jsx)(n.strong,{children:"OpenAI Embeddings"})," components, enter your OpenAI API key.\nYou can use the default model or select a different OpenAI embedding model."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Use another provider"}),": Replace the ",(0,o.jsx)(n.strong,{children:"OpenAI Embeddings"})," components with another pair of ",(0,o.jsx)(n.a,{href:"/components-embedding-models",children:"embedding model components"})," of your choice, and then configure the parameters and credentials accordingly."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Use Astra DB vectorize"}),": If you are using an Astra DB vector store that has a vectorize integration, you can remove both ",(0,o.jsx)(n.strong,{children:"OpenAI Embeddings"})," components.\nIf you do this, the vectorize integration automatically generates embeddings from the ",(0,o.jsx)(n.strong,{children:"Ingest Data"})," (in the ",(0,o.jsx)(n.strong,{children:"Load Data"})," subflow) and ",(0,o.jsx)(n.strong,{children:"Search Query"})," (in the ",(0,o.jsx)(n.strong,{children:"Retriever"})," subflow)."]}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(n.admonition,{type:"tip",children:(0,o.jsx)(n.p,{children:"If your vector store already contains embeddings, make sure your embedding model components use the same model as your previous embeddings.\nMixing embedding models in the same vector store can produce inaccurate search results."})}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Recommended: In the ",(0,o.jsxs)(n.a,{href:"/components-processing#split-text",children:[(0,o.jsx)(n.strong,{children:"Split Text"})," component"]}),", optimize the chunking settings for your embedding model.\nFor example, if your embedding model has a token limit of 512, then the ",(0,o.jsx)(n.strong,{children:"Chunk Size"})," parameter must not exceed that limit."]}),"\n",(0,o.jsxs)(n.p,{children:["Additionally, because the ",(0,o.jsx)(n.strong,{children:"Retriever"})," subflow passes the chat input directly to the vector store component for vector search, make sure that your chat input string doesn't exceed your embedding model's limits.\nFor this example, you can enter a query that is within the limits; however, in a production environment, you might need to implement additional checks or preprocessing steps to ensure compliance.\nFor example, use additional components to prepare the chat input before running the vector search, or enforce chat input limits in your application code."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["In the ",(0,o.jsx)(n.strong,{children:"Language Model"})," component, enter your OpenAI API key, or select a different provider and model to use for the chat portion of the flow."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Run the ",(0,o.jsx)(n.strong,{children:"Load Data"})," subflow to populate your vector store.\nIn the ",(0,o.jsx)(n.strong,{children:"File"})," component, select one or more files, and then click ",(0,o.jsx)(r.A,{name:"Play","aria-hidden":"true"})," ",(0,o.jsx)(n.strong,{children:"Run component"})," on the vector store component in the ",(0,o.jsx)(n.strong,{children:"Load Data"})," subflow."]}),"\n",(0,o.jsxs)(n.p,{children:["The ",(0,o.jsx)(n.strong,{children:"Load Data"})," subflow loads files from your local machine, chunks them, generates embeddings for the chunks, and then stores the chunks and their embeddings in the vector database."]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Embedding data into a vector store",src:t(7685).A+"",width:"4000",height:"2512"})}),"\n",(0,o.jsxs)(n.p,{children:["The ",(0,o.jsx)(n.strong,{children:"Load Data"})," subflow is separate from the ",(0,o.jsx)(n.strong,{children:"Retriever"})," subflow because you probably won't run it every time you use the chat.\nYou can run the ",(0,o.jsx)(n.strong,{children:"Load Data"})," subflow as needed to preload or update the data in your vector store.\nThen, your chat interactions only use the components that are necessary for chat."]}),"\n",(0,o.jsxs)(n.p,{children:["If your vector store already contains data that you want to use for vector search, then you don't need to run the ",(0,o.jsx)(n.strong,{children:"Load Data"})," subflow."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Open the ",(0,o.jsx)(n.strong,{children:"Playground"})," and start chatting to run the ",(0,o.jsx)(n.strong,{children:"Retriever"})," subflow."]}),"\n",(0,o.jsxs)(n.p,{children:["The ",(0,o.jsx)(n.strong,{children:"Retriever"})," subflow generates an embedding from chat input, runs a vector search to retrieve similar content from your vector store, parses the search results into supplemental context for the LLM, and then uses the LLM to generate a natural language response to your query.\nThe LLM uses the vector search results along with its internal training data and tools, such as basic web search and datetime information, to produce the response."]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Retrieval from a vector store",src:t(67719).A+"",width:"4000",height:"1324"})}),"\n",(0,o.jsxs)(n.p,{children:["To avoid passing the entire block of raw search results to the LLM, the ",(0,o.jsx)(n.strong,{children:"Parser"})," component extracts ",(0,o.jsx)(n.code,{children:"text"})," strings from the search results ",(0,o.jsx)(n.code,{children:"Data"})," object, and then passes them to the ",(0,o.jsx)(n.strong,{children:"Prompt Template"})," component in ",(0,o.jsx)(n.code,{children:"Message"})," format.\nFrom there, the strings and other template content are compiled into natural language instructions for the LLM."]}),"\n",(0,o.jsxs)(n.p,{children:["You can use other components for this transformation, such as the ",(0,o.jsx)(n.strong,{children:"Data Operations"})," component, depending on how you want to use the search results."]}),"\n",(0,o.jsxs)(n.p,{children:["To view the raw search results, click ",(0,o.jsx)(r.A,{name:"TextSearch","aria-hidden":"true"})," ",(0,o.jsx)(n.strong,{children:"Inspect output"})," on the vector store component after running the ",(0,o.jsx)(n.strong,{children:"Retriever"})," subflow."]}),"\n"]}),"\n"]})]})}function l(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(i,{...e})}):i(e)}},31929:(e,n,t)=>{t.d(n,{Ay:()=>l,RM:()=>a});var o=t(74848),s=t(28453),r=t(17886);const a=[];function i(e){const n={a:"a",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,o.jsxs)(n.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,o.jsx)(r.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,o.jsx)(n.strong,{children:"Controls"})," in the ",(0,o.jsx)(n.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function l(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(i,{...e})}):i(e)}},45591:(e,n,t)=>{t.r(n),t.d(n,{CH:()=>x,assets:()=>g,chCodeConfig:()=>f,contentTitle:()=>m,default:()=>b,frontMatter:()=>p,metadata:()=>o,toc:()=>j});const o=JSON.parse('{"id":"Components/components-models","title":"Language Model","description":"Language model components in Langflow generate text using a specified Large Language Model (LLM).","source":"@site/docs/Components/components-models.mdx","sourceDirName":"Components","slug":"/components-models","permalink":"/components-models","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Language Model","slug":"/components-models"},"sidebar":"docs","previous":{"title":"Agents","permalink":"/components-agents"},"next":{"title":"Embedding Model","permalink":"/components-embedding-models"}}');var s=t(74848),r=t(28453),a=t(24754),i=t(17886),l=t(11470),d=t(19365),c=t(31929),h=t(22444),u=t(27027);const p={title:"Language Model",slug:"/components-models"},m=void 0,g={},x={annotations:a.hk,Code:a.Cy},f={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},j=[{value:"Use language model components in flows",id:"use-language-model-components-in-flows",level:2},{value:"Language model parameters",id:"language-model-parameters",level:2},...c.RM,{value:"Language model output types",id:"language-model-output-types",level:2},{value:"Additional language models",id:"additional-language-models",level:2},{value:"Pair models with vector stores",id:"pair-models-with-vector-stores",level:2},...h.RM,...u.RM];function y(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",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,r.R)(),...e.components},{Details:o}=n;return x||v("CH",!1),x.Code||v("CH.Code",!0),o||v("Details",!0),(0,s.jsxs)(s.Fragment,{children:[(0,s.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","\n",(0,s.jsx)(n.p,{children:"Language model components in Langflow generate text using a specified Large Language Model (LLM).\nThese components accept inputs like chat messages, files, and instructions in order to generate a text response."}),"\n",(0,s.jsxs)(n.p,{children:["Langflow includes a ",(0,s.jsx)(n.strong,{children:"Language Model"})," core component that has built-in support for many LLMs.\nAlternatively, you can use any ",(0,s.jsx)(n.a,{href:"#additional-language-models",children:"additional language model"})," in place of the ",(0,s.jsx)(n.strong,{children:"Language Model"})," core component."]}),"\n",(0,s.jsx)(n.h2,{id:"use-language-model-components-in-flows",children:"Use language model components in flows"}),"\n",(0,s.jsx)(n.p,{children:"Use language model components anywhere you would use an LLM in a flow."}),"\n",(0,s.jsxs)(l.A,{children:[(0,s.jsxs)(d.A,{value:"chat",label:"Chat",default:!0,children:[(0,s.jsx)(n.p,{children:"One of the most common use cases of language model components is to chat with LLMs in your flows."}),(0,s.jsxs)(n.p,{children:["The following example uses a language model component in a chatbot flow similar to the ",(0,s.jsx)(n.strong,{children:"Basic Prompting"})," template."]}),(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Add the ",(0,s.jsx)(n.strong,{children:"Language Model"})," core component to your flow, and then enter your OpenAI API key."]}),"\n",(0,s.jsxs)(n.p,{children:["This example uses the ",(0,s.jsx)(n.strong,{children:"Language Model"})," core component's default OpenAI model.\nIf you want to use a different provider or model, edit the ",(0,s.jsx)(n.strong,{children:"Model Provider"}),", ",(0,s.jsx)(n.strong,{children:"Model Name"}),", and ",(0,s.jsx)(n.strong,{children:"API Key"})," fields accordingly."]}),"\n",(0,s.jsxs)(n.admonition,{title:"My preferred provider or model isn't listed",type:"tip",children:[(0,s.jsxs)(n.p,{children:["If you want to use a provider or model that isn't built-in to the ",(0,s.jsx)(n.strong,{children:"Language Model"})," core component, you can replace this component with any ",(0,s.jsx)(n.a,{href:"#additional-language-models",children:"additional language model"}),"."]}),(0,s.jsxs)(n.p,{children:["Browse ",(0,s.jsx)(i.A,{name:"Blocks","aria-hidden":"true"})," ",(0,s.jsx)(n.a,{href:"/components-bundle-components",children:(0,s.jsx)(n.strong,{children:"Bundles"})})," or ",(0,s.jsx)(i.A,{name:"Search","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Search"})," for your preferred provider to find additional language models."]})]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["In the ",(0,s.jsx)(n.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),", click ",(0,s.jsx)(i.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Controls"}),", enable the ",(0,s.jsx)(n.strong,{children:"System Message"})," parameter, and then click ",(0,s.jsx)(n.strong,{children:"Close"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Add a ",(0,s.jsxs)(n.a,{href:"/components-prompts",children:[(0,s.jsx)(n.strong,{children:"Prompt Template"})," component"]})," to your flow."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["In the ",(0,s.jsx)(n.strong,{children:"Template"})," field, enter some instructions for the LLM, such as ",(0,s.jsx)(n.code,{children:"You are an expert in geography who is tutoring high school students"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Connect the ",(0,s.jsx)(n.strong,{children:"Prompt Template"})," component's output to the ",(0,s.jsx)(n.strong,{children:"Language Model"})," component's ",(0,s.jsx)(n.strong,{children:"System Message"})," input."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Add ",(0,s.jsxs)(n.a,{href:"/components-io#chat-io",children:[(0,s.jsx)(n.strong,{children:"Chat Input"})," and ",(0,s.jsx)(n.strong,{children:"Chat Output"})," components"]})," to your flow.\nThese components are required for direct chat interaction with an LLM."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Connect the ",(0,s.jsx)(n.strong,{children:"Chat Input"})," component to the ",(0,s.jsx)(n.strong,{children:"Language Model"})," component's ",(0,s.jsx)(n.strong,{children:"Input"}),", and then connect the ",(0,s.jsx)(n.strong,{children:"Language Model"})," component's ",(0,s.jsx)(n.strong,{children:"Message"})," output to the ",(0,s.jsx)(n.strong,{children:"Chat Output"})," component."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"A basic prompting flow with Language Model, Prompt Template, Chat Input, and Chat Output components",src:t(80625).A+"",width:"2000",height:"1060"})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Open the ",(0,s.jsx)(n.strong,{children:"Playground"}),", and ask a question to chat with the LLM and test the flow, such as ",(0,s.jsx)(n.code,{children:"What is the capital of Utah?"}),"."]}),"\n",(0,s.jsxs)(o,{children:[(0,s.jsx)("summary",{children:"Result"}),(0,s.jsx)(n.p,{children:"The following response is an example of an OpenAI model's response.\nYour actual response may vary based on the model version at the time of your request, your template, and input."}),(0,s.jsx)(x.Code,{codeConfig:f,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"The capital of Utah is Salt Lake City. It is not only the largest city in the state but also serves as the cultural and economic center of Utah. Salt Lake City was founded in 1847 by Mormon pioneers and is known for its proximity to the Great Salt Lake and its role in the history of the Church of Jesus Christ of Latter-day Saints. For more information, you can refer to sources such as the U.S. Geological Survey or the official state website of Utah.",props:{}}]}],lang:"text"},annotations:[]}]})]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Optional: Try a different model or provider to see how the response changes.\nFor example, if you are using the ",(0,s.jsx)(n.strong,{children:"Language Model"})," core component, you could try an Anthropic model."]}),"\n",(0,s.jsxs)(n.p,{children:["Then, open the ",(0,s.jsx)(n.strong,{children:"Playground"}),", ask the same question as you did before, and then compare the content and format of the responses."]}),"\n",(0,s.jsx)(n.p,{children:"This helps you understand how different models handle the same request so you can choose the best model for your use case.\nYou can also learn more about different models in each model provider's documentation."}),"\n",(0,s.jsxs)(o,{children:[(0,s.jsx)("summary",{children:"Result"}),(0,s.jsx)(n.p,{children:"The following response is an example of an Anthropic model's response.\nYour actual response may vary based on the model version at the time of your request, your template, and input."}),(0,s.jsx)(n.p,{children:"Note that this response is shorter and includes sources, whereas the previous OpenAI response was more encyclopedic and didn't cite sources."}),(0,s.jsx)(x.Code,{codeConfig:f,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"The capital of Utah is Salt Lake City. It is also the most populous city in the state. Salt Lake City has been the capital of Utah since 1896, when Utah became a state.",props:{}}]},{tokens:[{content:"Sources:",props:{}}]},{tokens:[{content:"Utah State Government Official Website (utah.gov)",props:{}}]},{tokens:[{content:"U.S. Census Bureau",props:{}}]},{tokens:[{content:"Encyclopedia Britannica",props:{}}]}],lang:"text"},annotations:[]}]})]}),"\n"]}),"\n"]})]}),(0,s.jsxs)(d.A,{value:"drivers",label:"Drivers",children:[(0,s.jsxs)(n.p,{children:["Some components use a language model component to perform LLM-driven actions.\nTypically, these components prepare data for further processing by downstream components, rather than emitting direct chat output.\nFor an example, see the ",(0,s.jsxs)(n.a,{href:"/components-processing#smart-transform",children:[(0,s.jsx)(n.strong,{children:"Smart Transform"})," component"]}),"."]}),(0,s.jsxs)(n.p,{children:["A component must accept a ",(0,s.jsx)(n.code,{children:"LanguageModel"})," input to use a language model component as a driver, and you must set the language model component's output type to ",(0,s.jsx)(n.code,{children:"LanguageModel"}),".\nFor more information, see ",(0,s.jsx)(n.a,{href:"#language-model-output-types",children:"Language Model output types"}),"."]})]}),(0,s.jsxs)(d.A,{value:"agents",label:"Agents",children:[(0,s.jsxs)(n.p,{children:["If you don't want to use the ",(0,s.jsx)(n.strong,{children:"Agent"})," component's built-in LLMs, you can use a language model component to connect your preferred model:"]}),(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Add a language model component to your flow."}),"\n",(0,s.jsxs)(n.p,{children:["You can use the ",(0,s.jsx)(n.strong,{children:"Language Model"})," core component or browse ",(0,s.jsx)(i.A,{name:"Blocks","aria-hidden":"true"})," ",(0,s.jsx)(n.a,{href:"/components-bundle-components",children:(0,s.jsx)(n.strong,{children:"Bundles"})})," to find additional language models.\nComponents in bundles may not have ",(0,s.jsx)(n.code,{children:"language model"})," in the name.\nFor example, Azure OpenAI LLMs are provided through the ",(0,s.jsxs)(n.a,{href:"/bundles-azure#azure-openai",children:[(0,s.jsx)(n.strong,{children:"Azure OpenAI"})," component"]}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Configure the language model component as needed to connect to your preferred model."}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Change the language model component's output type from ",(0,s.jsx)(n.strong,{children:"Model Response"})," to ",(0,s.jsx)(n.strong,{children:"Language Model"}),".\nThe output port changes to a ",(0,s.jsx)(n.code,{children:"LanguageModel"})," port.\nThis is required to connect the language model component to the ",(0,s.jsx)(n.strong,{children:"Agent"})," component.\nFor more information, see ",(0,s.jsx)(n.a,{href:"#language-model-output-types",children:"Language Model output types"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Add an ",(0,s.jsx)(n.strong,{children:"Agent"})," component to the flow, and then set ",(0,s.jsx)(n.strong,{children:"Model Provider"})," to ",(0,s.jsx)(n.strong,{children:"Connect other models"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.strong,{children:"Model Provider"})," field changes to a ",(0,s.jsx)(n.strong,{children:"Language Model"})," (",(0,s.jsx)(n.code,{children:"LanguageModel"}),") input."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Connect the language model component's output to the ",(0,s.jsx)(n.strong,{children:"Agent"})," component's ",(0,s.jsx)(n.strong,{children:"Language Model"})," input.\nThe ",(0,s.jsx)(n.strong,{children:"Agent"})," component now inherits the language model settings from the connected language model component instead of using any of the built-in models."]}),"\n"]}),"\n"]})]})]}),"\n",(0,s.jsx)(n.h2,{id:"language-model-parameters",children:"Language model parameters"}),"\n",(0,s.jsxs)(n.p,{children:["The following parameters are for the ",(0,s.jsx)(n.strong,{children:"Language Model"})," core component.\nOther language model components can have additional or different parameters."]}),"\n","\n",(0,s.jsx)(c.Ay,{}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Name"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"provider"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The model provider to use."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"model_name"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The name of the model to use. Options depend on the selected provider."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"api_key"}),(0,s.jsx)(n.td,{children:"SecretString"}),(0,s.jsx)(n.td,{children:"Input parameter. The API Key for authentication with the selected provider."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"input_value"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The input text to send to the model."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"system_message"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. A system message that helps set the behavior of the assistant."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"stream"}),(0,s.jsx)(n.td,{children:"Boolean"}),(0,s.jsxs)(n.td,{children:["Input parameter. Whether to stream the response. Default: ",(0,s.jsx)(n.code,{children:"false"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"temperature"}),(0,s.jsx)(n.td,{children:"Float"}),(0,s.jsxs)(n.td,{children:["Input parameter. Controls randomness in responses. Range: ",(0,s.jsx)(n.code,{children:"[0.0, 1.0]"}),". Default: ",(0,s.jsx)(n.code,{children:"0.1"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"model"}),(0,s.jsx)(n.td,{children:"LanguageModel"}),(0,s.jsxs)(n.td,{children:["Output parameter. Alternative output type to the default ",(0,s.jsx)(n.code,{children:"Message"})," output. Produces an instance of Chat configured with the specified parameters. See ",(0,s.jsx)(n.a,{href:"#language-model-output-types",children:"Language Model output types"}),"."]})]})]})]}),"\n",(0,s.jsx)(n.h2,{id:"language-model-output-types",children:"Language model output types"}),"\n",(0,s.jsx)(n.p,{children:"Language model components, including the core component and bundled components, can produce two types of output:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Model Response"}),": The default output type emits the model's generated response as ",(0,s.jsxs)(n.a,{href:"/data-types#message",children:[(0,s.jsx)(n.code,{children:"Message"})," data"]}),".\nUse this output type when you want the typical LLM interaction where the LLM produces a text response based on given input."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Language Model"}),": Change the language model component's output type to ",(0,s.jsx)(n.a,{href:"/data-types#languagemodel",children:(0,s.jsx)(n.code,{children:"LanguageModel"})})," when you need to attach an LLM to another component in your flow, such as an ",(0,s.jsx)(n.strong,{children:"Agent"})," or ",(0,s.jsx)(n.strong,{children:"Smart Transform"})," component."]}),"\n",(0,s.jsxs)(n.p,{children:["With this configuration, the language model component supports an action completed by another component, rather than a direct chat interaction.\nFor an example, the ",(0,s.jsx)(n.strong,{children:"Smart Transform"})," component uses an LLM to create a function from natural language input."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"additional-language-models",children:"Additional language models"}),"\n",(0,s.jsxs)(n.p,{children:["If your provider or model isn't supported by the ",(0,s.jsx)(n.strong,{children:"Language Model"})," core component, additional language model components are available in ",(0,s.jsx)(i.A,{name:"Blocks","aria-hidden":"true"})," ",(0,s.jsx)(n.a,{href:"/components-bundle-components",children:(0,s.jsx)(n.strong,{children:"Bundles"})}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["You can use these components in the same way that you use the core ",(0,s.jsx)(n.strong,{children:"Language Model"})," component, as explained in ",(0,s.jsx)(n.a,{href:"#use-language-model-components-in-flows",children:"Use language model components in flows"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"pair-models-with-vector-stores",children:"Pair models with vector stores"}),"\n","\n",(0,s.jsx)(h.Ay,{}),"\n",(0,s.jsxs)(o,{children:[(0,s.jsx)("summary",{children:"Example: Vector search flow"}),(0,s.jsx)(u.Ay,{})]})]})}function b(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(y,{...e})}):y(e)}function v(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}},67719:(e,n,t)=>{t.d(n,{A:()=>o});const o=t.p+"assets/images/vector-store-retrieval-af7257d77ff0259ab1a0980641d464ce.png"},80625:(e,n,t)=>{t.d(n,{A:()=>o});const o=t.p+"assets/images/component-language-model-1ddc1bd5726d5ea55ac91f7813a024d7.png"}}]); \ No newline at end of file +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[750],{7685:(e,n,t)=>{t.d(n,{A:()=>o});const o=t.p+"assets/images/vector-store-document-ingestion-6157311fb4d16e7f944d55254f0cc0e2.png"},11470:(e,n,t)=>{t.d(n,{A:()=>w});var o=t(96540),s=t(18215),r=t(23104),a=t(56347),i=t(205),l=t(57485),d=t(31682),c=t(70679);function h(e){return o.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,o.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)})?.filter(Boolean)??[]}function u(e){const{values:n,children:t}=e;return(0,o.useMemo)(()=>{const e=n??function(e){return h(e).map(({props:{value:e,label:n,attributes:t,default:o}})=>({value:e,label:n,attributes:t,default:o}))}(t);return function(e){const n=(0,d.XI)(e,(e,n)=>e.value===n.value);if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map(e=>e.value).join(", ")}" found in . Every value needs to be unique.`)}(e),e},[n,t])}function p({value:e,tabValues:n}){return n.some(n=>n.value===e)}function m({queryString:e=!1,groupId:n}){const t=(0,a.W6)(),s=function({queryString:e=!1,groupId:n}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:e,groupId:n});return[(0,l.aZ)(s),(0,o.useCallback)(e=>{if(!s)return;const n=new URLSearchParams(t.location.search);n.set(s,e),t.replace({...t.location,search:n.toString()})},[s,t])]}function g(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,r=u(e),[a,l]=(0,o.useState)(()=>function({defaultValue:e,tabValues:n}){if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(e){if(!p({value:e,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${n.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const t=n.find(e=>e.default)??n[0];if(!t)throw new Error("Unexpected error: 0 tabValues");return t.value}({defaultValue:n,tabValues:r})),[d,h]=m({queryString:t,groupId:s}),[g,x]=function({groupId:e}){const n=function(e){return e?`docusaurus.tab.${e}`:null}(e),[t,s]=(0,c.Dv)(n);return[t,(0,o.useCallback)(e=>{n&&s.set(e)},[n,s])]}({groupId:s}),f=(()=>{const e=d??g;return p({value:e,tabValues:r})?e:null})();(0,i.A)(()=>{f&&l(f)},[f]);return{selectedValue:a,selectValue:(0,o.useCallback)(e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),h(e),x(e)},[h,x,r]),tabValues:r}}var x=t(92303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=t(74848);function y({className:e,block:n,selectedValue:t,selectValue:o,tabValues:a}){const i=[],{blockElementScrollPositionUntilNextRender:l}=(0,r.a_)(),d=e=>{const n=e.currentTarget,s=i.indexOf(n),r=a[s].value;r!==t&&(l(n),o(r))},c=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const t=i.indexOf(e.currentTarget)+1;n=i[t]??i[0];break}case"ArrowLeft":{const t=i.indexOf(e.currentTarget)-1;n=i[t]??i[i.length-1];break}}n?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},e),children:a.map(({value:e,label:n,attributes:o})=>(0,j.jsx)("li",{role:"tab",tabIndex:t===e?0:-1,"aria-selected":t===e,ref:e=>{i.push(e)},onKeyDown:c,onClick:d,...o,className:(0,s.A)("tabs__item",f.tabItem,o?.className,{"tabs__item--active":t===e}),children:n??e},e))})}function b({lazy:e,children:n,selectedValue:t}){const r=(Array.isArray(n)?n:[n]).filter(Boolean);if(e){const e=r.find(e=>e.props.value===t);return e?(0,o.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:r.map((e,n)=>(0,o.cloneElement)(e,{key:n,hidden:e.props.value!==t}))})}function v(e){const n=g(e);return(0,j.jsxs)("div",{className:(0,s.A)("tabs-container",f.tabList),children:[(0,j.jsx)(y,{...n,...e}),(0,j.jsx)(b,{...n,...e})]})}function w(e){const n=(0,x.A)();return(0,j.jsx)(v,{...e,children:h(e.children)},String(n))}},17886:(e,n,t)=>{t.d(n,{A:()=>r});t(96540);var o=t(64058),s=t(74848);function r({name:e,...n}){const t=o[e];return t?(0,s.jsx)(t,{...n}):null}},19365:(e,n,t)=>{t.d(n,{A:()=>a});t(96540);var o=t(18215);const s={tabItem:"tabItem_Ymn6"};var r=t(74848);function a({children:e,hidden:n,className:t}){return(0,r.jsx)("div",{role:"tabpanel",className:(0,o.A)(s.tabItem,t),hidden:n,children:e})}},22444:(e,n,t)=>{t.d(n,{Ay:()=>l,RM:()=>a});var o=t(74848),s=t(28453),r=t(17886);const a=[];function i(e){const n={a:"a",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.p,{children:"By design, vector data is essential for LLM applications, such as chatbots and agents."}),"\n",(0,o.jsx)(n.p,{children:"While you can use an LLM alone for generic chat interactions and common tasks, you can take your application to the next level with context sensitivity (such as RAG) and custom datasets (such as internal business data).\nThis often requires integrating vector databases and vector searches that provide the additional context and define meaningful queries."}),"\n",(0,o.jsx)(n.p,{children:"Langflow includes vector store components that can read and write vector data, including embedding storage, similarity search, Graph RAG traversals, and dedicated search instances like OpenSearch.\nBecause of their interdependent functionality, it is common to use vector store, language model, and embedding model components in the same flow or in a series of dependent flows."}),"\n",(0,o.jsxs)(n.p,{children:["To find available vector store components, browse ",(0,o.jsx)(r.A,{name:"Blocks","aria-hidden":"true"})," ",(0,o.jsx)(n.a,{href:"/components-bundle-components",children:(0,o.jsx)(n.strong,{children:"Bundles"})})," or ",(0,o.jsx)(r.A,{name:"Search","aria-hidden":"true"})," ",(0,o.jsx)(n.strong,{children:"Search"})," for your preferred vector database provider."]})]})}function l(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(i,{...e})}):i(e)}},27027:(e,n,t)=>{t.d(n,{Ay:()=>l,RM:()=>a});var o=t(74848),s=t(28453),r=t(17886);const a=[];function i(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.admonition,{type:"tip",children:(0,o.jsxs)(n.p,{children:["For a tutorial that uses vector data in a flow, see ",(0,o.jsx)(n.a,{href:"/chat-with-rag",children:"Create a vector RAG chatbot"}),"."]})}),"\n",(0,o.jsx)(n.p,{children:"The following example demonstrates how to use vector store components in flows alongside related components like embedding model and language model components.\nThese steps walk through important configuration details, functionality, and best practices for using these components effectively.\nThis is only one example; it isn't a prescriptive guide to all possible use cases or configurations."}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Create a flow with the ",(0,o.jsx)(n.strong,{children:"Vector Store RAG"})," template."]}),"\n",(0,o.jsxs)(n.p,{children:["This template has two subflows.\nThe ",(0,o.jsx)(n.strong,{children:"Load Data"})," subflow loads embeddings and content into a vector database, and the ",(0,o.jsx)(n.strong,{children:"Retriever"})," subflow runs a vector search to retrieve relevant context based on a user's query."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Configure the database connection for both ",(0,o.jsxs)(n.a,{href:"/bundles-datastax#astra-db",children:[(0,o.jsx)(n.strong,{children:"Astra DB"})," components"]}),", or replace them with another pair of vector store components of your choice.\nMake sure the components connect to the same vector store, and that the component in the ",(0,o.jsx)(n.strong,{children:"Retriever"})," subflow is able to run a similarity search."]}),"\n",(0,o.jsxs)(n.p,{children:["The parameters you set in each vector store component depend on the component's role in your flow.\nIn this example, the ",(0,o.jsx)(n.strong,{children:"Load Data"})," subflow ",(0,o.jsx)(n.em,{children:"writes"})," to the vector store, whereas the ",(0,o.jsx)(n.strong,{children:"Retriever"})," subflow ",(0,o.jsx)(n.em,{children:"reads"})," from the vector store.\nTherefore, search-related parameters are only relevant to the ",(0,o.jsx)(n.strong,{children:"Vector Search"})," component in the ",(0,o.jsx)(n.strong,{children:"Retriever"})," subflow."]}),"\n",(0,o.jsx)(n.p,{children:"For information about specific parameters, see the documentation for your chosen vector store component."}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"To configure the embedding model, do one of the following:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Use an OpenAI model"}),": In both ",(0,o.jsx)(n.strong,{children:"OpenAI Embeddings"})," components, enter your OpenAI API key.\nYou can use the default model or select a different OpenAI embedding model."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Use another provider"}),": Replace the ",(0,o.jsx)(n.strong,{children:"OpenAI Embeddings"})," components with another pair of ",(0,o.jsx)(n.a,{href:"/components-embedding-models",children:"embedding model components"})," of your choice, and then configure the parameters and credentials accordingly."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Use Astra DB vectorize"}),": If you are using an Astra DB vector store that has a vectorize integration, you can remove both ",(0,o.jsx)(n.strong,{children:"OpenAI Embeddings"})," components.\nIf you do this, the vectorize integration automatically generates embeddings from the ",(0,o.jsx)(n.strong,{children:"Ingest Data"})," (in the ",(0,o.jsx)(n.strong,{children:"Load Data"})," subflow) and ",(0,o.jsx)(n.strong,{children:"Search Query"})," (in the ",(0,o.jsx)(n.strong,{children:"Retriever"})," subflow)."]}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(n.admonition,{type:"tip",children:(0,o.jsx)(n.p,{children:"If your vector store already contains embeddings, make sure your embedding model components use the same model as your previous embeddings.\nMixing embedding models in the same vector store can produce inaccurate search results."})}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Recommended: In the ",(0,o.jsxs)(n.a,{href:"/components-processing#split-text",children:[(0,o.jsx)(n.strong,{children:"Split Text"})," component"]}),", optimize the chunking settings for your embedding model.\nFor example, if your embedding model has a token limit of 512, then the ",(0,o.jsx)(n.strong,{children:"Chunk Size"})," parameter must not exceed that limit."]}),"\n",(0,o.jsxs)(n.p,{children:["Additionally, because the ",(0,o.jsx)(n.strong,{children:"Retriever"})," subflow passes the chat input directly to the vector store component for vector search, make sure that your chat input string doesn't exceed your embedding model's limits.\nFor this example, you can enter a query that is within the limits; however, in a production environment, you might need to implement additional checks or preprocessing steps to ensure compliance.\nFor example, use additional components to prepare the chat input before running the vector search, or enforce chat input limits in your application code."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["In the ",(0,o.jsx)(n.strong,{children:"Language Model"})," component, enter your OpenAI API key, or select a different provider and model to use for the chat portion of the flow."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Run the ",(0,o.jsx)(n.strong,{children:"Load Data"})," subflow to populate your vector store.\nIn the ",(0,o.jsx)(n.strong,{children:"File"})," component, select one or more files, and then click ",(0,o.jsx)(r.A,{name:"Play","aria-hidden":"true"})," ",(0,o.jsx)(n.strong,{children:"Run component"})," on the vector store component in the ",(0,o.jsx)(n.strong,{children:"Load Data"})," subflow."]}),"\n",(0,o.jsxs)(n.p,{children:["The ",(0,o.jsx)(n.strong,{children:"Load Data"})," subflow loads files from your local machine, chunks them, generates embeddings for the chunks, and then stores the chunks and their embeddings in the vector database."]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Embedding data into a vector store",src:t(7685).A+"",width:"4000",height:"2512"})}),"\n",(0,o.jsxs)(n.p,{children:["The ",(0,o.jsx)(n.strong,{children:"Load Data"})," subflow is separate from the ",(0,o.jsx)(n.strong,{children:"Retriever"})," subflow because you probably won't run it every time you use the chat.\nYou can run the ",(0,o.jsx)(n.strong,{children:"Load Data"})," subflow as needed to preload or update the data in your vector store.\nThen, your chat interactions only use the components that are necessary for chat."]}),"\n",(0,o.jsxs)(n.p,{children:["If your vector store already contains data that you want to use for vector search, then you don't need to run the ",(0,o.jsx)(n.strong,{children:"Load Data"})," subflow."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Open the ",(0,o.jsx)(n.strong,{children:"Playground"})," and start chatting to run the ",(0,o.jsx)(n.strong,{children:"Retriever"})," subflow."]}),"\n",(0,o.jsxs)(n.p,{children:["The ",(0,o.jsx)(n.strong,{children:"Retriever"})," subflow generates an embedding from chat input, runs a vector search to retrieve similar content from your vector store, parses the search results into supplemental context for the LLM, and then uses the LLM to generate a natural language response to your query.\nThe LLM uses the vector search results along with its internal training data and tools, such as basic web search and datetime information, to produce the response."]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Retrieval from a vector store",src:t(67719).A+"",width:"4000",height:"1324"})}),"\n",(0,o.jsxs)(n.p,{children:["To avoid passing the entire block of raw search results to the LLM, the ",(0,o.jsx)(n.strong,{children:"Parser"})," component extracts ",(0,o.jsx)(n.code,{children:"text"})," strings from the search results ",(0,o.jsx)(n.code,{children:"Data"})," object, and then passes them to the ",(0,o.jsx)(n.strong,{children:"Prompt Template"})," component in ",(0,o.jsx)(n.code,{children:"Message"})," format.\nFrom there, the strings and other template content are compiled into natural language instructions for the LLM."]}),"\n",(0,o.jsxs)(n.p,{children:["You can use other components for this transformation, such as the ",(0,o.jsx)(n.strong,{children:"Data Operations"})," component, depending on how you want to use the search results."]}),"\n",(0,o.jsxs)(n.p,{children:["To view the raw search results, click ",(0,o.jsx)(r.A,{name:"TextSearch","aria-hidden":"true"})," ",(0,o.jsx)(n.strong,{children:"Inspect output"})," on the vector store component after running the ",(0,o.jsx)(n.strong,{children:"Retriever"})," subflow."]}),"\n"]}),"\n"]})]})}function l(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(i,{...e})}):i(e)}},31929:(e,n,t)=>{t.d(n,{Ay:()=>l,RM:()=>a});var o=t(74848),s=t(28453),r=t(17886);const a=[];function i(e){const n={a:"a",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,o.jsxs)(n.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,o.jsx)(r.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,o.jsx)(n.strong,{children:"Controls"})," in the ",(0,o.jsx)(n.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function l(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(i,{...e})}):i(e)}},45591:(e,n,t)=>{t.r(n),t.d(n,{CH:()=>x,assets:()=>g,chCodeConfig:()=>f,contentTitle:()=>m,default:()=>b,frontMatter:()=>p,metadata:()=>o,toc:()=>j});const o=JSON.parse('{"id":"Components/components-models","title":"Language Model","description":"Language model components in Langflow generate text using a specified Large Language Model (LLM).","source":"@site/docs/Components/components-models.mdx","sourceDirName":"Components","slug":"/components-models","permalink":"/components-models","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Language Model","slug":"/components-models"},"sidebar":"docs","previous":{"title":"Agents","permalink":"/components-agents"},"next":{"title":"Embedding Model","permalink":"/components-embedding-models"}}');var s=t(74848),r=t(28453),a=t(24754),i=t(17886),l=t(11470),d=t(19365),c=t(31929),h=t(22444),u=t(27027);const p={title:"Language Model",slug:"/components-models"},m=void 0,g={},x={annotations:a.hk,Code:a.Cy},f={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},j=[{value:"Use language model components in flows",id:"use-language-model-components-in-flows",level:2},{value:"Language model parameters",id:"language-model-parameters",level:2},...c.RM,{value:"Language model output types",id:"language-model-output-types",level:2},{value:"Additional language models",id:"additional-language-models",level:2},{value:"Pair models with vector stores",id:"pair-models-with-vector-stores",level:2},...h.RM,...u.RM];function y(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",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,r.R)(),...e.components},{Details:o}=n;return x||v("CH",!1),x.Code||v("CH.Code",!0),o||v("Details",!0),(0,s.jsxs)(s.Fragment,{children:[(0,s.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","\n",(0,s.jsx)(n.p,{children:"Language model components in Langflow generate text using a specified Large Language Model (LLM).\nThese components accept inputs like chat messages, files, and instructions in order to generate a text response."}),"\n",(0,s.jsxs)(n.p,{children:["Langflow includes a ",(0,s.jsx)(n.strong,{children:"Language Model"})," core component that has built-in support for many LLMs.\nAlternatively, you can use any ",(0,s.jsx)(n.a,{href:"#additional-language-models",children:"additional language model"})," in place of the ",(0,s.jsx)(n.strong,{children:"Language Model"})," core component."]}),"\n",(0,s.jsx)(n.h2,{id:"use-language-model-components-in-flows",children:"Use language model components in flows"}),"\n",(0,s.jsx)(n.p,{children:"Use language model components anywhere you would use an LLM in a flow."}),"\n",(0,s.jsxs)(l.A,{children:[(0,s.jsxs)(d.A,{value:"chat",label:"Chat",default:!0,children:[(0,s.jsx)(n.p,{children:"One of the most common use cases of language model components is to chat with LLMs in your flows."}),(0,s.jsxs)(n.p,{children:["The following example uses a language model component in a chatbot flow similar to the ",(0,s.jsx)(n.strong,{children:"Basic Prompting"})," template."]}),(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Add the ",(0,s.jsx)(n.strong,{children:"Language Model"})," core component to your flow, and then enter your OpenAI API key."]}),"\n",(0,s.jsxs)(n.p,{children:["This example uses the ",(0,s.jsx)(n.strong,{children:"Language Model"})," core component's default OpenAI model.\nIf you want to use a different provider or model, edit the ",(0,s.jsx)(n.strong,{children:"Model Provider"}),", ",(0,s.jsx)(n.strong,{children:"Model Name"}),", and ",(0,s.jsx)(n.strong,{children:"API Key"})," fields accordingly."]}),"\n",(0,s.jsxs)(n.admonition,{title:"My preferred provider or model isn't listed",type:"tip",children:[(0,s.jsxs)(n.p,{children:["If you want to use a provider or model that isn't built-in to the ",(0,s.jsx)(n.strong,{children:"Language Model"})," core component, you can replace this component with any ",(0,s.jsx)(n.a,{href:"#additional-language-models",children:"additional language model"}),"."]}),(0,s.jsxs)(n.p,{children:["Browse ",(0,s.jsx)(i.A,{name:"Blocks","aria-hidden":"true"})," ",(0,s.jsx)(n.a,{href:"/components-bundle-components",children:(0,s.jsx)(n.strong,{children:"Bundles"})})," or ",(0,s.jsx)(i.A,{name:"Search","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Search"})," for your preferred provider to find additional language models."]})]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["In the ",(0,s.jsx)(n.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),", click ",(0,s.jsx)(i.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Controls"}),", enable the ",(0,s.jsx)(n.strong,{children:"System Message"})," parameter, and then click ",(0,s.jsx)(n.strong,{children:"Close"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Add a ",(0,s.jsxs)(n.a,{href:"/components-prompts",children:[(0,s.jsx)(n.strong,{children:"Prompt Template"})," component"]})," to your flow."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["In the ",(0,s.jsx)(n.strong,{children:"Template"})," field, enter some instructions for the LLM, such as ",(0,s.jsx)(n.code,{children:"You are an expert in geography who is tutoring high school students"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Connect the ",(0,s.jsx)(n.strong,{children:"Prompt Template"})," component's output to the ",(0,s.jsx)(n.strong,{children:"Language Model"})," component's ",(0,s.jsx)(n.strong,{children:"System Message"})," input."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Add ",(0,s.jsxs)(n.a,{href:"/components-io#chat-io",children:[(0,s.jsx)(n.strong,{children:"Chat Input"})," and ",(0,s.jsx)(n.strong,{children:"Chat Output"})," components"]})," to your flow.\nThese components are required for direct chat interaction with an LLM."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Connect the ",(0,s.jsx)(n.strong,{children:"Chat Input"})," component to the ",(0,s.jsx)(n.strong,{children:"Language Model"})," component's ",(0,s.jsx)(n.strong,{children:"Input"}),", and then connect the ",(0,s.jsx)(n.strong,{children:"Language Model"})," component's ",(0,s.jsx)(n.strong,{children:"Message"})," output to the ",(0,s.jsx)(n.strong,{children:"Chat Output"})," component."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"A basic prompting flow with Language Model, Prompt Template, Chat Input, and Chat Output components",src:t(80625).A+"",width:"2000",height:"1060"})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Open the ",(0,s.jsx)(n.strong,{children:"Playground"}),", and ask a question to chat with the LLM and test the flow, such as ",(0,s.jsx)(n.code,{children:"What is the capital of Utah?"}),"."]}),"\n",(0,s.jsxs)(o,{children:[(0,s.jsx)("summary",{children:"Result"}),(0,s.jsx)(n.p,{children:"The following response is an example of an OpenAI model's response.\nYour actual response may vary based on the model version at the time of your request, your template, and input."}),(0,s.jsx)(x.Code,{codeConfig:f,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"The capital of Utah is Salt Lake City. It is not only the largest city in the state but also serves as the cultural and economic center of Utah. Salt Lake City was founded in 1847 by Mormon pioneers and is known for its proximity to the Great Salt Lake and its role in the history of the Church of Jesus Christ of Latter-day Saints. For more information, you can refer to sources such as the U.S. Geological Survey or the official state website of Utah.",props:{}}]}],lang:"text"},annotations:[]}]})]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Optional: Try a different model or provider to see how the response changes.\nFor example, if you are using the ",(0,s.jsx)(n.strong,{children:"Language Model"})," core component, you could try an Anthropic model."]}),"\n",(0,s.jsxs)(n.p,{children:["Then, open the ",(0,s.jsx)(n.strong,{children:"Playground"}),", ask the same question as you did before, and then compare the content and format of the responses."]}),"\n",(0,s.jsx)(n.p,{children:"This helps you understand how different models handle the same request so you can choose the best model for your use case.\nYou can also learn more about different models in each model provider's documentation."}),"\n",(0,s.jsxs)(o,{children:[(0,s.jsx)("summary",{children:"Result"}),(0,s.jsx)(n.p,{children:"The following response is an example of an Anthropic model's response.\nYour actual response may vary based on the model version at the time of your request, your template, and input."}),(0,s.jsx)(n.p,{children:"Note that this response is shorter and includes sources, whereas the previous OpenAI response was more encyclopedic and didn't cite sources."}),(0,s.jsx)(x.Code,{codeConfig:f,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"The capital of Utah is Salt Lake City. It is also the most populous city in the state. Salt Lake City has been the capital of Utah since 1896, when Utah became a state.",props:{}}]},{tokens:[{content:"Sources:",props:{}}]},{tokens:[{content:"Utah State Government Official Website (utah.gov)",props:{}}]},{tokens:[{content:"U.S. Census Bureau",props:{}}]},{tokens:[{content:"Encyclopedia Britannica",props:{}}]}],lang:"text"},annotations:[]}]})]}),"\n"]}),"\n"]})]}),(0,s.jsxs)(d.A,{value:"drivers",label:"Drivers",children:[(0,s.jsxs)(n.p,{children:["Some components use a language model component to perform LLM-driven actions.\nTypically, these components prepare data for further processing by downstream components, rather than emitting direct chat output.\nFor an example, see the ",(0,s.jsxs)(n.a,{href:"/components-processing#smart-transform",children:[(0,s.jsx)(n.strong,{children:"Smart Function"})," component"]}),"."]}),(0,s.jsxs)(n.p,{children:["A component must accept a ",(0,s.jsx)(n.code,{children:"LanguageModel"})," input to use a language model component as a driver, and you must set the language model component's output type to ",(0,s.jsx)(n.code,{children:"LanguageModel"}),".\nFor more information, see ",(0,s.jsx)(n.a,{href:"#language-model-output-types",children:"Language Model output types"}),"."]})]}),(0,s.jsxs)(d.A,{value:"agents",label:"Agents",children:[(0,s.jsxs)(n.p,{children:["If you don't want to use the ",(0,s.jsx)(n.strong,{children:"Agent"})," component's built-in LLMs, you can use a language model component to connect your preferred model:"]}),(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Add a language model component to your flow."}),"\n",(0,s.jsxs)(n.p,{children:["You can use the ",(0,s.jsx)(n.strong,{children:"Language Model"})," core component or browse ",(0,s.jsx)(i.A,{name:"Blocks","aria-hidden":"true"})," ",(0,s.jsx)(n.a,{href:"/components-bundle-components",children:(0,s.jsx)(n.strong,{children:"Bundles"})})," to find additional language models.\nComponents in bundles may not have ",(0,s.jsx)(n.code,{children:"language model"})," in the name.\nFor example, Azure OpenAI LLMs are provided through the ",(0,s.jsxs)(n.a,{href:"/bundles-azure#azure-openai",children:[(0,s.jsx)(n.strong,{children:"Azure OpenAI"})," component"]}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Configure the language model component as needed to connect to your preferred model."}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Change the language model component's output type from ",(0,s.jsx)(n.strong,{children:"Model Response"})," to ",(0,s.jsx)(n.strong,{children:"Language Model"}),".\nThe output port changes to a ",(0,s.jsx)(n.code,{children:"LanguageModel"})," port.\nThis is required to connect the language model component to the ",(0,s.jsx)(n.strong,{children:"Agent"})," component.\nFor more information, see ",(0,s.jsx)(n.a,{href:"#language-model-output-types",children:"Language Model output types"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Add an ",(0,s.jsx)(n.strong,{children:"Agent"})," component to the flow, and then set ",(0,s.jsx)(n.strong,{children:"Model Provider"})," to ",(0,s.jsx)(n.strong,{children:"Connect other models"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.strong,{children:"Model Provider"})," field changes to a ",(0,s.jsx)(n.strong,{children:"Language Model"})," (",(0,s.jsx)(n.code,{children:"LanguageModel"}),") input."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Connect the language model component's output to the ",(0,s.jsx)(n.strong,{children:"Agent"})," component's ",(0,s.jsx)(n.strong,{children:"Language Model"})," input.\nThe ",(0,s.jsx)(n.strong,{children:"Agent"})," component now inherits the language model settings from the connected language model component instead of using any of the built-in models."]}),"\n"]}),"\n"]})]})]}),"\n",(0,s.jsx)(n.h2,{id:"language-model-parameters",children:"Language model parameters"}),"\n",(0,s.jsxs)(n.p,{children:["The following parameters are for the ",(0,s.jsx)(n.strong,{children:"Language Model"})," core component.\nOther language model components can have additional or different parameters."]}),"\n","\n",(0,s.jsx)(c.Ay,{}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Name"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"provider"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The model provider to use."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"model_name"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The name of the model to use. Options depend on the selected provider."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"api_key"}),(0,s.jsx)(n.td,{children:"SecretString"}),(0,s.jsx)(n.td,{children:"Input parameter. The API Key for authentication with the selected provider."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"input_value"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The input text to send to the model."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"system_message"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. A system message that helps set the behavior of the assistant."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"stream"}),(0,s.jsx)(n.td,{children:"Boolean"}),(0,s.jsxs)(n.td,{children:["Input parameter. Whether to stream the response. Default: ",(0,s.jsx)(n.code,{children:"false"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"temperature"}),(0,s.jsx)(n.td,{children:"Float"}),(0,s.jsxs)(n.td,{children:["Input parameter. Controls randomness in responses. Range: ",(0,s.jsx)(n.code,{children:"[0.0, 1.0]"}),". Default: ",(0,s.jsx)(n.code,{children:"0.1"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"model"}),(0,s.jsx)(n.td,{children:"LanguageModel"}),(0,s.jsxs)(n.td,{children:["Output parameter. Alternative output type to the default ",(0,s.jsx)(n.code,{children:"Message"})," output. Produces an instance of Chat configured with the specified parameters. See ",(0,s.jsx)(n.a,{href:"#language-model-output-types",children:"Language Model output types"}),"."]})]})]})]}),"\n",(0,s.jsx)(n.h2,{id:"language-model-output-types",children:"Language model output types"}),"\n",(0,s.jsx)(n.p,{children:"Language model components, including the core component and bundled components, can produce two types of output:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Model Response"}),": The default output type emits the model's generated response as ",(0,s.jsxs)(n.a,{href:"/data-types#message",children:[(0,s.jsx)(n.code,{children:"Message"})," data"]}),".\nUse this output type when you want the typical LLM interaction where the LLM produces a text response based on given input."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Language Model"}),": Change the language model component's output type to ",(0,s.jsx)(n.a,{href:"/data-types#languagemodel",children:(0,s.jsx)(n.code,{children:"LanguageModel"})})," when you need to attach an LLM to another component in your flow, such as an ",(0,s.jsx)(n.strong,{children:"Agent"})," or ",(0,s.jsx)(n.strong,{children:"Smart Function"})," component."]}),"\n",(0,s.jsxs)(n.p,{children:["With this configuration, the language model component supports an action completed by another component, rather than a direct chat interaction.\nFor an example, the ",(0,s.jsx)(n.strong,{children:"Smart Function"})," component uses an LLM to create a function from natural language input."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"additional-language-models",children:"Additional language models"}),"\n",(0,s.jsxs)(n.p,{children:["If your provider or model isn't supported by the ",(0,s.jsx)(n.strong,{children:"Language Model"})," core component, additional language model components are available in ",(0,s.jsx)(i.A,{name:"Blocks","aria-hidden":"true"})," ",(0,s.jsx)(n.a,{href:"/components-bundle-components",children:(0,s.jsx)(n.strong,{children:"Bundles"})}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["You can use these components in the same way that you use the core ",(0,s.jsx)(n.strong,{children:"Language Model"})," component, as explained in ",(0,s.jsx)(n.a,{href:"#use-language-model-components-in-flows",children:"Use language model components in flows"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"pair-models-with-vector-stores",children:"Pair models with vector stores"}),"\n","\n",(0,s.jsx)(h.Ay,{}),"\n",(0,s.jsxs)(o,{children:[(0,s.jsx)("summary",{children:"Example: Vector search flow"}),(0,s.jsx)(u.Ay,{})]})]})}function b(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(y,{...e})}):y(e)}function v(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}},67719:(e,n,t)=>{t.d(n,{A:()=>o});const o=t.p+"assets/images/vector-store-retrieval-af7257d77ff0259ab1a0980641d464ce.png"},80625:(e,n,t)=>{t.d(n,{A:()=>o});const o=t.p+"assets/images/component-language-model-1ddc1bd5726d5ea55ac91f7813a024d7.png"}}]); \ No newline at end of file diff --git a/assets/js/42962acd.210eba33.js b/assets/js/42962acd.3a92390f.js similarity index 50% rename from assets/js/42962acd.210eba33.js rename to assets/js/42962acd.3a92390f.js index b5d4f6329b..31bbf350c2 100644 --- a/assets/js/42962acd.210eba33.js +++ b/assets/js/42962acd.3a92390f.js @@ -1 +1 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[8702],{17886:(e,t,n)=>{n.d(t,{A:()=>a});n(96540);var r=n(64058),s=n(74848);function a({name:e,...t}){const n=r[e];return n?(0,s.jsx)(n,{...t}):null}},21994:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>d,default:()=>p,frontMatter:()=>l,metadata:()=>r,toc:()=>h});const r=JSON.parse('{"id":"Components/bundles-maritalk","title":"MariTalk","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-maritalk.mdx","sourceDirName":"Components","slug":"/bundles-maritalk","permalink":"/bundles-maritalk","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"MariTalk","slug":"/bundles-maritalk"},"sidebar":"docs","previous":{"title":"LM Studio","permalink":"/bundles-lmstudio"},"next":{"title":"Mem0","permalink":"/bundles-mem0"}}');var s=n(74848),a=n(28453),i=n(17886),o=n(31929);const l={title:"MariTalk",slug:"/bundles-maritalk"},d=void 0,c={},h=[{value:"MariTalk text generation",id:"maritalk-text-generation",level:2},{value:"MariTalk text generation parameters",id:"maritalk-text-generation-parameters",level:3},...o.RM];function m(e){const t={a:"a",code:"code",h2:"h2",h3:"h3",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,a.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(t.p,{children:[(0,s.jsx)(i.A,{name:"Blocks","aria-hidden":"true"})," ",(0,s.jsx)(t.a,{href:"/components-bundle-components",children:(0,s.jsx)(t.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,s.jsxs)(t.p,{children:["This page describes the components that are available in the ",(0,s.jsx)(t.strong,{children:"MariTalk"})," bundle."]}),"\n",(0,s.jsxs)(t.p,{children:["For more information, see the ",(0,s.jsx)(t.a,{href:"https://www.maritalk.com/",children:"MariTalk documentation"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"maritalk-text-generation",children:"MariTalk text generation"}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.strong,{children:"MariTalk"})," component generates text using MariTalk LLMs."]}),"\n",(0,s.jsxs)(t.p,{children:["It can output either a ",(0,s.jsx)(t.strong,{children:"Model Response"})," (",(0,s.jsx)(t.a,{href:"/data-types#message",children:(0,s.jsx)(t.code,{children:"Message"})}),") or a ",(0,s.jsx)(t.strong,{children:"Language Model"})," (",(0,s.jsx)(t.a,{href:"/data-types#languagemodel",children:(0,s.jsx)(t.code,{children:"LanguageModel"})}),")."]}),"\n",(0,s.jsxs)(t.p,{children:["Use the ",(0,s.jsx)(t.strong,{children:"Language Model"})," output when you want to use a MariTalk model as the LLM for another LLM-driven component, such as an ",(0,s.jsx)(t.strong,{children:"Agent"})," or ",(0,s.jsx)(t.strong,{children:"Smart Transform"})," component."]}),"\n",(0,s.jsxs)(t.p,{children:["For more information, see ",(0,s.jsx)(t.a,{href:"/components-models",children:"Language model components"}),"."]}),"\n",(0,s.jsx)(t.h3,{id:"maritalk-text-generation-parameters",children:"MariTalk text generation parameters"}),"\n",(0,s.jsx)(o.Ay,{}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"Name"}),(0,s.jsx)(t.th,{children:"Type"}),(0,s.jsx)(t.th,{children:"Description"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"max_tokens"}),(0,s.jsx)(t.td,{children:"Integer"}),(0,s.jsxs)(t.td,{children:["Input parameter. The maximum number of tokens to generate. Set to ",(0,s.jsx)(t.code,{children:"0"})," for unlimited tokens. Default: ",(0,s.jsx)(t.code,{children:"512"}),"."]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"model_name"}),(0,s.jsx)(t.td,{children:"String"}),(0,s.jsxs)(t.td,{children:["Input parameter. The name of the MariTalk model to use. Options: ",(0,s.jsx)(t.code,{children:"sabia-2-small"}),", ",(0,s.jsx)(t.code,{children:"sabia-2-medium"}),". Default: ",(0,s.jsx)(t.code,{children:"sabia-2-small"}),"."]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"api_key"}),(0,s.jsx)(t.td,{children:"SecretString"}),(0,s.jsx)(t.td,{children:"Input parameter. The MariTalk API Key to use for authentication."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"temperature"}),(0,s.jsx)(t.td,{children:"Float"}),(0,s.jsxs)(t.td,{children:["Input parameter. Controls randomness in the output. Range: ",(0,s.jsx)(t.code,{children:"[0.0, 1.0]"}),". Default: ",(0,s.jsx)(t.code,{children:"0.5"}),"."]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"endpoint_url"}),(0,s.jsx)(t.td,{children:"String"}),(0,s.jsxs)(t.td,{children:["Input parameter. The MariTalk API endpoint. Default: ",(0,s.jsx)(t.code,{children:"https://api.maritalk.com"}),"."]})]})]})]})]})}function p(e={}){const{wrapper:t}={...(0,a.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(m,{...e})}):m(e)}},31929:(e,t,n)=>{n.d(t,{Ay:()=>l,RM:()=>i});var r=n(74848),s=n(28453),a=n(17886);const i=[];function o(e){const t={a:"a",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,r.jsxs)(t.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,r.jsx)(a.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Controls"})," in the ",(0,r.jsx)(t.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function l(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(o,{...e})}):o(e)}}}]); \ No newline at end of file +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[8702],{17886:(e,t,n)=>{n.d(t,{A:()=>a});n(96540);var r=n(64058),s=n(74848);function a({name:e,...t}){const n=r[e];return n?(0,s.jsx)(n,{...t}):null}},21994:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>d,default:()=>p,frontMatter:()=>l,metadata:()=>r,toc:()=>h});const r=JSON.parse('{"id":"Components/bundles-maritalk","title":"MariTalk","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-maritalk.mdx","sourceDirName":"Components","slug":"/bundles-maritalk","permalink":"/bundles-maritalk","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"MariTalk","slug":"/bundles-maritalk"},"sidebar":"docs","previous":{"title":"LM Studio","permalink":"/bundles-lmstudio"},"next":{"title":"Mem0","permalink":"/bundles-mem0"}}');var s=n(74848),a=n(28453),i=n(17886),o=n(31929);const l={title:"MariTalk",slug:"/bundles-maritalk"},d=void 0,c={},h=[{value:"MariTalk text generation",id:"maritalk-text-generation",level:2},{value:"MariTalk text generation parameters",id:"maritalk-text-generation-parameters",level:3},...o.RM];function m(e){const t={a:"a",code:"code",h2:"h2",h3:"h3",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,a.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(t.p,{children:[(0,s.jsx)(i.A,{name:"Blocks","aria-hidden":"true"})," ",(0,s.jsx)(t.a,{href:"/components-bundle-components",children:(0,s.jsx)(t.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,s.jsxs)(t.p,{children:["This page describes the components that are available in the ",(0,s.jsx)(t.strong,{children:"MariTalk"})," bundle."]}),"\n",(0,s.jsxs)(t.p,{children:["For more information, see the ",(0,s.jsx)(t.a,{href:"https://www.maritalk.com/",children:"MariTalk documentation"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"maritalk-text-generation",children:"MariTalk text generation"}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.strong,{children:"MariTalk"})," component generates text using MariTalk LLMs."]}),"\n",(0,s.jsxs)(t.p,{children:["It can output either a ",(0,s.jsx)(t.strong,{children:"Model Response"})," (",(0,s.jsx)(t.a,{href:"/data-types#message",children:(0,s.jsx)(t.code,{children:"Message"})}),") or a ",(0,s.jsx)(t.strong,{children:"Language Model"})," (",(0,s.jsx)(t.a,{href:"/data-types#languagemodel",children:(0,s.jsx)(t.code,{children:"LanguageModel"})}),")."]}),"\n",(0,s.jsxs)(t.p,{children:["Use the ",(0,s.jsx)(t.strong,{children:"Language Model"})," output when you want to use a MariTalk model as the LLM for another LLM-driven component, such as an ",(0,s.jsx)(t.strong,{children:"Agent"})," or ",(0,s.jsx)(t.strong,{children:"Smart Function"})," component."]}),"\n",(0,s.jsxs)(t.p,{children:["For more information, see ",(0,s.jsx)(t.a,{href:"/components-models",children:"Language model components"}),"."]}),"\n",(0,s.jsx)(t.h3,{id:"maritalk-text-generation-parameters",children:"MariTalk text generation parameters"}),"\n",(0,s.jsx)(o.Ay,{}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"Name"}),(0,s.jsx)(t.th,{children:"Type"}),(0,s.jsx)(t.th,{children:"Description"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"max_tokens"}),(0,s.jsx)(t.td,{children:"Integer"}),(0,s.jsxs)(t.td,{children:["Input parameter. The maximum number of tokens to generate. Set to ",(0,s.jsx)(t.code,{children:"0"})," for unlimited tokens. Default: ",(0,s.jsx)(t.code,{children:"512"}),"."]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"model_name"}),(0,s.jsx)(t.td,{children:"String"}),(0,s.jsxs)(t.td,{children:["Input parameter. The name of the MariTalk model to use. Options: ",(0,s.jsx)(t.code,{children:"sabia-2-small"}),", ",(0,s.jsx)(t.code,{children:"sabia-2-medium"}),". Default: ",(0,s.jsx)(t.code,{children:"sabia-2-small"}),"."]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"api_key"}),(0,s.jsx)(t.td,{children:"SecretString"}),(0,s.jsx)(t.td,{children:"Input parameter. The MariTalk API Key to use for authentication."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"temperature"}),(0,s.jsx)(t.td,{children:"Float"}),(0,s.jsxs)(t.td,{children:["Input parameter. Controls randomness in the output. Range: ",(0,s.jsx)(t.code,{children:"[0.0, 1.0]"}),". Default: ",(0,s.jsx)(t.code,{children:"0.5"}),"."]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"endpoint_url"}),(0,s.jsx)(t.td,{children:"String"}),(0,s.jsxs)(t.td,{children:["Input parameter. The MariTalk API endpoint. Default: ",(0,s.jsx)(t.code,{children:"https://api.maritalk.com"}),"."]})]})]})]})]})}function p(e={}){const{wrapper:t}={...(0,a.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(m,{...e})}):m(e)}},31929:(e,t,n)=>{n.d(t,{Ay:()=>l,RM:()=>i});var r=n(74848),s=n(28453),a=n(17886);const i=[];function o(e){const t={a:"a",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,r.jsxs)(t.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,r.jsx)(a.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Controls"})," in the ",(0,r.jsx)(t.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function l(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(o,{...e})}):o(e)}}}]); \ No newline at end of file diff --git a/assets/js/44691977.f78377fd.js b/assets/js/44691977.400afc77.js similarity index 63% rename from assets/js/44691977.f78377fd.js rename to assets/js/44691977.400afc77.js index 02ee16af6b..5aeb8f0917 100644 --- a/assets/js/44691977.f78377fd.js +++ b/assets/js/44691977.400afc77.js @@ -1 +1 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[4876],{17886:(e,n,t)=>{t.d(n,{A:()=>o});t(96540);var r=t(64058),s=t(74848);function o({name:e,...n}){const t=r[e];return t?(0,s.jsx)(t,{...n}):null}},31929:(e,n,t)=>{t.d(n,{Ay:()=>a,RM:()=>i});var r=t(74848),s=t(28453),o=t(17886);const i=[];function d(e){const n={a:"a",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,r.jsxs)(n.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,r.jsx)(o.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,r.jsx)(n.strong,{children:"Controls"})," in the ",(0,r.jsx)(n.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function a(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},84753:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>u,frontMatter:()=>a,metadata:()=>r,toc:()=>p});const r=JSON.parse('{"id":"Components/bundles-openrouter","title":"OpenRouter","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-openrouter.mdx","sourceDirName":"Components","slug":"/bundles-openrouter","permalink":"/bundles-openrouter","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"OpenRouter","slug":"/bundles-openrouter"},"sidebar":"docs","previous":{"title":"OpenAI","permalink":"/bundles-openai"},"next":{"title":"Perplexity","permalink":"/bundles-perplexity"}}');var s=t(74848),o=t(28453),i=t(17886),d=t(31929);const a={title:"OpenRouter",slug:"/bundles-openrouter"},l=void 0,c={},p=[{value:"OpenRouter text generation",id:"openrouter-text-generation",level:2},{value:"OpenRouter text generation parameters",id:"openrouter-text-generation-parameters",level:3},...d.RM];function h(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:[(0,s.jsx)(i.A,{name:"Blocks","aria-hidden":"true"})," ",(0,s.jsx)(n.a,{href:"/components-bundle-components",children:(0,s.jsx)(n.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,s.jsxs)(n.p,{children:["This page describes the components that are available in the ",(0,s.jsx)(n.strong,{children:"OpenRouter"})," bundle."]}),"\n",(0,s.jsxs)(n.p,{children:["For more information about OpenRouter features and functionality used by OpenRouter components, see the ",(0,s.jsx)(n.a,{href:"https://openrouter.ai/docs",children:"OpenRouter documentation"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"openrouter-text-generation",children:"OpenRouter text generation"}),"\n",(0,s.jsx)(n.p,{children:"This component generates text using OpenRouter's unified API for multiple AI models from different providers."}),"\n",(0,s.jsxs)(n.p,{children:["It can output either a ",(0,s.jsx)(n.strong,{children:"Model Response"})," (",(0,s.jsx)(n.a,{href:"/data-types#message",children:(0,s.jsx)(n.code,{children:"Message"})}),") or a ",(0,s.jsx)(n.strong,{children:"Language Model"})," (",(0,s.jsx)(n.a,{href:"/data-types#languagemodel",children:(0,s.jsx)(n.code,{children:"LanguageModel"})}),")."]}),"\n",(0,s.jsxs)(n.p,{children:["Use the ",(0,s.jsx)(n.strong,{children:"Language Model"})," output when you want to use an OpenRouter model as the LLM for another LLM-driven component, such as an ",(0,s.jsx)(n.strong,{children:"Agent"})," or ",(0,s.jsx)(n.strong,{children:"Smart Transform"})," component."]}),"\n",(0,s.jsxs)(n.p,{children:["For more information, see ",(0,s.jsx)(n.a,{href:"/components-models",children:"Language model components"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"openrouter-text-generation-parameters",children:"OpenRouter text generation parameters"}),"\n",(0,s.jsx)(d.Ay,{}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Name"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"api_key"}),(0,s.jsx)(n.td,{children:"SecretString"}),(0,s.jsx)(n.td,{children:"Input parameter. Your OpenRouter API key for authentication."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"site_url"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. Your site URL for OpenRouter rankings."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"app_name"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. Your app name for OpenRouter rankings."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"provider"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The AI model provider to use."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"model_name"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The specific model to use for chat completion."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"temperature"}),(0,s.jsx)(n.td,{children:"Float"}),(0,s.jsx)(n.td,{children:"Input parameter. Controls randomness in the output. Range: [0.0, 2.0]. Default: 0.7."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"max_tokens"}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsx)(n.td,{children:"Input parameter. The maximum number of tokens to generate."})]})]})]})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}}}]); \ No newline at end of file +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[4876],{17886:(e,n,t)=>{t.d(n,{A:()=>o});t(96540);var r=t(64058),s=t(74848);function o({name:e,...n}){const t=r[e];return t?(0,s.jsx)(t,{...n}):null}},31929:(e,n,t)=>{t.d(n,{Ay:()=>a,RM:()=>i});var r=t(74848),s=t(28453),o=t(17886);const i=[];function d(e){const n={a:"a",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,r.jsxs)(n.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,r.jsx)(o.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,r.jsx)(n.strong,{children:"Controls"})," in the ",(0,r.jsx)(n.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function a(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},84753:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>u,frontMatter:()=>a,metadata:()=>r,toc:()=>p});const r=JSON.parse('{"id":"Components/bundles-openrouter","title":"OpenRouter","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-openrouter.mdx","sourceDirName":"Components","slug":"/bundles-openrouter","permalink":"/bundles-openrouter","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"OpenRouter","slug":"/bundles-openrouter"},"sidebar":"docs","previous":{"title":"OpenAI","permalink":"/bundles-openai"},"next":{"title":"Perplexity","permalink":"/bundles-perplexity"}}');var s=t(74848),o=t(28453),i=t(17886),d=t(31929);const a={title:"OpenRouter",slug:"/bundles-openrouter"},l=void 0,c={},p=[{value:"OpenRouter text generation",id:"openrouter-text-generation",level:2},{value:"OpenRouter text generation parameters",id:"openrouter-text-generation-parameters",level:3},...d.RM];function h(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:[(0,s.jsx)(i.A,{name:"Blocks","aria-hidden":"true"})," ",(0,s.jsx)(n.a,{href:"/components-bundle-components",children:(0,s.jsx)(n.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,s.jsxs)(n.p,{children:["This page describes the components that are available in the ",(0,s.jsx)(n.strong,{children:"OpenRouter"})," bundle."]}),"\n",(0,s.jsxs)(n.p,{children:["For more information about OpenRouter features and functionality used by OpenRouter components, see the ",(0,s.jsx)(n.a,{href:"https://openrouter.ai/docs",children:"OpenRouter documentation"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"openrouter-text-generation",children:"OpenRouter text generation"}),"\n",(0,s.jsx)(n.p,{children:"This component generates text using OpenRouter's unified API for multiple AI models from different providers."}),"\n",(0,s.jsxs)(n.p,{children:["It can output either a ",(0,s.jsx)(n.strong,{children:"Model Response"})," (",(0,s.jsx)(n.a,{href:"/data-types#message",children:(0,s.jsx)(n.code,{children:"Message"})}),") or a ",(0,s.jsx)(n.strong,{children:"Language Model"})," (",(0,s.jsx)(n.a,{href:"/data-types#languagemodel",children:(0,s.jsx)(n.code,{children:"LanguageModel"})}),")."]}),"\n",(0,s.jsxs)(n.p,{children:["Use the ",(0,s.jsx)(n.strong,{children:"Language Model"})," output when you want to use an OpenRouter model as the LLM for another LLM-driven component, such as an ",(0,s.jsx)(n.strong,{children:"Agent"})," or ",(0,s.jsx)(n.strong,{children:"Smart Function"})," component."]}),"\n",(0,s.jsxs)(n.p,{children:["For more information, see ",(0,s.jsx)(n.a,{href:"/components-models",children:"Language model components"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"openrouter-text-generation-parameters",children:"OpenRouter text generation parameters"}),"\n",(0,s.jsx)(d.Ay,{}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Name"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"api_key"}),(0,s.jsx)(n.td,{children:"SecretString"}),(0,s.jsx)(n.td,{children:"Input parameter. Your OpenRouter API key for authentication."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"site_url"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. Your site URL for OpenRouter rankings."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"app_name"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. Your app name for OpenRouter rankings."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"provider"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The AI model provider to use."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"model_name"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The specific model to use for chat completion."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"temperature"}),(0,s.jsx)(n.td,{children:"Float"}),(0,s.jsx)(n.td,{children:"Input parameter. Controls randomness in the output. Range: [0.0, 2.0]. Default: 0.7."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"max_tokens"}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsx)(n.td,{children:"Input parameter. The maximum number of tokens to generate."})]})]})]})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}}}]); \ No newline at end of file diff --git a/assets/js/453ae64a.7a92d9b4.js b/assets/js/453ae64a.b82df516.js similarity index 55% rename from assets/js/453ae64a.7a92d9b4.js rename to assets/js/453ae64a.b82df516.js index 4f6b6cfbe0..e2a8d117a5 100644 --- a/assets/js/453ae64a.7a92d9b4.js +++ b/assets/js/453ae64a.b82df516.js @@ -1 +1 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[9610],{6137:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>m,frontMatter:()=>a,metadata:()=>s,toc:()=>h});const s=JSON.parse('{"id":"Components/bundles-ibm","title":"IBM","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-ibm.mdx","sourceDirName":"Components","slug":"/bundles-ibm","permalink":"/bundles-ibm","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"IBM","slug":"/bundles-ibm"},"sidebar":"docs","previous":{"title":"Hugging Face","permalink":"/bundles-huggingface"},"next":{"title":"Icosa Computing","permalink":"/bundles-icosacomputing"}}');var i=t(74848),d=t(28453),o=t(17886),r=t(31929);const a={title:"IBM",slug:"/bundles-ibm"},l=void 0,c={},h=[{value:"IBM watsonx.ai",id:"ibm-watsonxai",level:2},{value:"IBM watsonx.ai parameters",id:"ibm-watsonxai-parameters",level:3},...r.RM,{value:"IBM watsonx.ai output",id:"ibm-watsonxai-output",level:3},{value:"IBM watsonx.ai Embeddings",id:"ibm-watsonxai-embeddings",level:2},{value:"IBM watsonx.ai Embeddings parameters",id:"ibm-watsonxai-embeddings-parameters",level:3},...r.RM,{value:"Default embedding models",id:"default-embedding-models",level:3},{value:"See also",id:"see-also",level:2}];function x(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,d.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.p,{children:[(0,i.jsx)(o.A,{name:"Blocks","aria-hidden":"true"})," ",(0,i.jsx)(n.a,{href:"/components-bundle-components",children:(0,i.jsx)(n.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.strong,{children:"IBM"})," bundle provides access to IBM watsonx.ai models for text and embedding generation.\nThese components require an IBM watsonx.ai deployment and watsonx API credentials."]}),"\n",(0,i.jsx)(n.h2,{id:"ibm-watsonxai",children:"IBM watsonx.ai"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.strong,{children:"IBM watsonx.ai"})," component generates text using ",(0,i.jsx)(n.a,{href:"https://dataplatform.cloud.ibm.com/docs/content/wsj/analyze-data/fm-models.html?context=wx",children:"supported foundation models"})," in ",(0,i.jsx)(n.a,{href:"https://www.ibm.com/products/watsonx-ai",children:"IBM watsonx.ai"}),".\nTo use gateway models, use the ",(0,i.jsxs)(n.a,{href:"/bundles-openai",children:[(0,i.jsx)(n.strong,{children:"OpenAI"})," text generation component"]})," with the gateway model's OpenAI-compatible endpoint."]}),"\n",(0,i.jsxs)(n.p,{children:["You can use the ",(0,i.jsx)(n.strong,{children:"IBM watsonx.ai"})," component anywhere you need a language model in a flow."]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"A basic prompting flow using the IBM watsonx.ai component as the central Language Model component.",src:t(68799).A+"",width:"2364",height:"1562"})}),"\n",(0,i.jsx)(n.h3,{id:"ibm-watsonxai-parameters",children:"IBM watsonx.ai parameters"}),"\n",(0,i.jsx)(r.Ay,{}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Name"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"url"}),(0,i.jsx)(n.td,{children:"String"}),(0,i.jsxs)(n.td,{children:["Input parameter. The ",(0,i.jsx)(n.a,{href:"https://cloud.ibm.com/apidocs/watsonx-ai#endpoint-url",children:"watsonx API base URL"})," for your deployment and region."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"project_id"}),(0,i.jsx)(n.td,{children:"String"}),(0,i.jsxs)(n.td,{children:["Input parameter. Your ",(0,i.jsx)(n.a,{href:"https://www.ibm.com/docs/en/watsonx/saas?topic=projects",children:"watsonx Project ID"}),"."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"api_key"}),(0,i.jsx)(n.td,{children:"SecretString"}),(0,i.jsxs)(n.td,{children:["Input parameter. A ",(0,i.jsx)(n.a,{href:"https://www.ibm.com/docs/en/watsonx/saas?topic=administration-managing-user-api-key",children:"watsonx API key"})," to authenticate watsonx API access to the specified watsonx.ai deployment and model."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"model_name"}),(0,i.jsx)(n.td,{children:"String"}),(0,i.jsx)(n.td,{children:"Input parameter. The name of the watsonx model to use. Options are dynamically fetched from the API."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"max_tokens"}),(0,i.jsx)(n.td,{children:"Integer"}),(0,i.jsxs)(n.td,{children:["Input parameter. The maximum number of tokens to generate. Default: ",(0,i.jsx)(n.code,{children:"1000"}),"."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"stop_sequence"}),(0,i.jsx)(n.td,{children:"String"}),(0,i.jsx)(n.td,{children:"Input parameter. The sequence where generation should stop."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"temperature"}),(0,i.jsx)(n.td,{children:"Float"}),(0,i.jsxs)(n.td,{children:["Input parameter. Controls randomness in the output. Default: ",(0,i.jsx)(n.code,{children:"0.1"}),"."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"top_p"}),(0,i.jsx)(n.td,{children:"Float"}),(0,i.jsxs)(n.td,{children:["Input parameter. Controls nucleus sampling, which limits the model to tokens whose probability is below the ",(0,i.jsx)(n.code,{children:"top_p"})," value. Range: Default: ",(0,i.jsx)(n.code,{children:"0.9"}),"."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"frequency_penalty"}),(0,i.jsx)(n.td,{children:"Float"}),(0,i.jsxs)(n.td,{children:["Input parameter. Controls frequency penalty. A positive value decreases the probability of repeating tokens, and a negative value increases the probability. Range: Default: ",(0,i.jsx)(n.code,{children:"0.5"}),"."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"presence_penalty"}),(0,i.jsx)(n.td,{children:"Float"}),(0,i.jsxs)(n.td,{children:["Input parameter. Controls presence penalty. A positive value increases the likelihood of new topics being introduced. Default: ",(0,i.jsx)(n.code,{children:"0.3"}),"."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"seed"}),(0,i.jsx)(n.td,{children:"Integer"}),(0,i.jsxs)(n.td,{children:["Input parameter. A random seed for the model. Default: ",(0,i.jsx)(n.code,{children:"8"}),"."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"logprobs"}),(0,i.jsx)(n.td,{children:"Boolean"}),(0,i.jsxs)(n.td,{children:["Input parameter. Whether to return log probabilities of output tokens or not. Default: ",(0,i.jsx)(n.code,{children:"true"}),"."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"top_logprobs"}),(0,i.jsx)(n.td,{children:"Integer"}),(0,i.jsxs)(n.td,{children:["Input parameter. The number of most likely tokens to return at each position. Default: ",(0,i.jsx)(n.code,{children:"3"}),"."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"logit_bias"}),(0,i.jsx)(n.td,{children:"String"}),(0,i.jsx)(n.td,{children:"Input parameter. A JSON string of token IDs to bias or suppress."})]})]})]}),"\n",(0,i.jsx)(n.h3,{id:"ibm-watsonxai-output",children:"IBM watsonx.ai output"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.strong,{children:"IBM watsonx.ai"})," component can output either a ",(0,i.jsx)(n.strong,{children:"Model Response"})," (",(0,i.jsx)(n.a,{href:"/data-types#message",children:(0,i.jsx)(n.code,{children:"Message"})}),") or a ",(0,i.jsx)(n.strong,{children:"Language Model"})," (",(0,i.jsx)(n.a,{href:"/data-types#languagemodel",children:(0,i.jsx)(n.code,{children:"LanguageModel"})}),")."]}),"\n",(0,i.jsxs)(n.p,{children:["Use the ",(0,i.jsx)(n.strong,{children:"Language Model"})," output when you want to use an IBM watsonx.ai model as the LLM for another LLM-driven component, such as an ",(0,i.jsx)(n.strong,{children:"Agent"})," or ",(0,i.jsx)(n.strong,{children:"Smart Transform"})," component.\nFor more information, see ",(0,i.jsx)(n.a,{href:"/components-models",children:"Language model components"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"LanguageModel"})," output from the ",(0,i.jsx)(n.strong,{children:"IBM watsonx.ai"})," component is an instance of ",(0,i.jsx)(n.code,{children:"[ChatWatsonx](https://docs.langchain.com/oss/python/integrations/chat/ibm_watsonx)"})," configured according to the ",(0,i.jsx)(n.a,{href:"#ibm-watsonxai-parameters",children:"component's parameters"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"ibm-watsonxai-embeddings",children:"IBM watsonx.ai Embeddings"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.strong,{children:"IBM watsonx.ai Embeddings"})," component uses the ",(0,i.jsx)(n.a,{href:"https://dataplatform.cloud.ibm.com/docs/content/wsj/analyze-data/fm-models.html?context=wx",children:"supported foundation models"})," in ",(0,i.jsx)(n.a,{href:"https://www.ibm.com/products/watsonx-ai",children:"IBM watsonx.ai"})," for embedding generation."]}),"\n",(0,i.jsxs)(n.p,{children:["The output is ",(0,i.jsx)(n.a,{href:"/data-types#embeddings",children:(0,i.jsx)(n.code,{children:"Embeddings"})})," generated with ",(0,i.jsx)(n.a,{href:"https://python.langchain.com/docs/integrations/text_embedding/ibm_watsonx/",children:(0,i.jsx)(n.code,{children:"WatsonxEmbeddings"})}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["For more information about using embedding model components in flows, see ",(0,i.jsx)(n.a,{href:"/components-embedding-models",children:"Embedding model components"}),"."]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"A basic embedding generation flow using the IBM watsonx.ai Embeddings component",src:t(96425).A+"",width:"1714",height:"1486"})}),"\n",(0,i.jsx)(n.h3,{id:"ibm-watsonxai-embeddings-parameters",children:"IBM watsonx.ai Embeddings parameters"}),"\n",(0,i.jsx)(r.Ay,{}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Name"}),(0,i.jsx)(n.th,{children:"Display Name"}),(0,i.jsx)(n.th,{children:"Info"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"url"}),(0,i.jsx)(n.td,{children:"watsonx API Endpoint"}),(0,i.jsxs)(n.td,{children:["Input parameter. The ",(0,i.jsx)(n.a,{href:"https://cloud.ibm.com/apidocs/watsonx-ai#endpoint-url",children:"watsonx API base URL"})," for your deployment and region."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"project_id"}),(0,i.jsx)(n.td,{children:"watsonx project id"}),(0,i.jsxs)(n.td,{children:["Input parameter. Your ",(0,i.jsx)(n.a,{href:"https://www.ibm.com/docs/en/watsonx/saas?topic=projects",children:"watsonx Project ID"}),"."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"api_key"}),(0,i.jsx)(n.td,{children:"API Key"}),(0,i.jsxs)(n.td,{children:["Input parameter. A ",(0,i.jsx)(n.a,{href:"https://www.ibm.com/docs/en/watsonx/saas?topic=administration-managing-user-api-key",children:"watsonx API key"})," to authenticate watsonx API access to the specified watsonx.ai deployment and model."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"model_name"}),(0,i.jsx)(n.td,{children:"Model Name"}),(0,i.jsxs)(n.td,{children:["Input parameter. The name of the embedding model to use. Supports ",(0,i.jsx)(n.a,{href:"#default-embedding-models",children:"default embedding models"})," and automatically updates after connecting to your watsonx.ai deployment."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"truncate_input_tokens"}),(0,i.jsx)(n.td,{children:"Truncate Input Tokens"}),(0,i.jsxs)(n.td,{children:["Input parameter. The maximum number of tokens to process. Default: ",(0,i.jsx)(n.code,{children:"200"}),"."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"input_text"}),(0,i.jsx)(n.td,{children:"Include the original text in the output"}),(0,i.jsxs)(n.td,{children:["Input parameter. Determines if the original text is included in the output. Default: ",(0,i.jsx)(n.code,{children:"true"}),"."]})]})]})]}),"\n",(0,i.jsx)(n.h3,{id:"default-embedding-models",children:"Default embedding models"}),"\n",(0,i.jsxs)(n.p,{children:["By default, the ",(0,i.jsx)(n.strong,{children:"IBM watsonx.ai Embeddings"})," component supports the following default models:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"sentence-transformers/all-minilm-l12-v2"}),": 384-dimensional embeddings"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"ibm/slate-125m-english-rtrvr-v2"}),": 768-dimensional embeddings"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"ibm/slate-30m-english-rtrvr-v2"}),": 768-dimensional embeddings"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"intfloat/multilingual-e5-large"}),": 1024-dimensional embeddings"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"After entering your API endpoint and credentials, the component automatically fetches the list of available models from your watsonx.ai deployment."}),"\n",(0,i.jsx)(n.h2,{id:"see-also",children:"See also"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://cloud.ibm.com/docs",children:"IBM documentation"})}),"\n"]})]})}function m(e={}){const{wrapper:n}={...(0,d.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(x,{...e})}):x(e)}},17886:(e,n,t)=>{t.d(n,{A:()=>d});t(96540);var s=t(64058),i=t(74848);function d({name:e,...n}){const t=s[e];return t?(0,i.jsx)(t,{...n}):null}},31929:(e,n,t)=>{t.d(n,{Ay:()=>a,RM:()=>o});var s=t(74848),i=t(28453),d=t(17886);const o=[];function r(e){const n={a:"a",p:"p",strong:"strong",...(0,i.R)(),...e.components};return(0,s.jsxs)(n.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,s.jsx)(d.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Controls"})," in the ",(0,s.jsx)(n.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function a(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(r,{...e})}):r(e)}},68799:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/component-watsonx-model-2f388a824b49f1c49287f07bc8738d0f.png"},96425:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/component-watsonx-embeddings-chroma-591e45d59ab635d1e1e68ab8036cfed7.png"}}]); \ No newline at end of file +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[9610],{6137:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>m,frontMatter:()=>a,metadata:()=>s,toc:()=>h});const s=JSON.parse('{"id":"Components/bundles-ibm","title":"IBM","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-ibm.mdx","sourceDirName":"Components","slug":"/bundles-ibm","permalink":"/bundles-ibm","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"IBM","slug":"/bundles-ibm"},"sidebar":"docs","previous":{"title":"Hugging Face","permalink":"/bundles-huggingface"},"next":{"title":"Icosa Computing","permalink":"/bundles-icosacomputing"}}');var i=t(74848),d=t(28453),o=t(17886),r=t(31929);const a={title:"IBM",slug:"/bundles-ibm"},l=void 0,c={},h=[{value:"IBM watsonx.ai",id:"ibm-watsonxai",level:2},{value:"IBM watsonx.ai parameters",id:"ibm-watsonxai-parameters",level:3},...r.RM,{value:"IBM watsonx.ai output",id:"ibm-watsonxai-output",level:3},{value:"IBM watsonx.ai Embeddings",id:"ibm-watsonxai-embeddings",level:2},{value:"IBM watsonx.ai Embeddings parameters",id:"ibm-watsonxai-embeddings-parameters",level:3},...r.RM,{value:"Default embedding models",id:"default-embedding-models",level:3},{value:"See also",id:"see-also",level:2}];function x(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,d.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.p,{children:[(0,i.jsx)(o.A,{name:"Blocks","aria-hidden":"true"})," ",(0,i.jsx)(n.a,{href:"/components-bundle-components",children:(0,i.jsx)(n.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.strong,{children:"IBM"})," bundle provides access to IBM watsonx.ai models for text and embedding generation.\nThese components require an IBM watsonx.ai deployment and watsonx API credentials."]}),"\n",(0,i.jsx)(n.h2,{id:"ibm-watsonxai",children:"IBM watsonx.ai"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.strong,{children:"IBM watsonx.ai"})," component generates text using ",(0,i.jsx)(n.a,{href:"https://dataplatform.cloud.ibm.com/docs/content/wsj/analyze-data/fm-models.html?context=wx",children:"supported foundation models"})," in ",(0,i.jsx)(n.a,{href:"https://www.ibm.com/products/watsonx-ai",children:"IBM watsonx.ai"}),".\nTo use gateway models, use the ",(0,i.jsxs)(n.a,{href:"/bundles-openai",children:[(0,i.jsx)(n.strong,{children:"OpenAI"})," text generation component"]})," with the gateway model's OpenAI-compatible endpoint."]}),"\n",(0,i.jsxs)(n.p,{children:["You can use the ",(0,i.jsx)(n.strong,{children:"IBM watsonx.ai"})," component anywhere you need a language model in a flow."]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"A basic prompting flow using the IBM watsonx.ai component as the central Language Model component.",src:t(68799).A+"",width:"2364",height:"1562"})}),"\n",(0,i.jsx)(n.h3,{id:"ibm-watsonxai-parameters",children:"IBM watsonx.ai parameters"}),"\n",(0,i.jsx)(r.Ay,{}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Name"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"url"}),(0,i.jsx)(n.td,{children:"String"}),(0,i.jsxs)(n.td,{children:["Input parameter. The ",(0,i.jsx)(n.a,{href:"https://cloud.ibm.com/apidocs/watsonx-ai#endpoint-url",children:"watsonx API base URL"})," for your deployment and region."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"project_id"}),(0,i.jsx)(n.td,{children:"String"}),(0,i.jsxs)(n.td,{children:["Input parameter. Your ",(0,i.jsx)(n.a,{href:"https://www.ibm.com/docs/en/watsonx/saas?topic=projects",children:"watsonx Project ID"}),"."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"api_key"}),(0,i.jsx)(n.td,{children:"SecretString"}),(0,i.jsxs)(n.td,{children:["Input parameter. A ",(0,i.jsx)(n.a,{href:"https://www.ibm.com/docs/en/watsonx/saas?topic=administration-managing-user-api-key",children:"watsonx API key"})," to authenticate watsonx API access to the specified watsonx.ai deployment and model."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"model_name"}),(0,i.jsx)(n.td,{children:"String"}),(0,i.jsx)(n.td,{children:"Input parameter. The name of the watsonx model to use. Options are dynamically fetched from the API."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"max_tokens"}),(0,i.jsx)(n.td,{children:"Integer"}),(0,i.jsxs)(n.td,{children:["Input parameter. The maximum number of tokens to generate. Default: ",(0,i.jsx)(n.code,{children:"1000"}),"."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"stop_sequence"}),(0,i.jsx)(n.td,{children:"String"}),(0,i.jsx)(n.td,{children:"Input parameter. The sequence where generation should stop."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"temperature"}),(0,i.jsx)(n.td,{children:"Float"}),(0,i.jsxs)(n.td,{children:["Input parameter. Controls randomness in the output. Default: ",(0,i.jsx)(n.code,{children:"0.1"}),"."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"top_p"}),(0,i.jsx)(n.td,{children:"Float"}),(0,i.jsxs)(n.td,{children:["Input parameter. Controls nucleus sampling, which limits the model to tokens whose probability is below the ",(0,i.jsx)(n.code,{children:"top_p"})," value. Range: Default: ",(0,i.jsx)(n.code,{children:"0.9"}),"."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"frequency_penalty"}),(0,i.jsx)(n.td,{children:"Float"}),(0,i.jsxs)(n.td,{children:["Input parameter. Controls frequency penalty. A positive value decreases the probability of repeating tokens, and a negative value increases the probability. Range: Default: ",(0,i.jsx)(n.code,{children:"0.5"}),"."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"presence_penalty"}),(0,i.jsx)(n.td,{children:"Float"}),(0,i.jsxs)(n.td,{children:["Input parameter. Controls presence penalty. A positive value increases the likelihood of new topics being introduced. Default: ",(0,i.jsx)(n.code,{children:"0.3"}),"."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"seed"}),(0,i.jsx)(n.td,{children:"Integer"}),(0,i.jsxs)(n.td,{children:["Input parameter. A random seed for the model. Default: ",(0,i.jsx)(n.code,{children:"8"}),"."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"logprobs"}),(0,i.jsx)(n.td,{children:"Boolean"}),(0,i.jsxs)(n.td,{children:["Input parameter. Whether to return log probabilities of output tokens or not. Default: ",(0,i.jsx)(n.code,{children:"true"}),"."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"top_logprobs"}),(0,i.jsx)(n.td,{children:"Integer"}),(0,i.jsxs)(n.td,{children:["Input parameter. The number of most likely tokens to return at each position. Default: ",(0,i.jsx)(n.code,{children:"3"}),"."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"logit_bias"}),(0,i.jsx)(n.td,{children:"String"}),(0,i.jsx)(n.td,{children:"Input parameter. A JSON string of token IDs to bias or suppress."})]})]})]}),"\n",(0,i.jsx)(n.h3,{id:"ibm-watsonxai-output",children:"IBM watsonx.ai output"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.strong,{children:"IBM watsonx.ai"})," component can output either a ",(0,i.jsx)(n.strong,{children:"Model Response"})," (",(0,i.jsx)(n.a,{href:"/data-types#message",children:(0,i.jsx)(n.code,{children:"Message"})}),") or a ",(0,i.jsx)(n.strong,{children:"Language Model"})," (",(0,i.jsx)(n.a,{href:"/data-types#languagemodel",children:(0,i.jsx)(n.code,{children:"LanguageModel"})}),")."]}),"\n",(0,i.jsxs)(n.p,{children:["Use the ",(0,i.jsx)(n.strong,{children:"Language Model"})," output when you want to use an IBM watsonx.ai model as the LLM for another LLM-driven component, such as an ",(0,i.jsx)(n.strong,{children:"Agent"})," or ",(0,i.jsx)(n.strong,{children:"Smart Function"})," component.\nFor more information, see ",(0,i.jsx)(n.a,{href:"/components-models",children:"Language model components"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"LanguageModel"})," output from the ",(0,i.jsx)(n.strong,{children:"IBM watsonx.ai"})," component is an instance of ",(0,i.jsx)(n.code,{children:"[ChatWatsonx](https://docs.langchain.com/oss/python/integrations/chat/ibm_watsonx)"})," configured according to the ",(0,i.jsx)(n.a,{href:"#ibm-watsonxai-parameters",children:"component's parameters"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"ibm-watsonxai-embeddings",children:"IBM watsonx.ai Embeddings"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.strong,{children:"IBM watsonx.ai Embeddings"})," component uses the ",(0,i.jsx)(n.a,{href:"https://dataplatform.cloud.ibm.com/docs/content/wsj/analyze-data/fm-models.html?context=wx",children:"supported foundation models"})," in ",(0,i.jsx)(n.a,{href:"https://www.ibm.com/products/watsonx-ai",children:"IBM watsonx.ai"})," for embedding generation."]}),"\n",(0,i.jsxs)(n.p,{children:["The output is ",(0,i.jsx)(n.a,{href:"/data-types#embeddings",children:(0,i.jsx)(n.code,{children:"Embeddings"})})," generated with ",(0,i.jsx)(n.a,{href:"https://python.langchain.com/docs/integrations/text_embedding/ibm_watsonx/",children:(0,i.jsx)(n.code,{children:"WatsonxEmbeddings"})}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["For more information about using embedding model components in flows, see ",(0,i.jsx)(n.a,{href:"/components-embedding-models",children:"Embedding model components"}),"."]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"A basic embedding generation flow using the IBM watsonx.ai Embeddings component",src:t(96425).A+"",width:"1714",height:"1486"})}),"\n",(0,i.jsx)(n.h3,{id:"ibm-watsonxai-embeddings-parameters",children:"IBM watsonx.ai Embeddings parameters"}),"\n",(0,i.jsx)(r.Ay,{}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Name"}),(0,i.jsx)(n.th,{children:"Display Name"}),(0,i.jsx)(n.th,{children:"Info"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"url"}),(0,i.jsx)(n.td,{children:"watsonx API Endpoint"}),(0,i.jsxs)(n.td,{children:["Input parameter. The ",(0,i.jsx)(n.a,{href:"https://cloud.ibm.com/apidocs/watsonx-ai#endpoint-url",children:"watsonx API base URL"})," for your deployment and region."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"project_id"}),(0,i.jsx)(n.td,{children:"watsonx project id"}),(0,i.jsxs)(n.td,{children:["Input parameter. Your ",(0,i.jsx)(n.a,{href:"https://www.ibm.com/docs/en/watsonx/saas?topic=projects",children:"watsonx Project ID"}),"."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"api_key"}),(0,i.jsx)(n.td,{children:"API Key"}),(0,i.jsxs)(n.td,{children:["Input parameter. A ",(0,i.jsx)(n.a,{href:"https://www.ibm.com/docs/en/watsonx/saas?topic=administration-managing-user-api-key",children:"watsonx API key"})," to authenticate watsonx API access to the specified watsonx.ai deployment and model."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"model_name"}),(0,i.jsx)(n.td,{children:"Model Name"}),(0,i.jsxs)(n.td,{children:["Input parameter. The name of the embedding model to use. Supports ",(0,i.jsx)(n.a,{href:"#default-embedding-models",children:"default embedding models"})," and automatically updates after connecting to your watsonx.ai deployment."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"truncate_input_tokens"}),(0,i.jsx)(n.td,{children:"Truncate Input Tokens"}),(0,i.jsxs)(n.td,{children:["Input parameter. The maximum number of tokens to process. Default: ",(0,i.jsx)(n.code,{children:"200"}),"."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"input_text"}),(0,i.jsx)(n.td,{children:"Include the original text in the output"}),(0,i.jsxs)(n.td,{children:["Input parameter. Determines if the original text is included in the output. Default: ",(0,i.jsx)(n.code,{children:"true"}),"."]})]})]})]}),"\n",(0,i.jsx)(n.h3,{id:"default-embedding-models",children:"Default embedding models"}),"\n",(0,i.jsxs)(n.p,{children:["By default, the ",(0,i.jsx)(n.strong,{children:"IBM watsonx.ai Embeddings"})," component supports the following default models:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"sentence-transformers/all-minilm-l12-v2"}),": 384-dimensional embeddings"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"ibm/slate-125m-english-rtrvr-v2"}),": 768-dimensional embeddings"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"ibm/slate-30m-english-rtrvr-v2"}),": 768-dimensional embeddings"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"intfloat/multilingual-e5-large"}),": 1024-dimensional embeddings"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"After entering your API endpoint and credentials, the component automatically fetches the list of available models from your watsonx.ai deployment."}),"\n",(0,i.jsx)(n.h2,{id:"see-also",children:"See also"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://cloud.ibm.com/docs",children:"IBM documentation"})}),"\n"]})]})}function m(e={}){const{wrapper:n}={...(0,d.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(x,{...e})}):x(e)}},17886:(e,n,t)=>{t.d(n,{A:()=>d});t(96540);var s=t(64058),i=t(74848);function d({name:e,...n}){const t=s[e];return t?(0,i.jsx)(t,{...n}):null}},31929:(e,n,t)=>{t.d(n,{Ay:()=>a,RM:()=>o});var s=t(74848),i=t(28453),d=t(17886);const o=[];function r(e){const n={a:"a",p:"p",strong:"strong",...(0,i.R)(),...e.components};return(0,s.jsxs)(n.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,s.jsx)(d.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Controls"})," in the ",(0,s.jsx)(n.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function a(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(r,{...e})}):r(e)}},68799:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/component-watsonx-model-2f388a824b49f1c49287f07bc8738d0f.png"},96425:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/component-watsonx-embeddings-chroma-591e45d59ab635d1e1e68ab8036cfed7.png"}}]); \ No newline at end of file diff --git a/assets/js/46abd5bb.5bdee92e.js b/assets/js/46abd5bb.5a4650d9.js similarity index 65% rename from assets/js/46abd5bb.5bdee92e.js rename to assets/js/46abd5bb.5a4650d9.js index 01aae6b9ec..3c34d795ca 100644 --- a/assets/js/46abd5bb.5bdee92e.js +++ b/assets/js/46abd5bb.5a4650d9.js @@ -1 +1 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[2457],{17886:(e,t,n)=>{n.d(t,{A:()=>o});n(96540);var r=n(64058),s=n(74848);function o({name:e,...t}){const n=r[e];return n?(0,s.jsx)(n,{...t}):null}},31929:(e,t,n)=>{n.d(t,{Ay:()=>l,RM:()=>i});var r=n(74848),s=n(28453),o=n(17886);const i=[];function a(e){const t={a:"a",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,r.jsxs)(t.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,r.jsx)(o.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Controls"})," in the ",(0,r.jsx)(t.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function l(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},76505:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>d,default:()=>x,frontMatter:()=>l,metadata:()=>r,toc:()=>p});const r=JSON.parse('{"id":"Components/bundles-perplexity","title":"Perplexity","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-perplexity.mdx","sourceDirName":"Components","slug":"/bundles-perplexity","permalink":"/bundles-perplexity","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Perplexity","slug":"/bundles-perplexity"},"sidebar":"docs","previous":{"title":"OpenRouter","permalink":"/bundles-openrouter"},"next":{"title":"pgvector","permalink":"/bundles-pgvector"}}');var s=n(74848),o=n(28453),i=n(17886),a=n(31929);const l={title:"Perplexity",slug:"/bundles-perplexity"},d=void 0,c={},p=[{value:"Perplexity text generation",id:"perplexity-text-generation",level:2},{value:"Perplexity text generation parameters",id:"perplexity-text-generation-parameters",level:3},...a.RM];function h(e){const t={a:"a",code:"code",h2:"h2",h3:"h3",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(t.p,{children:[(0,s.jsx)(i.A,{name:"Blocks","aria-hidden":"true"})," ",(0,s.jsx)(t.a,{href:"/components-bundle-components",children:(0,s.jsx)(t.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,s.jsxs)(t.p,{children:["This page describes the components that are available in the ",(0,s.jsx)(t.strong,{children:"Perplexity"})," bundle."]}),"\n",(0,s.jsxs)(t.p,{children:["For more information about Perplexity features and functionality used by Perplexity components, see the ",(0,s.jsx)(t.a,{href:"https://perplexity.ai/",children:"Perplexity documentation"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"perplexity-text-generation",children:"Perplexity text generation"}),"\n",(0,s.jsx)(t.p,{children:"This component generates text using Perplexity's language models."}),"\n",(0,s.jsxs)(t.p,{children:["It can output either a ",(0,s.jsx)(t.strong,{children:"Model Response"})," (",(0,s.jsx)(t.a,{href:"/data-types#message",children:(0,s.jsx)(t.code,{children:"Message"})}),") or a ",(0,s.jsx)(t.strong,{children:"Language Model"})," (",(0,s.jsx)(t.a,{href:"/data-types#languagemodel",children:(0,s.jsx)(t.code,{children:"LanguageModel"})}),")."]}),"\n",(0,s.jsxs)(t.p,{children:["Use the ",(0,s.jsx)(t.strong,{children:"Language Model"})," output when you want to use a Perplexity model as the LLM for another LLM-driven component, such as an ",(0,s.jsx)(t.strong,{children:"Agent"})," or ",(0,s.jsx)(t.strong,{children:"Smart Transform"})," component."]}),"\n",(0,s.jsxs)(t.p,{children:["For more information, see ",(0,s.jsx)(t.a,{href:"/components-models",children:"Language model components"}),"."]}),"\n",(0,s.jsx)(t.h3,{id:"perplexity-text-generation-parameters",children:"Perplexity text generation parameters"}),"\n",(0,s.jsx)(a.Ay,{}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"Name"}),(0,s.jsx)(t.th,{children:"Type"}),(0,s.jsx)(t.th,{children:"Description"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"model_name"}),(0,s.jsx)(t.td,{children:"String"}),(0,s.jsx)(t.td,{children:"Input parameter. The name of the Perplexity model to use. Options include various Llama 3.1 models."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"max_tokens"}),(0,s.jsx)(t.td,{children:"Integer"}),(0,s.jsx)(t.td,{children:"Input parameter. The maximum number of tokens to generate."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"api_key"}),(0,s.jsx)(t.td,{children:"SecretString"}),(0,s.jsx)(t.td,{children:"Input parameter. The Perplexity API Key for authentication."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"temperature"}),(0,s.jsx)(t.td,{children:"Float"}),(0,s.jsx)(t.td,{children:"Input parameter. Controls randomness in the output. Default: 0.75."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"top_p"}),(0,s.jsx)(t.td,{children:"Float"}),(0,s.jsx)(t.td,{children:"Input parameter. The maximum cumulative probability of tokens to consider when sampling."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"n"}),(0,s.jsx)(t.td,{children:"Integer"}),(0,s.jsx)(t.td,{children:"Input parameter. Number of chat completions to generate for each prompt."})]})]})]})]})}function x(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}}}]); \ No newline at end of file +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[2457],{17886:(e,t,n)=>{n.d(t,{A:()=>o});n(96540);var r=n(64058),s=n(74848);function o({name:e,...t}){const n=r[e];return n?(0,s.jsx)(n,{...t}):null}},31929:(e,t,n)=>{n.d(t,{Ay:()=>l,RM:()=>i});var r=n(74848),s=n(28453),o=n(17886);const i=[];function a(e){const t={a:"a",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,r.jsxs)(t.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,r.jsx)(o.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Controls"})," in the ",(0,r.jsx)(t.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function l(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},76505:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>d,default:()=>x,frontMatter:()=>l,metadata:()=>r,toc:()=>p});const r=JSON.parse('{"id":"Components/bundles-perplexity","title":"Perplexity","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-perplexity.mdx","sourceDirName":"Components","slug":"/bundles-perplexity","permalink":"/bundles-perplexity","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Perplexity","slug":"/bundles-perplexity"},"sidebar":"docs","previous":{"title":"OpenRouter","permalink":"/bundles-openrouter"},"next":{"title":"pgvector","permalink":"/bundles-pgvector"}}');var s=n(74848),o=n(28453),i=n(17886),a=n(31929);const l={title:"Perplexity",slug:"/bundles-perplexity"},d=void 0,c={},p=[{value:"Perplexity text generation",id:"perplexity-text-generation",level:2},{value:"Perplexity text generation parameters",id:"perplexity-text-generation-parameters",level:3},...a.RM];function h(e){const t={a:"a",code:"code",h2:"h2",h3:"h3",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(t.p,{children:[(0,s.jsx)(i.A,{name:"Blocks","aria-hidden":"true"})," ",(0,s.jsx)(t.a,{href:"/components-bundle-components",children:(0,s.jsx)(t.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,s.jsxs)(t.p,{children:["This page describes the components that are available in the ",(0,s.jsx)(t.strong,{children:"Perplexity"})," bundle."]}),"\n",(0,s.jsxs)(t.p,{children:["For more information about Perplexity features and functionality used by Perplexity components, see the ",(0,s.jsx)(t.a,{href:"https://perplexity.ai/",children:"Perplexity documentation"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"perplexity-text-generation",children:"Perplexity text generation"}),"\n",(0,s.jsx)(t.p,{children:"This component generates text using Perplexity's language models."}),"\n",(0,s.jsxs)(t.p,{children:["It can output either a ",(0,s.jsx)(t.strong,{children:"Model Response"})," (",(0,s.jsx)(t.a,{href:"/data-types#message",children:(0,s.jsx)(t.code,{children:"Message"})}),") or a ",(0,s.jsx)(t.strong,{children:"Language Model"})," (",(0,s.jsx)(t.a,{href:"/data-types#languagemodel",children:(0,s.jsx)(t.code,{children:"LanguageModel"})}),")."]}),"\n",(0,s.jsxs)(t.p,{children:["Use the ",(0,s.jsx)(t.strong,{children:"Language Model"})," output when you want to use a Perplexity model as the LLM for another LLM-driven component, such as an ",(0,s.jsx)(t.strong,{children:"Agent"})," or ",(0,s.jsx)(t.strong,{children:"Smart Function"})," component."]}),"\n",(0,s.jsxs)(t.p,{children:["For more information, see ",(0,s.jsx)(t.a,{href:"/components-models",children:"Language model components"}),"."]}),"\n",(0,s.jsx)(t.h3,{id:"perplexity-text-generation-parameters",children:"Perplexity text generation parameters"}),"\n",(0,s.jsx)(a.Ay,{}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"Name"}),(0,s.jsx)(t.th,{children:"Type"}),(0,s.jsx)(t.th,{children:"Description"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"model_name"}),(0,s.jsx)(t.td,{children:"String"}),(0,s.jsx)(t.td,{children:"Input parameter. The name of the Perplexity model to use. Options include various Llama 3.1 models."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"max_tokens"}),(0,s.jsx)(t.td,{children:"Integer"}),(0,s.jsx)(t.td,{children:"Input parameter. The maximum number of tokens to generate."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"api_key"}),(0,s.jsx)(t.td,{children:"SecretString"}),(0,s.jsx)(t.td,{children:"Input parameter. The Perplexity API Key for authentication."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"temperature"}),(0,s.jsx)(t.td,{children:"Float"}),(0,s.jsx)(t.td,{children:"Input parameter. Controls randomness in the output. Default: 0.75."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"top_p"}),(0,s.jsx)(t.td,{children:"Float"}),(0,s.jsx)(t.td,{children:"Input parameter. The maximum cumulative probability of tokens to consider when sampling."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"n"}),(0,s.jsx)(t.td,{children:"Integer"}),(0,s.jsx)(t.td,{children:"Input parameter. Number of chat completions to generate for each prompt."})]})]})]})]})}function x(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}}}]); \ No newline at end of file diff --git a/assets/js/56c23a02.34764734.js b/assets/js/56c23a02.f13de791.js similarity index 51% rename from assets/js/56c23a02.34764734.js rename to assets/js/56c23a02.f13de791.js index 5c290d5812..4832d821c1 100644 --- a/assets/js/56c23a02.34764734.js +++ b/assets/js/56c23a02.f13de791.js @@ -1 +1 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[8963],{17886:(e,n,t)=>{t.d(n,{A:()=>o});t(96540);var s=t(64058),r=t(74848);function o({name:e,...n}){const t=s[e];return t?(0,r.jsx)(t,{...n}):null}},31929:(e,n,t)=>{t.d(n,{Ay:()=>a,RM:()=>d});var s=t(74848),r=t(28453),o=t(17886);const d=[];function i(e){const n={a:"a",p:"p",strong:"strong",...(0,r.R)(),...e.components};return(0,s.jsxs)(n.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,s.jsx)(o.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Controls"})," in the ",(0,s.jsx)(n.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function a(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(i,{...e})}):i(e)}},99987:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>p,frontMatter:()=>a,metadata:()=>s,toc:()=>h});const s=JSON.parse('{"id":"Components/bundles-xai","title":"xAI","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-xai.mdx","sourceDirName":"Components","slug":"/bundles-xai","permalink":"/bundles-xai","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"xAI","slug":"/bundles-xai"},"sidebar":"docs","previous":{"title":"Wikipedia","permalink":"/bundles-wikipedia"},"next":{"title":"Create custom Python components","permalink":"/components-custom-components"}}');var r=t(74848),o=t(28453),d=t(17886),i=t(31929);const a={title:"xAI",slug:"/bundles-xai"},l=void 0,c={},h=[{value:"xAI text generation",id:"xai-text-generation",level:2},{value:"xAI text generation parameters",id:"xai-text-generation-parameters",level:3},...i.RM];function x(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,o.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:[(0,r.jsx)(d.A,{name:"Blocks","aria-hidden":"true"})," ",(0,r.jsx)(n.a,{href:"/components-bundle-components",children:(0,r.jsx)(n.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,r.jsxs)(n.p,{children:["This page describes the components that are available in the ",(0,r.jsx)(n.strong,{children:"xAI"})," bundle."]}),"\n",(0,r.jsxs)(n.p,{children:["For more information about xAI features and functionality used by xAI components, see the ",(0,r.jsx)(n.a,{href:"https://x.ai/",children:"xAI documentation"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"xai-text-generation",children:"xAI text generation"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.strong,{children:"xAI"})," component generates text using xAI models like ",(0,r.jsx)(n.a,{href:"https://x.ai/grok",children:"Grok"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["It can output either a ",(0,r.jsx)(n.strong,{children:"Model Response"})," (",(0,r.jsx)(n.a,{href:"/data-types#message",children:(0,r.jsx)(n.code,{children:"Message"})}),") or a ",(0,r.jsx)(n.strong,{children:"Language Model"})," (",(0,r.jsx)(n.a,{href:"/data-types#languagemodel",children:(0,r.jsx)(n.code,{children:"LanguageModel"})}),")."]}),"\n",(0,r.jsxs)(n.p,{children:["Use the ",(0,r.jsx)(n.strong,{children:"Language Model"})," output when you want to use an xAI model as the LLM for another LLM-driven component, such as an ",(0,r.jsx)(n.strong,{children:"Agent"})," or ",(0,r.jsx)(n.strong,{children:"Smart Transform"})," component."]}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see ",(0,r.jsx)(n.a,{href:"/components-models",children:"Language model components"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"xai-text-generation-parameters",children:"xAI text generation parameters"}),"\n",(0,r.jsx)(i.Ay,{}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Name"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"max_tokens"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsxs)(n.td,{children:["Input parameter. Maximum number of tokens to generate. Set to ",(0,r.jsx)(n.code,{children:"0"})," for unlimited. Range: ",(0,r.jsx)(n.code,{children:"0-128000"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model_kwargs"}),(0,r.jsx)(n.td,{children:"Dictionary"}),(0,r.jsx)(n.td,{children:"Input parameter. Additional keyword arguments for the model."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"json_mode"}),(0,r.jsx)(n.td,{children:"Boolean"}),(0,r.jsxs)(n.td,{children:["Input parameter. If ",(0,r.jsx)(n.code,{children:"true"}),", outputs JSON regardless of passing a schema."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model_name"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsxs)(n.td,{children:["Input parameter. The xAI model to use. Default: ",(0,r.jsx)(n.code,{children:"grok-2-latest"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"base_url"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsxs)(n.td,{children:["Input parameter. Base URL for API requests. Default: ",(0,r.jsx)(n.code,{children:"https://api.x.ai/v1"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"api_key"}),(0,r.jsx)(n.td,{children:"SecretString"}),(0,r.jsx)(n.td,{children:"Input parameter. Your xAI API key for authentication."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"temperature"}),(0,r.jsx)(n.td,{children:"Float"}),(0,r.jsxs)(n.td,{children:["Input parameter. Controls randomness in the output. Range: ",(0,r.jsx)(n.code,{children:"[0.0, 2.0]"}),". Default: ",(0,r.jsx)(n.code,{children:"0.1"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"seed"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsx)(n.td,{children:"Input parameter. Controls reproducibility of the job."})]})]})]})]})}function p(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(x,{...e})}):x(e)}}}]); \ No newline at end of file +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[8963],{17886:(e,n,t)=>{t.d(n,{A:()=>o});t(96540);var s=t(64058),r=t(74848);function o({name:e,...n}){const t=s[e];return t?(0,r.jsx)(t,{...n}):null}},31929:(e,n,t)=>{t.d(n,{Ay:()=>a,RM:()=>i});var s=t(74848),r=t(28453),o=t(17886);const i=[];function d(e){const n={a:"a",p:"p",strong:"strong",...(0,r.R)(),...e.components};return(0,s.jsxs)(n.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,s.jsx)(o.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Controls"})," in the ",(0,s.jsx)(n.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function a(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},99987:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>p,frontMatter:()=>a,metadata:()=>s,toc:()=>h});const s=JSON.parse('{"id":"Components/bundles-xai","title":"xAI","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-xai.mdx","sourceDirName":"Components","slug":"/bundles-xai","permalink":"/bundles-xai","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"xAI","slug":"/bundles-xai"},"sidebar":"docs","previous":{"title":"Wikipedia","permalink":"/bundles-wikipedia"},"next":{"title":"Create custom Python components","permalink":"/components-custom-components"}}');var r=t(74848),o=t(28453),i=t(17886),d=t(31929);const a={title:"xAI",slug:"/bundles-xai"},l=void 0,c={},h=[{value:"xAI text generation",id:"xai-text-generation",level:2},{value:"xAI text generation parameters",id:"xai-text-generation-parameters",level:3},...d.RM];function x(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,o.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:[(0,r.jsx)(i.A,{name:"Blocks","aria-hidden":"true"})," ",(0,r.jsx)(n.a,{href:"/components-bundle-components",children:(0,r.jsx)(n.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,r.jsxs)(n.p,{children:["This page describes the components that are available in the ",(0,r.jsx)(n.strong,{children:"xAI"})," bundle."]}),"\n",(0,r.jsxs)(n.p,{children:["For more information about xAI features and functionality used by xAI components, see the ",(0,r.jsx)(n.a,{href:"https://x.ai/",children:"xAI documentation"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"xai-text-generation",children:"xAI text generation"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.strong,{children:"xAI"})," component generates text using xAI models like ",(0,r.jsx)(n.a,{href:"https://x.ai/grok",children:"Grok"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["It can output either a ",(0,r.jsx)(n.strong,{children:"Model Response"})," (",(0,r.jsx)(n.a,{href:"/data-types#message",children:(0,r.jsx)(n.code,{children:"Message"})}),") or a ",(0,r.jsx)(n.strong,{children:"Language Model"})," (",(0,r.jsx)(n.a,{href:"/data-types#languagemodel",children:(0,r.jsx)(n.code,{children:"LanguageModel"})}),")."]}),"\n",(0,r.jsxs)(n.p,{children:["Use the ",(0,r.jsx)(n.strong,{children:"Language Model"})," output when you want to use an xAI model as the LLM for another LLM-driven component, such as an ",(0,r.jsx)(n.strong,{children:"Agent"})," or ",(0,r.jsx)(n.strong,{children:"Smart Function"})," component."]}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see ",(0,r.jsx)(n.a,{href:"/components-models",children:"Language model components"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"xai-text-generation-parameters",children:"xAI text generation parameters"}),"\n",(0,r.jsx)(d.Ay,{}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Name"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"max_tokens"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsxs)(n.td,{children:["Input parameter. Maximum number of tokens to generate. Set to ",(0,r.jsx)(n.code,{children:"0"})," for unlimited. Range: ",(0,r.jsx)(n.code,{children:"0-128000"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model_kwargs"}),(0,r.jsx)(n.td,{children:"Dictionary"}),(0,r.jsx)(n.td,{children:"Input parameter. Additional keyword arguments for the model."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"json_mode"}),(0,r.jsx)(n.td,{children:"Boolean"}),(0,r.jsxs)(n.td,{children:["Input parameter. If ",(0,r.jsx)(n.code,{children:"true"}),", outputs JSON regardless of passing a schema."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model_name"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsxs)(n.td,{children:["Input parameter. The xAI model to use. Default: ",(0,r.jsx)(n.code,{children:"grok-2-latest"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"base_url"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsxs)(n.td,{children:["Input parameter. Base URL for API requests. Default: ",(0,r.jsx)(n.code,{children:"https://api.x.ai/v1"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"api_key"}),(0,r.jsx)(n.td,{children:"SecretString"}),(0,r.jsx)(n.td,{children:"Input parameter. Your xAI API key for authentication."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"temperature"}),(0,r.jsx)(n.td,{children:"Float"}),(0,r.jsxs)(n.td,{children:["Input parameter. Controls randomness in the output. Range: ",(0,r.jsx)(n.code,{children:"[0.0, 2.0]"}),". Default: ",(0,r.jsx)(n.code,{children:"0.1"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"seed"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsx)(n.td,{children:"Input parameter. Controls reproducibility of the job."})]})]})]})]})}function p(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(x,{...e})}):x(e)}}}]); \ No newline at end of file diff --git a/assets/js/619c7267.c4383126.js b/assets/js/619c7267.c4383126.js deleted file mode 100644 index 2db404ff9e..0000000000 --- a/assets/js/619c7267.c4383126.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[7902],{17886:(e,r,n)=>{n.d(r,{A:()=>d});n(96540);var t=n(64058),s=n(74848);function d({name:e,...r}){const n=t[e];return n?(0,s.jsx)(n,{...r}):null}},31929:(e,r,n)=>{n.d(r,{Ay:()=>h,RM:()=>o});var t=n(74848),s=n(28453),d=n(17886);const o=[];function i(e){const r={a:"a",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,t.jsxs)(r.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,t.jsx)(d.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,t.jsx)(r.strong,{children:"Controls"})," in the ",(0,t.jsx)(r.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function h(e={}){const{wrapper:r}={...(0,s.R)(),...e.components};return r?(0,t.jsx)(r,{...e,children:(0,t.jsx)(i,{...e})}):i(e)}},98406:(e,r,n)=>{n.r(r),n.d(r,{assets:()=>a,contentTitle:()=>c,default:()=>m,frontMatter:()=>h,metadata:()=>t,toc:()=>l});const t=JSON.parse('{"id":"Components/bundles-cohere","title":"Cohere","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-cohere.mdx","sourceDirName":"Components","slug":"/bundles-cohere","permalink":"/bundles-cohere","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Cohere","slug":"/bundles-cohere"},"sidebar":"docs","previous":{"title":"Cloudflare","permalink":"/bundles-cloudflare"},"next":{"title":"Composio","permalink":"/bundles-composio"}}');var s=n(74848),d=n(28453),o=n(17886),i=n(31929);const h={title:"Cohere",slug:"/bundles-cohere"},c=void 0,a={},l=[{value:"Cohere text generation",id:"cohere-text-generation",level:2},{value:"Cohere text generation parameters",id:"cohere-text-generation-parameters",level:3},...i.RM,{value:"Cohere Embeddings",id:"cohere-embeddings",level:2},{value:"Cohere Embeddings parameters",id:"cohere-embeddings-parameters",level:3},...i.RM,{value:"Cohere Rerank",id:"cohere-rerank",level:2},{value:"Cohere Rerank parameters",id:"cohere-rerank-parameters",level:3},...i.RM];function x(e){const r={a:"a",code:"code",h2:"h2",h3:"h3",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,d.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(r.p,{children:[(0,s.jsx)(o.A,{name:"Blocks","aria-hidden":"true"})," ",(0,s.jsx)(r.a,{href:"/components-bundle-components",children:(0,s.jsx)(r.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,s.jsxs)(r.p,{children:["This page describes the components that are available in the ",(0,s.jsx)(r.strong,{children:"Cohere"})," bundle."]}),"\n",(0,s.jsxs)(r.p,{children:["For more information about Cohere features and functionality used by Cohere components, see the ",(0,s.jsx)(r.a,{href:"https://cohere.ai/",children:"Cohere documentation"}),"."]}),"\n",(0,s.jsx)(r.h2,{id:"cohere-text-generation",children:"Cohere text generation"}),"\n",(0,s.jsx)(r.p,{children:"This component generates text using Cohere's language models."}),"\n",(0,s.jsxs)(r.p,{children:["It can output either a ",(0,s.jsx)(r.strong,{children:"Model Response"})," (",(0,s.jsx)(r.a,{href:"/data-types#message",children:(0,s.jsx)(r.code,{children:"Message"})}),") or a ",(0,s.jsx)(r.strong,{children:"Language Model"})," (",(0,s.jsx)(r.a,{href:"/data-types#languagemodel",children:(0,s.jsx)(r.code,{children:"LanguageModel"})}),")."]}),"\n",(0,s.jsxs)(r.p,{children:["Use the ",(0,s.jsx)(r.strong,{children:"Language Model"})," output when you want to use a Cohere model as the LLM for another LLM-driven component, such as an ",(0,s.jsx)(r.strong,{children:"Agent"})," or ",(0,s.jsx)(r.strong,{children:"Smart Transform"})," component."]}),"\n",(0,s.jsxs)(r.p,{children:["For more information, see ",(0,s.jsx)(r.a,{href:"/components-models",children:"Language model components"}),"."]}),"\n",(0,s.jsx)(r.h3,{id:"cohere-text-generation-parameters",children:"Cohere text generation parameters"}),"\n",(0,s.jsx)(i.Ay,{}),"\n",(0,s.jsxs)(r.table,{children:[(0,s.jsx)(r.thead,{children:(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.th,{children:"Name"}),(0,s.jsx)(r.th,{children:"Type"}),(0,s.jsx)(r.th,{children:"Description"})]})}),(0,s.jsxs)(r.tbody,{children:[(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:"Input"}),(0,s.jsx)(r.td,{children:"String"}),(0,s.jsx)(r.td,{children:"Input parameter. Specifies the input text for text generation."})]}),(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:"System Message"}),(0,s.jsx)(r.td,{children:"String"}),(0,s.jsxs)(r.td,{children:["Input parameter. A ",(0,s.jsx)(r.a,{href:"https://docs.cohere.com/docs/system-instructions",children:"system message"})," to pass to the model."]})]}),(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:"Stream"}),(0,s.jsx)(r.td,{children:"Boolean"}),(0,s.jsxs)(r.td,{children:["Input parameter. Whether to stream the response. Only works in chat. Default: ",(0,s.jsx)(r.code,{children:"false"}),"."]})]}),(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:"Cohere API Key"}),(0,s.jsx)(r.td,{children:"SecretString"}),(0,s.jsx)(r.td,{children:"Input parameter. Your Cohere API key."})]}),(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:"Temperature"}),(0,s.jsx)(r.td,{children:"Float"}),(0,s.jsxs)(r.td,{children:["Input parameter. Specifies the randomness of sampling. Lower values (near 0) are more deterministic, and higher values (near 1) are more creative. Defaults to ",(0,s.jsx)(r.code,{children:"0.75"}),"."]})]})]})]}),"\n",(0,s.jsx)(r.h2,{id:"cohere-embeddings",children:"Cohere Embeddings"}),"\n",(0,s.jsxs)(r.p,{children:["The ",(0,s.jsx)(r.strong,{children:"Cohere Embeddings"})," component is used to load embedding models from Cohere."]}),"\n",(0,s.jsxs)(r.p,{children:["For more information about using embedding model components in flows, see ",(0,s.jsx)(r.a,{href:"/components-embedding-models",children:"Embedding model components"}),"."]}),"\n",(0,s.jsx)(r.h3,{id:"cohere-embeddings-parameters",children:"Cohere Embeddings parameters"}),"\n",(0,s.jsx)(i.Ay,{}),"\n",(0,s.jsxs)(r.table,{children:[(0,s.jsx)(r.thead,{children:(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.th,{children:"Name"}),(0,s.jsx)(r.th,{children:"Type"}),(0,s.jsx)(r.th,{children:"Description"})]})}),(0,s.jsxs)(r.tbody,{children:[(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:"cohere_api_key"}),(0,s.jsx)(r.td,{children:"SecretString"}),(0,s.jsx)(r.td,{children:"Input parameter. The API key required to authenticate with the Cohere service."})]}),(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:"model"}),(0,s.jsx)(r.td,{children:"String"}),(0,s.jsxs)(r.td,{children:["Input parameter. The language model used for embedding text documents and performing queries. Default: ",(0,s.jsx)(r.code,{children:"embed-english-v2.0"})]})]}),(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:"truncate"}),(0,s.jsx)(r.td,{children:"Boolean"}),(0,s.jsxs)(r.td,{children:["Input parameter. How to handle input that exceeds the model's token limit. One of ",(0,s.jsx)(r.code,{children:"NONE"}),", ",(0,s.jsx)(r.code,{children:"START"}),", or ",(0,s.jsx)(r.code,{children:"END"})," (default). For more information, see the ",(0,s.jsxs)(r.a,{href:"https://docs.cohere.com/reference/embed#request.body.truncate",children:["Cohere ",(0,s.jsx)(r.code,{children:"truncate"})," API reference"]}),"."]})]}),(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:"max_retries"}),(0,s.jsx)(r.td,{children:"Integer"}),(0,s.jsxs)(r.td,{children:["Input parameter. The maximum number of retry attempts for failed requests. Default: ",(0,s.jsx)(r.code,{children:"3"})]})]}),(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:"user_agent"}),(0,s.jsx)(r.td,{children:"String"}),(0,s.jsxs)(r.td,{children:["Input parameter. A user agent string to include in requests. Default: ",(0,s.jsx)(r.code,{children:"langchain"})]})]}),(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:"request_timeout"}),(0,s.jsx)(r.td,{children:"Float"}),(0,s.jsx)(r.td,{children:"Input parameter. The timeout duration for requests in seconds. Default: None"})]})]})]}),"\n",(0,s.jsx)(r.h2,{id:"cohere-rerank",children:"Cohere Rerank"}),"\n",(0,s.jsx)(r.p,{children:"This component finds and reranks documents using the Cohere API."}),"\n",(0,s.jsxs)(r.p,{children:["Outputs ",(0,s.jsx)(r.code,{children:"Data"})," containing the reranked documents, limited by the ",(0,s.jsx)(r.strong,{children:"Top N"})," parameter."]}),"\n",(0,s.jsx)(r.h3,{id:"cohere-rerank-parameters",children:"Cohere Rerank parameters"}),"\n",(0,s.jsx)(i.Ay,{}),"\n",(0,s.jsxs)(r.table,{children:[(0,s.jsx)(r.thead,{children:(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.th,{children:"Name"}),(0,s.jsx)(r.th,{children:"Type"}),(0,s.jsx)(r.th,{children:"Description"})]})}),(0,s.jsxs)(r.tbody,{children:[(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:(0,s.jsx)(r.strong,{children:"Search Query"})}),(0,s.jsx)(r.td,{children:"String"}),(0,s.jsx)(r.td,{children:"Input parameter. The search query for reranking documents."})]}),(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:(0,s.jsx)(r.strong,{children:"Search Results"})}),(0,s.jsx)(r.td,{children:"Data"}),(0,s.jsx)(r.td,{children:"Input parameter. Connect search results output from a vector store component. Use this parameter to apply reranking after running a similarity search on your vector database."})]}),(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:(0,s.jsx)(r.strong,{children:"Top N"})}),(0,s.jsx)(r.td,{children:"Integer"}),(0,s.jsxs)(r.td,{children:["Input parameter. The number of documents to return after reranking. Default: ",(0,s.jsx)(r.code,{children:"3"}),"."]})]}),(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:(0,s.jsx)(r.strong,{children:"Cohere API Key"})}),(0,s.jsx)(r.td,{children:"SecretString"}),(0,s.jsx)(r.td,{children:"Input parameter. Your Cohere API key."})]}),(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:(0,s.jsx)(r.strong,{children:"Model"})}),(0,s.jsx)(r.td,{children:"String"}),(0,s.jsxs)(r.td,{children:["Input parameter. The re-ranker model to use. Default: ",(0,s.jsx)(r.code,{children:"rerank-english-v3.0"})]})]})]})]})]})}function m(e={}){const{wrapper:r}={...(0,d.R)(),...e.components};return r?(0,s.jsx)(r,{...e,children:(0,s.jsx)(x,{...e})}):x(e)}}}]); \ No newline at end of file diff --git a/assets/js/619c7267.ccc9a6ea.js b/assets/js/619c7267.ccc9a6ea.js new file mode 100644 index 0000000000..4cc3790ceb --- /dev/null +++ b/assets/js/619c7267.ccc9a6ea.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[7902],{17886:(e,r,n)=>{n.d(r,{A:()=>d});n(96540);var t=n(64058),s=n(74848);function d({name:e,...r}){const n=t[e];return n?(0,s.jsx)(n,{...r}):null}},31929:(e,r,n)=>{n.d(r,{Ay:()=>h,RM:()=>o});var t=n(74848),s=n(28453),d=n(17886);const o=[];function i(e){const r={a:"a",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,t.jsxs)(r.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,t.jsx)(d.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,t.jsx)(r.strong,{children:"Controls"})," in the ",(0,t.jsx)(r.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function h(e={}){const{wrapper:r}={...(0,s.R)(),...e.components};return r?(0,t.jsx)(r,{...e,children:(0,t.jsx)(i,{...e})}):i(e)}},98406:(e,r,n)=>{n.r(r),n.d(r,{assets:()=>a,contentTitle:()=>c,default:()=>m,frontMatter:()=>h,metadata:()=>t,toc:()=>l});const t=JSON.parse('{"id":"Components/bundles-cohere","title":"Cohere","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-cohere.mdx","sourceDirName":"Components","slug":"/bundles-cohere","permalink":"/bundles-cohere","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Cohere","slug":"/bundles-cohere"},"sidebar":"docs","previous":{"title":"Cloudflare","permalink":"/bundles-cloudflare"},"next":{"title":"Composio","permalink":"/bundles-composio"}}');var s=n(74848),d=n(28453),o=n(17886),i=n(31929);const h={title:"Cohere",slug:"/bundles-cohere"},c=void 0,a={},l=[{value:"Cohere text generation",id:"cohere-text-generation",level:2},{value:"Cohere text generation parameters",id:"cohere-text-generation-parameters",level:3},...i.RM,{value:"Cohere Embeddings",id:"cohere-embeddings",level:2},{value:"Cohere Embeddings parameters",id:"cohere-embeddings-parameters",level:3},...i.RM,{value:"Cohere Rerank",id:"cohere-rerank",level:2},{value:"Cohere Rerank parameters",id:"cohere-rerank-parameters",level:3},...i.RM];function x(e){const r={a:"a",code:"code",h2:"h2",h3:"h3",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,d.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(r.p,{children:[(0,s.jsx)(o.A,{name:"Blocks","aria-hidden":"true"})," ",(0,s.jsx)(r.a,{href:"/components-bundle-components",children:(0,s.jsx)(r.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,s.jsxs)(r.p,{children:["This page describes the components that are available in the ",(0,s.jsx)(r.strong,{children:"Cohere"})," bundle."]}),"\n",(0,s.jsxs)(r.p,{children:["For more information about Cohere features and functionality used by Cohere components, see the ",(0,s.jsx)(r.a,{href:"https://cohere.ai/",children:"Cohere documentation"}),"."]}),"\n",(0,s.jsx)(r.h2,{id:"cohere-text-generation",children:"Cohere text generation"}),"\n",(0,s.jsx)(r.p,{children:"This component generates text using Cohere's language models."}),"\n",(0,s.jsxs)(r.p,{children:["It can output either a ",(0,s.jsx)(r.strong,{children:"Model Response"})," (",(0,s.jsx)(r.a,{href:"/data-types#message",children:(0,s.jsx)(r.code,{children:"Message"})}),") or a ",(0,s.jsx)(r.strong,{children:"Language Model"})," (",(0,s.jsx)(r.a,{href:"/data-types#languagemodel",children:(0,s.jsx)(r.code,{children:"LanguageModel"})}),")."]}),"\n",(0,s.jsxs)(r.p,{children:["Use the ",(0,s.jsx)(r.strong,{children:"Language Model"})," output when you want to use a Cohere model as the LLM for another LLM-driven component, such as an ",(0,s.jsx)(r.strong,{children:"Agent"})," or ",(0,s.jsx)(r.strong,{children:"Smart Function"})," component."]}),"\n",(0,s.jsxs)(r.p,{children:["For more information, see ",(0,s.jsx)(r.a,{href:"/components-models",children:"Language model components"}),"."]}),"\n",(0,s.jsx)(r.h3,{id:"cohere-text-generation-parameters",children:"Cohere text generation parameters"}),"\n",(0,s.jsx)(i.Ay,{}),"\n",(0,s.jsxs)(r.table,{children:[(0,s.jsx)(r.thead,{children:(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.th,{children:"Name"}),(0,s.jsx)(r.th,{children:"Type"}),(0,s.jsx)(r.th,{children:"Description"})]})}),(0,s.jsxs)(r.tbody,{children:[(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:"Input"}),(0,s.jsx)(r.td,{children:"String"}),(0,s.jsx)(r.td,{children:"Input parameter. Specifies the input text for text generation."})]}),(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:"System Message"}),(0,s.jsx)(r.td,{children:"String"}),(0,s.jsxs)(r.td,{children:["Input parameter. A ",(0,s.jsx)(r.a,{href:"https://docs.cohere.com/docs/system-instructions",children:"system message"})," to pass to the model."]})]}),(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:"Stream"}),(0,s.jsx)(r.td,{children:"Boolean"}),(0,s.jsxs)(r.td,{children:["Input parameter. Whether to stream the response. Only works in chat. Default: ",(0,s.jsx)(r.code,{children:"false"}),"."]})]}),(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:"Cohere API Key"}),(0,s.jsx)(r.td,{children:"SecretString"}),(0,s.jsx)(r.td,{children:"Input parameter. Your Cohere API key."})]}),(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:"Temperature"}),(0,s.jsx)(r.td,{children:"Float"}),(0,s.jsxs)(r.td,{children:["Input parameter. Specifies the randomness of sampling. Lower values (near 0) are more deterministic, and higher values (near 1) are more creative. Defaults to ",(0,s.jsx)(r.code,{children:"0.75"}),"."]})]})]})]}),"\n",(0,s.jsx)(r.h2,{id:"cohere-embeddings",children:"Cohere Embeddings"}),"\n",(0,s.jsxs)(r.p,{children:["The ",(0,s.jsx)(r.strong,{children:"Cohere Embeddings"})," component is used to load embedding models from Cohere."]}),"\n",(0,s.jsxs)(r.p,{children:["For more information about using embedding model components in flows, see ",(0,s.jsx)(r.a,{href:"/components-embedding-models",children:"Embedding model components"}),"."]}),"\n",(0,s.jsx)(r.h3,{id:"cohere-embeddings-parameters",children:"Cohere Embeddings parameters"}),"\n",(0,s.jsx)(i.Ay,{}),"\n",(0,s.jsxs)(r.table,{children:[(0,s.jsx)(r.thead,{children:(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.th,{children:"Name"}),(0,s.jsx)(r.th,{children:"Type"}),(0,s.jsx)(r.th,{children:"Description"})]})}),(0,s.jsxs)(r.tbody,{children:[(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:"cohere_api_key"}),(0,s.jsx)(r.td,{children:"SecretString"}),(0,s.jsx)(r.td,{children:"Input parameter. The API key required to authenticate with the Cohere service."})]}),(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:"model"}),(0,s.jsx)(r.td,{children:"String"}),(0,s.jsxs)(r.td,{children:["Input parameter. The language model used for embedding text documents and performing queries. Default: ",(0,s.jsx)(r.code,{children:"embed-english-v2.0"})]})]}),(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:"truncate"}),(0,s.jsx)(r.td,{children:"Boolean"}),(0,s.jsxs)(r.td,{children:["Input parameter. How to handle input that exceeds the model's token limit. One of ",(0,s.jsx)(r.code,{children:"NONE"}),", ",(0,s.jsx)(r.code,{children:"START"}),", or ",(0,s.jsx)(r.code,{children:"END"})," (default). For more information, see the ",(0,s.jsxs)(r.a,{href:"https://docs.cohere.com/reference/embed#request.body.truncate",children:["Cohere ",(0,s.jsx)(r.code,{children:"truncate"})," API reference"]}),"."]})]}),(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:"max_retries"}),(0,s.jsx)(r.td,{children:"Integer"}),(0,s.jsxs)(r.td,{children:["Input parameter. The maximum number of retry attempts for failed requests. Default: ",(0,s.jsx)(r.code,{children:"3"})]})]}),(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:"user_agent"}),(0,s.jsx)(r.td,{children:"String"}),(0,s.jsxs)(r.td,{children:["Input parameter. A user agent string to include in requests. Default: ",(0,s.jsx)(r.code,{children:"langchain"})]})]}),(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:"request_timeout"}),(0,s.jsx)(r.td,{children:"Float"}),(0,s.jsx)(r.td,{children:"Input parameter. The timeout duration for requests in seconds. Default: None"})]})]})]}),"\n",(0,s.jsx)(r.h2,{id:"cohere-rerank",children:"Cohere Rerank"}),"\n",(0,s.jsx)(r.p,{children:"This component finds and reranks documents using the Cohere API."}),"\n",(0,s.jsxs)(r.p,{children:["Outputs ",(0,s.jsx)(r.code,{children:"Data"})," containing the reranked documents, limited by the ",(0,s.jsx)(r.strong,{children:"Top N"})," parameter."]}),"\n",(0,s.jsx)(r.h3,{id:"cohere-rerank-parameters",children:"Cohere Rerank parameters"}),"\n",(0,s.jsx)(i.Ay,{}),"\n",(0,s.jsxs)(r.table,{children:[(0,s.jsx)(r.thead,{children:(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.th,{children:"Name"}),(0,s.jsx)(r.th,{children:"Type"}),(0,s.jsx)(r.th,{children:"Description"})]})}),(0,s.jsxs)(r.tbody,{children:[(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:(0,s.jsx)(r.strong,{children:"Search Query"})}),(0,s.jsx)(r.td,{children:"String"}),(0,s.jsx)(r.td,{children:"Input parameter. The search query for reranking documents."})]}),(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:(0,s.jsx)(r.strong,{children:"Search Results"})}),(0,s.jsx)(r.td,{children:"Data"}),(0,s.jsx)(r.td,{children:"Input parameter. Connect search results output from a vector store component. Use this parameter to apply reranking after running a similarity search on your vector database."})]}),(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:(0,s.jsx)(r.strong,{children:"Top N"})}),(0,s.jsx)(r.td,{children:"Integer"}),(0,s.jsxs)(r.td,{children:["Input parameter. The number of documents to return after reranking. Default: ",(0,s.jsx)(r.code,{children:"3"}),"."]})]}),(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:(0,s.jsx)(r.strong,{children:"Cohere API Key"})}),(0,s.jsx)(r.td,{children:"SecretString"}),(0,s.jsx)(r.td,{children:"Input parameter. Your Cohere API key."})]}),(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:(0,s.jsx)(r.strong,{children:"Model"})}),(0,s.jsx)(r.td,{children:"String"}),(0,s.jsxs)(r.td,{children:["Input parameter. The re-ranker model to use. Default: ",(0,s.jsx)(r.code,{children:"rerank-english-v3.0"})]})]})]})]})]})}function m(e={}){const{wrapper:r}={...(0,d.R)(),...e.components};return r?(0,s.jsx)(r,{...e,children:(0,s.jsx)(x,{...e})}):x(e)}}}]); \ No newline at end of file diff --git a/assets/js/62d1268c.d81bf895.js b/assets/js/62d1268c.5ef98d36.js similarity index 55% rename from assets/js/62d1268c.d81bf895.js rename to assets/js/62d1268c.5ef98d36.js index f9079bbab2..d702d4cf12 100644 --- a/assets/js/62d1268c.d81bf895.js +++ b/assets/js/62d1268c.5ef98d36.js @@ -1 +1 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[9213],{7369:(e,n,s)=>{s.d(n,{A:()=>l});const l=s.p+"assets/images/component-ollama-embeddings-chromadb-c02d6ef9e753b61c274778d90f2a6eec.png"},17287:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>i,default:()=>m,frontMatter:()=>r,metadata:()=>l,toc:()=>c});const l=JSON.parse('{"id":"Components/bundles-ollama","title":"Ollama","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-ollama.mdx","sourceDirName":"Components","slug":"/bundles-ollama","permalink":"/bundles-ollama","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Ollama","slug":"/bundles-ollama"},"sidebar":"docs","previous":{"title":"NVIDIA","permalink":"/bundles-nvidia"},"next":{"title":"OpenAI","permalink":"/bundles-openai"}}');var o=s(74848),a=s(28453),t=s(17886);const r={title:"Ollama",slug:"/bundles-ollama"},i=void 0,d={},c=[{value:"Ollama text generation",id:"ollama-text-generation",level:2},{value:"Ollama Embeddings",id:"ollama-embeddings",level:2}];function h(e){const n={a:"a",code:"code",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",...(0,a.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:[(0,o.jsx)(t.A,{name:"Blocks","aria-hidden":"true"})," ",(0,o.jsx)(n.a,{href:"/components-bundle-components",children:(0,o.jsx)(n.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,o.jsxs)(n.p,{children:["This page describes the components that are available in the ",(0,o.jsx)(n.strong,{children:"Ollama"})," bundle."]}),"\n",(0,o.jsxs)(n.p,{children:["For more information about Ollama features and functionality used by Ollama components, see the ",(0,o.jsx)(n.a,{href:"https://ollama.com/",children:"Ollama documentation"}),"."]}),"\n",(0,o.jsx)(n.h2,{id:"ollama-text-generation",children:"Ollama text generation"}),"\n",(0,o.jsxs)(n.p,{children:["This component generates text using ",(0,o.jsx)(n.a,{href:"https://ollama.com/library",children:"Ollama's language models"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["To use the ",(0,o.jsx)(n.strong,{children:"Ollama"})," component in a flow, connect Langflow to your locally running Ollama server and select a model:"]}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Add the ",(0,o.jsx)(n.strong,{children:"Ollama"})," component to your flow."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["In the ",(0,o.jsx)(n.strong,{children:"Base URL"})," field, enter the address for your locally running Ollama server."]}),"\n",(0,o.jsxs)(n.p,{children:["This value is set as the ",(0,o.jsx)(n.code,{children:"OLLAMA_HOST"})," environment variable in Ollama.\nThe default base URL is ",(0,o.jsx)(n.code,{children:"http://127.0.0.1:11434"}),"."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Once the connection is established, select a model in the ",(0,o.jsx)(n.strong,{children:"Model Name"})," field, such as ",(0,o.jsx)(n.code,{children:"llama3.2:latest"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["To refresh the server's list of models, click ",(0,o.jsx)(t.A,{name:"RefreshCw","aria-hidden":"true"})," ",(0,o.jsx)(n.strong,{children:"Refresh"}),"."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Optional: To configure additional parameters, such as temperature or max tokens, click ",(0,o.jsx)(t.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,o.jsx)(n.strong,{children:"Controls"})," in the ",(0,o.jsx)(n.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Connect the ",(0,o.jsx)(n.strong,{children:"Ollama"})," component to other components in the flow, depending on how you want to use the model."]}),"\n",(0,o.jsxs)(n.p,{children:["Language model components can output either a ",(0,o.jsx)(n.strong,{children:"Model Response"})," (",(0,o.jsx)(n.a,{href:"/data-types#message",children:(0,o.jsx)(n.code,{children:"Message"})}),") or a ",(0,o.jsx)(n.strong,{children:"Language Model"})," (",(0,o.jsx)(n.a,{href:"/data-types#languagemodel",children:(0,o.jsx)(n.code,{children:"LanguageModel"})}),"). Use the ",(0,o.jsx)(n.strong,{children:"Language Model"})," output when you want to use an Ollama model as the LLM for another LLM-driven component, such as an ",(0,o.jsx)(n.strong,{children:"Agent"})," or ",(0,o.jsx)(n.strong,{children:"Smart Transform"})," component. For more information, see ",(0,o.jsx)(n.a,{href:"/components-models",children:"Language model components"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["In the following example, the flow uses ",(0,o.jsx)(n.code,{children:"LanguageModel"})," output to use an Ollama model as the LLM for an ",(0,o.jsxs)(n.a,{href:"/components-agents",children:[(0,o.jsx)(n.strong,{children:"Agent"})," component"]}),"."]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Ollama component used as the LLM in an agent flow",src:s(92757).A+"",width:"4000",height:"2668"})}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"ollama-embeddings",children:"Ollama Embeddings"}),"\n",(0,o.jsxs)(n.p,{children:["The ",(0,o.jsx)(n.strong,{children:"Ollama Embeddings"})," component generates embeddings using ",(0,o.jsx)(n.a,{href:"https://ollama.com/search?c=embedding",children:"Ollama embedding models"}),"."]}),"\n",(0,o.jsx)(n.p,{children:"To use this component in a flow, connect Langflow to your locally running Ollama server and select an embeddings model:"}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Add the ",(0,o.jsx)(n.strong,{children:"Ollama Embeddings"})," component to your flow."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["In the ",(0,o.jsx)(n.strong,{children:"Ollama Base URL"})," field, enter the address for your locally running Ollama server."]}),"\n",(0,o.jsxs)(n.p,{children:["This value is set as the ",(0,o.jsx)(n.code,{children:"OLLAMA_HOST"})," environment variable in Ollama.\nThe default base URL is ",(0,o.jsx)(n.code,{children:"http://127.0.0.1:11434"}),"."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Once the connection is established, select a model in the ",(0,o.jsx)(n.strong,{children:"Ollama Model"})," field, such as ",(0,o.jsx)(n.code,{children:"all-minilm:latest"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["To refresh the server's list of models, click ",(0,o.jsx)(t.A,{name:"RefreshCw","aria-hidden":"true"})," ",(0,o.jsx)(n.strong,{children:"Refresh"}),"."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Optional: To configure additional parameters, such as temperature or max tokens, click ",(0,o.jsx)(t.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,o.jsx)(n.strong,{children:"Controls"})," in the ",(0,o.jsx)(n.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),".\nAvailable parameters depend on the selected model."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Connect the ",(0,o.jsx)(n.strong,{children:"Ollama Embeddings"})," component to other components in the flow.\nFor more information about using embedding model components in flows, see ",(0,o.jsx)(n.a,{href:"/components-embedding-models",children:"Embedding model components"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["This example connects the ",(0,o.jsx)(n.strong,{children:"Ollama Embeddings"})," component to generate embeddings for text chunks extracted from a PDF file, and then stores the embeddings and chunks in a Chroma DB vector store."]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Ollama Embeddings component in an embedding generation flow",src:s(7369).A+"",width:"1098",height:"811"})}),"\n"]}),"\n"]})]})}function m(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(h,{...e})}):h(e)}},17886:(e,n,s)=>{s.d(n,{A:()=>a});s(96540);var l=s(64058),o=s(74848);function a({name:e,...n}){const s=l[e];return s?(0,o.jsx)(s,{...n}):null}},92757:(e,n,s)=>{s.d(n,{A:()=>l});const l=s.p+"assets/images/component-ollama-model-5755eab19c67fb10ee0533b3f7ade726.png"}}]); \ No newline at end of file +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[9213],{7369:(e,n,s)=>{s.d(n,{A:()=>l});const l=s.p+"assets/images/component-ollama-embeddings-chromadb-c02d6ef9e753b61c274778d90f2a6eec.png"},17287:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>i,default:()=>m,frontMatter:()=>r,metadata:()=>l,toc:()=>c});const l=JSON.parse('{"id":"Components/bundles-ollama","title":"Ollama","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-ollama.mdx","sourceDirName":"Components","slug":"/bundles-ollama","permalink":"/bundles-ollama","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Ollama","slug":"/bundles-ollama"},"sidebar":"docs","previous":{"title":"NVIDIA","permalink":"/bundles-nvidia"},"next":{"title":"OpenAI","permalink":"/bundles-openai"}}');var o=s(74848),a=s(28453),t=s(17886);const r={title:"Ollama",slug:"/bundles-ollama"},i=void 0,d={},c=[{value:"Ollama text generation",id:"ollama-text-generation",level:2},{value:"Ollama Embeddings",id:"ollama-embeddings",level:2}];function h(e){const n={a:"a",code:"code",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",...(0,a.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:[(0,o.jsx)(t.A,{name:"Blocks","aria-hidden":"true"})," ",(0,o.jsx)(n.a,{href:"/components-bundle-components",children:(0,o.jsx)(n.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,o.jsxs)(n.p,{children:["This page describes the components that are available in the ",(0,o.jsx)(n.strong,{children:"Ollama"})," bundle."]}),"\n",(0,o.jsxs)(n.p,{children:["For more information about Ollama features and functionality used by Ollama components, see the ",(0,o.jsx)(n.a,{href:"https://ollama.com/",children:"Ollama documentation"}),"."]}),"\n",(0,o.jsx)(n.h2,{id:"ollama-text-generation",children:"Ollama text generation"}),"\n",(0,o.jsxs)(n.p,{children:["This component generates text using ",(0,o.jsx)(n.a,{href:"https://ollama.com/library",children:"Ollama's language models"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["To use the ",(0,o.jsx)(n.strong,{children:"Ollama"})," component in a flow, connect Langflow to your locally running Ollama server and select a model:"]}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Add the ",(0,o.jsx)(n.strong,{children:"Ollama"})," component to your flow."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["In the ",(0,o.jsx)(n.strong,{children:"Base URL"})," field, enter the address for your locally running Ollama server."]}),"\n",(0,o.jsxs)(n.p,{children:["This value is set as the ",(0,o.jsx)(n.code,{children:"OLLAMA_HOST"})," environment variable in Ollama.\nThe default base URL is ",(0,o.jsx)(n.code,{children:"http://127.0.0.1:11434"}),"."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Once the connection is established, select a model in the ",(0,o.jsx)(n.strong,{children:"Model Name"})," field, such as ",(0,o.jsx)(n.code,{children:"llama3.2:latest"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["To refresh the server's list of models, click ",(0,o.jsx)(t.A,{name:"RefreshCw","aria-hidden":"true"})," ",(0,o.jsx)(n.strong,{children:"Refresh"}),"."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Optional: To configure additional parameters, such as temperature or max tokens, click ",(0,o.jsx)(t.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,o.jsx)(n.strong,{children:"Controls"})," in the ",(0,o.jsx)(n.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Connect the ",(0,o.jsx)(n.strong,{children:"Ollama"})," component to other components in the flow, depending on how you want to use the model."]}),"\n",(0,o.jsxs)(n.p,{children:["Language model components can output either a ",(0,o.jsx)(n.strong,{children:"Model Response"})," (",(0,o.jsx)(n.a,{href:"/data-types#message",children:(0,o.jsx)(n.code,{children:"Message"})}),") or a ",(0,o.jsx)(n.strong,{children:"Language Model"})," (",(0,o.jsx)(n.a,{href:"/data-types#languagemodel",children:(0,o.jsx)(n.code,{children:"LanguageModel"})}),"). Use the ",(0,o.jsx)(n.strong,{children:"Language Model"})," output when you want to use an Ollama model as the LLM for another LLM-driven component, such as an ",(0,o.jsx)(n.strong,{children:"Agent"})," or ",(0,o.jsx)(n.strong,{children:"Smart Function"})," component. For more information, see ",(0,o.jsx)(n.a,{href:"/components-models",children:"Language model components"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["In the following example, the flow uses ",(0,o.jsx)(n.code,{children:"LanguageModel"})," output to use an Ollama model as the LLM for an ",(0,o.jsxs)(n.a,{href:"/components-agents",children:[(0,o.jsx)(n.strong,{children:"Agent"})," component"]}),"."]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Ollama component used as the LLM in an agent flow",src:s(92757).A+"",width:"4000",height:"2668"})}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"ollama-embeddings",children:"Ollama Embeddings"}),"\n",(0,o.jsxs)(n.p,{children:["The ",(0,o.jsx)(n.strong,{children:"Ollama Embeddings"})," component generates embeddings using ",(0,o.jsx)(n.a,{href:"https://ollama.com/search?c=embedding",children:"Ollama embedding models"}),"."]}),"\n",(0,o.jsx)(n.p,{children:"To use this component in a flow, connect Langflow to your locally running Ollama server and select an embeddings model:"}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Add the ",(0,o.jsx)(n.strong,{children:"Ollama Embeddings"})," component to your flow."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["In the ",(0,o.jsx)(n.strong,{children:"Ollama Base URL"})," field, enter the address for your locally running Ollama server."]}),"\n",(0,o.jsxs)(n.p,{children:["This value is set as the ",(0,o.jsx)(n.code,{children:"OLLAMA_HOST"})," environment variable in Ollama.\nThe default base URL is ",(0,o.jsx)(n.code,{children:"http://127.0.0.1:11434"}),"."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Once the connection is established, select a model in the ",(0,o.jsx)(n.strong,{children:"Ollama Model"})," field, such as ",(0,o.jsx)(n.code,{children:"all-minilm:latest"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["To refresh the server's list of models, click ",(0,o.jsx)(t.A,{name:"RefreshCw","aria-hidden":"true"})," ",(0,o.jsx)(n.strong,{children:"Refresh"}),"."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Optional: To configure additional parameters, such as temperature or max tokens, click ",(0,o.jsx)(t.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,o.jsx)(n.strong,{children:"Controls"})," in the ",(0,o.jsx)(n.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),".\nAvailable parameters depend on the selected model."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Connect the ",(0,o.jsx)(n.strong,{children:"Ollama Embeddings"})," component to other components in the flow.\nFor more information about using embedding model components in flows, see ",(0,o.jsx)(n.a,{href:"/components-embedding-models",children:"Embedding model components"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["This example connects the ",(0,o.jsx)(n.strong,{children:"Ollama Embeddings"})," component to generate embeddings for text chunks extracted from a PDF file, and then stores the embeddings and chunks in a Chroma DB vector store."]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Ollama Embeddings component in an embedding generation flow",src:s(7369).A+"",width:"1098",height:"811"})}),"\n"]}),"\n"]})]})}function m(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(h,{...e})}):h(e)}},17886:(e,n,s)=>{s.d(n,{A:()=>a});s(96540);var l=s(64058),o=s(74848);function a({name:e,...n}){const s=l[e];return s?(0,o.jsx)(s,{...n}):null}},92757:(e,n,s)=>{s.d(n,{A:()=>l});const l=s.p+"assets/images/component-ollama-model-5755eab19c67fb10ee0533b3f7ade726.png"}}]); \ No newline at end of file diff --git a/assets/js/7819cc1c.0becd7a6.js b/assets/js/7819cc1c.0becd7a6.js new file mode 100644 index 0000000000..79fca5abd7 --- /dev/null +++ b/assets/js/7819cc1c.0becd7a6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[6006],{9898:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/component-llm-router-1b417082a0208a70065bc177a78fab67.png"},11470:(e,t,n)=>{n.d(t,{A:()=>v});var s=n(96540),r=n(18215),o=n(23104),a=n(56347),i=n(205),c=n(57485),l=n(31682),d=n(70679);function h(e){return s.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,s.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)})?.filter(Boolean)??[]}function p(e){const{values:t,children:n}=e;return(0,s.useMemo)(()=>{const e=t??function(e){return h(e).map(({props:{value:e,label:t,attributes:n,default:s}})=>({value:e,label:t,attributes:n,default:s}))}(n);return function(e){const t=(0,l.XI)(e,(e,t)=>e.value===t.value);if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map(e=>e.value).join(", ")}" found in . Every value needs to be unique.`)}(e),e},[t,n])}function u({value:e,tabValues:t}){return t.some(t=>t.value===e)}function x({queryString:e=!1,groupId:t}){const n=(0,a.W6)(),r=function({queryString:e=!1,groupId:t}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:e,groupId:t});return[(0,c.aZ)(r),(0,s.useCallback)(e=>{if(!r)return;const t=new URLSearchParams(n.location.search);t.set(r,e),n.replace({...n.location,search:t.toString()})},[r,n])]}function m(e){const{defaultValue:t,queryString:n=!1,groupId:r}=e,o=p(e),[a,c]=(0,s.useState)(()=>function({defaultValue:e,tabValues:t}){if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(e){if(!u({value:e,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${t.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const n=t.find(e=>e.default)??t[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:o})),[l,h]=x({queryString:n,groupId:r}),[m,j]=function({groupId:e}){const t=function(e){return e?`docusaurus.tab.${e}`:null}(e),[n,r]=(0,d.Dv)(t);return[n,(0,s.useCallback)(e=>{t&&r.set(e)},[t,r])]}({groupId:r}),g=(()=>{const e=l??m;return u({value:e,tabValues:o})?e:null})();(0,i.A)(()=>{g&&c(g)},[g]);return{selectedValue:a,selectValue:(0,s.useCallback)(e=>{if(!u({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);c(e),h(e),j(e)},[h,j,o]),tabValues:o}}var j=n(92303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=n(74848);function y({className:e,block:t,selectedValue:n,selectValue:s,tabValues:a}){const i=[],{blockElementScrollPositionUntilNextRender:c}=(0,o.a_)(),l=e=>{const t=e.currentTarget,r=i.indexOf(t),o=a[r].value;o!==n&&(c(t),s(o))},d=e=>{let t=null;switch(e.key){case"Enter":l(e);break;case"ArrowRight":{const n=i.indexOf(e.currentTarget)+1;t=i[n]??i[0];break}case"ArrowLeft":{const n=i.indexOf(e.currentTarget)-1;t=i[n]??i[i.length-1];break}}t?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.A)("tabs",{"tabs--block":t},e),children:a.map(({value:e,label:t,attributes:s})=>(0,f.jsx)("li",{role:"tab",tabIndex:n===e?0:-1,"aria-selected":n===e,ref:e=>{i.push(e)},onKeyDown:d,onClick:l,...s,className:(0,r.A)("tabs__item",g.tabItem,s?.className,{"tabs__item--active":n===e}),children:t??e},e))})}function b({lazy:e,children:t,selectedValue:n}){const o=(Array.isArray(t)?t:[t]).filter(Boolean);if(e){const e=o.find(e=>e.props.value===n);return e?(0,s.cloneElement)(e,{className:(0,r.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:o.map((e,t)=>(0,s.cloneElement)(e,{key:t,hidden:e.props.value!==n}))})}function D(e){const t=m(e);return(0,f.jsxs)("div",{className:(0,r.A)("tabs-container",g.tabList),children:[(0,f.jsx)(y,{...t,...e}),(0,f.jsx)(b,{...t,...e})]})}function v(e){const t=(0,j.A)();return(0,f.jsx)(D,{...e,children:h(e.children)},String(t))}},13533:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/component-dataframe-operations-031488ccf4e3d3378f8842f0ea10682c.png"},17886:(e,t,n)=>{n.d(t,{A:()=>o});n(96540);var s=n(64058),r=n(74848);function o({name:e,...t}){const n=s[e];return n?(0,r.jsx)(n,{...t}):null}},19365:(e,t,n)=>{n.d(t,{A:()=>a});n(96540);var s=n(18215);const r={tabItem:"tabItem_Ymn6"};var o=n(74848);function a({children:e,hidden:t,className:n}){return(0,o.jsx)("div",{role:"tabpanel",className:(0,s.A)(r.tabItem,n),hidden:t,children:e})}},31929:(e,t,n)=>{n.d(t,{Ay:()=>c,RM:()=>a});var s=n(74848),r=n(28453),o=n(17886);const a=[];function i(e){const t={a:"a",p:"p",strong:"strong",...(0,r.R)(),...e.components};return(0,s.jsxs)(t.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,s.jsx)(o.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,s.jsx)(t.strong,{children:"Controls"})," in the ",(0,s.jsx)(t.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function c(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(i,{...e})}):i(e)}},36813:(e,t,n)=>{n.d(t,{Ay:()=>c,RM:()=>a});var s=n(74848),r=n(28453),o=n(17886);const a=[];function i(e){const t={a:"a",p:"p",strong:"strong",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(t.p,{children:["Legacy components are longer supported and can be removed in a future release.\nYou can continue to use them in existing flows, but it is recommended that you replace them with supported components as soon as possible.\nSuggested replacements are included in the ",(0,s.jsx)(t.strong,{children:"Legacy"})," banner on components in your flows.\nThey are also given in release notes and Langflow documentation whenever possible."]}),"\n",(0,s.jsxs)(t.p,{children:["If you aren't sure how to replace a legacy component, ",(0,s.jsx)(o.A,{name:"Search","aria-hidden":"true"})," ",(0,s.jsx)(t.strong,{children:"Search"})," for components by provider, service, or component name.\nThe component may have been deprecated in favor of a completely new component, a similar component, or a new version of the same component in a different category."]}),"\n",(0,s.jsxs)(t.p,{children:["If there is no obvious replacement, consider whether another component can be adapted to your use case.\nFor example, many ",(0,s.jsx)(o.A,{name:"Component","aria-hidden":"true"})," ",(0,s.jsx)(t.strong,{children:"Core components"})," provide generic functionality that can support multiple providers and use cases, such as the ",(0,s.jsxs)(t.a,{href:"/components-data#api-request",children:[(0,s.jsx)(t.strong,{children:"API Request"})," component"]}),"."]}),"\n",(0,s.jsxs)(t.p,{children:["If neither of these options are viable, you could use the legacy component's code to create your own custom component, or ",(0,s.jsx)(t.a,{href:"/contributing-github-issues",children:"start a discussion"})," about the legacy component."]}),"\n",(0,s.jsxs)(t.p,{children:["To discourage use of legacy components in new flows, these components are hidden by default.\nIn the visual editor, you can click ",(0,s.jsx)(o.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,s.jsx)(t.strong,{children:"Component settings"})," to toggle the ",(0,s.jsx)(t.strong,{children:"Legacy"})," filter."]})]})}function c(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(i,{...e})}):i(e)}},40966:(e,t,n)=>{n.r(t),n.d(t,{CH:()=>j,assets:()=>m,chCodeConfig:()=>g,contentTitle:()=>x,default:()=>b,frontMatter:()=>u,metadata:()=>s,toc:()=>f});const s=JSON.parse('{"id":"Components/components-processing","title":"Processing components","description":"Processing components process and transform data within a flow.","source":"@site/docs/Components/components-processing.mdx","sourceDirName":"Components","slug":"/components-processing","permalink":"/components-processing","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Processing components","slug":"/components-processing"},"sidebar":"docs","previous":{"title":"Data","permalink":"/components-data"},"next":{"title":"Prompt Template","permalink":"/components-prompts"}}');var r=n(74848),o=n(28453),a=n(24754),i=n(17886),c=n(11470),l=n(19365),d=n(31929),h=n(72736),p=n(36813);const u={title:"Processing components",slug:"/components-processing"},x=void 0,m={},j={annotations:a.hk,Code:a.Cy},g={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},f=[{value:"Prompt Template",id:"prompt-template",level:2},{value:"Batch Run",id:"batch-run",level:2},{value:"Use the Batch Run component in a flow",id:"use-the-batch-run-component-in-a-flow",level:3},{value:"Batch Run parameters",id:"batch-run-parameters",level:3},...d.RM,{value:"Data Operations",id:"data-operations",level:2},{value:"Use the Data Operations component in a flow",id:"use-the-data-operations-component-in-a-flow",level:3},{value:"Data Operations parameters",id:"data-operations-parameters",level:3},{value:"Available data operations",id:"available-data-operations",level:4},{value:"DataFrame Operations",id:"dataframe-operations",level:2},{value:"Use the DataFrame Operations component in a flow",id:"use-the-dataframe-operations-component-in-a-flow",level:3},{value:"DataFrame Operations parameters",id:"dataframe-operations-parameters",level:3},{value:"LLM Router",id:"llm-router",level:2},{value:"LLM Router parameters",id:"llm-router-parameters",level:3},...d.RM,{value:"LLM Router outputs",id:"llm-router-outputs",level:3},{value:"Parser",id:"parser",level:2},{value:"Parsing modes",id:"parsing-modes",level:3},...h.RM,...d.RM,...d.RM,{value:"Test and troubleshoot parsed text",id:"test-and-troubleshoot-parsed-text",level:3},{value:"Python Interpreter",id:"python-interpreter",level:2},{value:"Use the Python Interpreter in a flow",id:"use-the-python-interpreter-in-a-flow",level:3},{value:"Python Interpreter parameters",id:"python-interpreter-parameters",level:3},{value:"Save File",id:"save-file",level:2},{value:"Smart Function",id:"smart-function",level:2},{value:"Smart Function parameters",id:"smart-function-parameters",level:3},...d.RM,{value:"Split Text",id:"split-text",level:2},{value:"Split Text parameters",id:"split-text-parameters",level:3},...d.RM,{value:"Tokenization errors due to chunk size",id:"chunk-size",level:3},{value:"Other text splitters",id:"other-text-splitters",level:3},{value:"Structured Output",id:"structured-output",level:2},{value:"Use the Structured Output component in a flow",id:"use-the-structured-output-component-in-a-flow",level:3},{value:"Structured Output parameters",id:"structured-output-parameters",level:3},...d.RM,{value:"Output Schema options",id:"output-schema-options",level:4},{value:"Type Convert",id:"type-convert",level:2},{value:"Use the Type Convert component in a flow",id:"use-the-type-convert-component-in-a-flow",level:3},{value:"Type Convert parameters",id:"type-convert-parameters",level:3},{value:"Legacy Processing components",id:"legacy-processing-components",level:2},...p.RM];function y(e){const t={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",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},{Details:s}=t;return j||D("CH",!1),j.Code||D("CH.Code",!0),s||D("Details",!0),(0,r.jsxs)(r.Fragment,{children:[(0,r.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","\n",(0,r.jsx)(t.p,{children:"Processing components process and transform data within a flow.\nThey have many uses, including:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["Feed instructions and context to your LLMs and agents with the ",(0,r.jsxs)(t.a,{href:"#prompt-template",children:[(0,r.jsx)(t.strong,{children:"Prompt Template"})," component"]}),"."]}),"\n",(0,r.jsxs)(t.li,{children:["Extract content from larger chunks of data with a ",(0,r.jsxs)(t.a,{href:"#parser",children:[(0,r.jsx)(t.strong,{children:"Parser"})," component"]}),"."]}),"\n",(0,r.jsxs)(t.li,{children:["Filter data with natural language with the ",(0,r.jsxs)(t.a,{href:"#smart-transform",children:[(0,r.jsx)(t.strong,{children:"Smart Function"})," component"]}),"."]}),"\n",(0,r.jsxs)(t.li,{children:["Save data to your local machine with the ",(0,r.jsxs)(t.a,{href:"#save-file",children:[(0,r.jsx)(t.strong,{children:"Save File"})," component"]}),"."]}),"\n",(0,r.jsxs)(t.li,{children:["Transform data into a different data type with the ",(0,r.jsxs)(t.a,{href:"#type-convert",children:[(0,r.jsx)(t.strong,{children:"Type Convert"})," component"]})," to pass it between incompatible components."]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"prompt-template",children:"Prompt Template"}),"\n",(0,r.jsxs)(t.p,{children:["See ",(0,r.jsxs)(t.a,{href:"/components-prompts",children:[(0,r.jsx)(t.strong,{children:"Prompt Template"})," component"]}),"."]}),"\n",(0,r.jsx)(t.h2,{id:"batch-run",children:"Batch Run"}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Batch Run"})," component runs a language model over ",(0,r.jsx)(t.em,{children:"each row of one text column"})," in a ",(0,r.jsx)(t.a,{href:"/data-types#dataframe",children:(0,r.jsx)(t.code,{children:"DataFrame"})}),", and then returns a new ",(0,r.jsx)(t.code,{children:"DataFrame"})," with the original text and an LLM response.\nThe output contains the following columns:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:"text_input"}),": The original text from the input ",(0,r.jsx)(t.code,{children:"DataFrame"})]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:"model_response"}),": The model's response for each input"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:"batch_index"}),": The 0-indexed processing order for all rows in the ",(0,r.jsx)(t.code,{children:"DataFrame"})]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:"metadata"})," (optional): Additional information about the processing"]}),"\n"]}),"\n",(0,r.jsx)(t.h3,{id:"use-the-batch-run-component-in-a-flow",children:"Use the Batch Run component in a flow"}),"\n",(0,r.jsxs)(t.p,{children:["If you pass the ",(0,r.jsx)(t.strong,{children:"Batch Run"})," output to a ",(0,r.jsxs)(t.a,{href:"/components-processing#parser",children:[(0,r.jsx)(t.strong,{children:"Parser"})," component"]}),", you can use variables in the parsing template to reference these keys, such as ",(0,r.jsx)(t.code,{children:"{text_input}"})," and ",(0,r.jsx)(t.code,{children:"{model_response}"}),".\nThis is demonstrated in the following example."]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"A batch run component connected to OpenAI and a Parser",src:n(88103).A+"",width:"4000",height:"2728"})}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Connect any language model component to a ",(0,r.jsx)(t.strong,{children:"Batch Run"})," component's ",(0,r.jsx)(t.strong,{children:"Language model"})," port."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Connect ",(0,r.jsx)(t.code,{children:"DataFrame"})," output from another component to the ",(0,r.jsx)(t.strong,{children:"Batch Run"})," component's ",(0,r.jsx)(t.strong,{children:"DataFrame"})," input.\nFor example, you could connect a ",(0,r.jsx)(t.strong,{children:"File"})," component with a CSV file."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In the ",(0,r.jsx)(t.strong,{children:"Batch Run"})," component's ",(0,r.jsx)(t.strong,{children:"Column Name"})," field, enter the name of the column in the incoming ",(0,r.jsx)(t.code,{children:"DataFrame"})," that contains the text to process.\nFor example, if you want to extract text from a ",(0,r.jsx)(t.code,{children:"name"})," column in a CSV file, enter ",(0,r.jsx)(t.code,{children:"name"})," in the ",(0,r.jsx)(t.strong,{children:"Column Name"})," field."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Connect the ",(0,r.jsx)(t.strong,{children:"Batch Run"})," component's ",(0,r.jsx)(t.strong,{children:"Batch Results"})," output to a ",(0,r.jsx)(t.strong,{children:"Parser"})," component's ",(0,r.jsx)(t.strong,{children:"DataFrame"})," input."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Optional: In the ",(0,r.jsx)(t.strong,{children:"Batch Run"})," ",(0,r.jsx)(t.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),", click ",(0,r.jsx)(i.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Controls"}),", enable the ",(0,r.jsx)(t.strong,{children:"System Message"})," parameter, click ",(0,r.jsx)(t.strong,{children:"Close"}),", and then enter an instruction for how you want the LLM to process each cell extracted from the file.\nFor example, ",(0,r.jsx)(t.code,{children:"Create a business card for each name."})]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In the ",(0,r.jsx)(t.strong,{children:"Parser"})," component's ",(0,r.jsx)(t.strong,{children:"Template"})," field, enter a template for processing the ",(0,r.jsx)(t.strong,{children:"Batch Run"})," component's new ",(0,r.jsx)(t.code,{children:"DataFrame"})," columns (",(0,r.jsx)(t.code,{children:"text_input"}),", ",(0,r.jsx)(t.code,{children:"model_response"}),", and ",(0,r.jsx)(t.code,{children:"batch_index"}),"):"]}),"\n",(0,r.jsxs)(t.p,{children:["For example, this template uses three columns from the resulting, post-batch ",(0,r.jsx)(t.code,{children:"DataFrame"}),":"]}),"\n",(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"record_number: {batch_index}, name: {text_input}, summary: {model_response}",props:{}}]}],lang:"text"},annotations:[]}]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["To test the processing, click the ",(0,r.jsx)(t.strong,{children:"Parser"})," component, click ",(0,r.jsx)(i.A,{name:"Play","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Run component"}),", and then click ",(0,r.jsx)(i.A,{name:"TextSearch","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Inspect output"})," to view the final ",(0,r.jsx)(t.code,{children:"DataFrame"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["You can also connect a ",(0,r.jsx)(t.strong,{children:"Chat Output"})," component to the ",(0,r.jsx)(t.strong,{children:"Parser"})," component if you want to see the output in the ",(0,r.jsx)(t.strong,{children:"Playground"}),"."]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.h3,{id:"batch-run-parameters",children:"Batch Run parameters"}),"\n",(0,r.jsx)(d.Ay,{}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Name"}),(0,r.jsx)(t.th,{children:"Type"}),(0,r.jsx)(t.th,{children:"Description"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"model"}),(0,r.jsx)(t.td,{children:"HandleInput"}),(0,r.jsx)(t.td,{children:"Input parameter. Connect the 'Language Model' output from a language model component. Required."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"system_message"}),(0,r.jsx)(t.td,{children:"MultilineInput"}),(0,r.jsx)(t.td,{children:"Input parameter. A multi-line system instruction for all rows in the DataFrame."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"df"}),(0,r.jsx)(t.td,{children:"DataFrameInput"}),(0,r.jsx)(t.td,{children:"Input parameter. The DataFrame whose column is treated as text messages, as specified by 'column_name'. Required."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"column_name"}),(0,r.jsx)(t.td,{children:"MessageTextInput"}),(0,r.jsx)(t.td,{children:"Input parameter. The name of the DataFrame column to treat as text messages. If empty, all columns are formatted in TOML."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"output_column_name"}),(0,r.jsx)(t.td,{children:"MessageTextInput"}),(0,r.jsxs)(t.td,{children:["Input parameter. Name of the column where the model's response is stored. Default=",(0,r.jsx)(t.code,{children:"model_response"}),"."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"enable_metadata"}),(0,r.jsx)(t.td,{children:"BoolInput"}),(0,r.jsxs)(t.td,{children:["Input parameter. If ",(0,r.jsx)(t.code,{children:"True"}),", add metadata to the output DataFrame."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"batch_results"}),(0,r.jsx)(t.td,{children:"DataFrame"}),(0,r.jsx)(t.td,{children:"Output parameter. A DataFrame with all original columns plus the model's response column."})]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"data-operations",children:"Data Operations"}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Data Operations"})," component performs operations on ",(0,r.jsx)(t.a,{href:"/data-types#data",children:(0,r.jsx)(t.code,{children:"Data"})})," objects, including extracting, filtering, and editing keys and values in the ",(0,r.jsx)(t.code,{children:"Data"}),".\nFor all options, see ",(0,r.jsx)(t.a,{href:"#available-data-operations",children:"Available data operations"}),".\nThe output is a new ",(0,r.jsx)(t.code,{children:"Data"})," object containing the modified data after running the selected operation."]}),"\n",(0,r.jsx)(t.h3,{id:"use-the-data-operations-component-in-a-flow",children:"Use the Data Operations component in a flow"}),"\n",(0,r.jsxs)(t.p,{children:["The following example demonstrates how to use a ",(0,r.jsx)(t.strong,{children:"Data Operations"})," component in a flow using data from a webhook payload:"]}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Create a flow with a ",(0,r.jsx)(t.strong,{children:"Webhook"})," component and a ",(0,r.jsx)(t.strong,{children:"Data Operations"})," component, and then connect the ",(0,r.jsx)(t.strong,{children:"Webhook"})," component's output to the ",(0,r.jsx)(t.strong,{children:"Data Operations"})," component's ",(0,r.jsx)(t.strong,{children:"Data"})," input."]}),"\n",(0,r.jsxs)(t.p,{children:["All operations in the ",(0,r.jsx)(t.strong,{children:"Data Operations"})," component require at least one ",(0,r.jsx)(t.code,{children:"Data"})," input from another component.\nIf the preceding component doesn't produce ",(0,r.jsx)(t.code,{children:"Data"})," output, you can use another component, such as the ",(0,r.jsx)(t.strong,{children:"Type Convert"})," component, to reformat the data before passing it to the ",(0,r.jsx)(t.strong,{children:"Data Operations"})," component.\nAlternatively, you could consider using a component that is designed to process the original data type, such as the ",(0,r.jsx)(t.strong,{children:"Parser"})," or ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," components."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In the ",(0,r.jsx)(t.strong,{children:"Operations"})," field, select the operation you want to perform on the incoming ",(0,r.jsx)(t.code,{children:"Data"}),".\nFor this example, select the ",(0,r.jsx)(t.strong,{children:"Select Keys"})," operation."]}),"\n",(0,r.jsx)(t.admonition,{type:"tip",children:(0,r.jsxs)(t.p,{children:["You can select only one operation.\nIf you need to perform multiple operations on the data, you can chain multiple ",(0,r.jsx)(t.strong,{children:"Data Operations"})," components together to execute each operation in sequence.\nFor more complex multi-step operations, consider using a component like the ",(0,r.jsx)(t.strong,{children:"Smart Function"})," component."]})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Under ",(0,r.jsx)(t.strong,{children:"Select Keys"}),", add keys for ",(0,r.jsx)(t.code,{children:"name"}),", ",(0,r.jsx)(t.code,{children:"username"}),", and ",(0,r.jsx)(t.code,{children:"email"}),".\nClick ",(0,r.jsx)(i.A,{name:"Plus","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Add more"})," to add a field for each key."]}),"\n",(0,r.jsxs)(t.p,{children:["For this example, assume that the webhook will receive consistent payloads that always contain ",(0,r.jsx)(t.code,{children:"name"}),", ",(0,r.jsx)(t.code,{children:"username"}),", and ",(0,r.jsx)(t.code,{children:"email"})," keys.\nThe ",(0,r.jsx)(t.strong,{children:"Select Keys"})," operation extracts the value of these keys from each incoming payload."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Optional: If you want to view the output in the ",(0,r.jsx)(t.strong,{children:"Playground"}),", connect the ",(0,r.jsx)(t.strong,{children:"Data Operations"})," component's output to a ",(0,r.jsx)(t.strong,{children:"Chat Output"})," component."]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"A flow with Webhook, Data Operations, and Chat Output components",src:n(46445).A+"",width:"4000",height:"1920"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["To test the flow, send the following request to your flow's webhook endpoint.\nFor more information about the webhook endpoint, see ",(0,r.jsx)(t.a,{href:"/webhook",children:"Trigger flows with webhooks"}),"."]}),"\n",(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"curl ",props:{style:{color:"#FFA657"}}},{content:"-X ",props:{style:{color:"#79C0FF"}}},{content:'POST "http://',props:{style:{color:"#A5D6FF"}}},{content:"$LANGFLOW_SERVER_URL",props:{style:{color:"#C9D1D9"}}},{content:"/api/v1/webhook/",props:{style:{color:"#A5D6FF"}}},{content:"$FLOW_ID",props:{style:{color:"#C9D1D9"}}},{content:'" ',props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:"-H ",props:{style:{color:"#C9D1D9"}}},{content:'"Content-Type: application/json" ',props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:"-H ",props:{style:{color:"#C9D1D9"}}},{content:'"x-api-key: ',props:{style:{color:"#A5D6FF"}}},{content:"$LANGFLOW_API_KEY",props:{style:{color:"#C9D1D9"}}},{content:'" ',props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:"-d ",props:{style:{color:"#C9D1D9"}}},{content:"'{",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "id": 1,',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "name": "Leanne Graham",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "username": "Bret",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "email": "Sincere@april.biz",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "address": {',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "street": "Main Street",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "suite": "Apt. 556",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "city": "Springfield",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "zipcode": "92998-3874",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "geo": {',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "lat": "-37.3159",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "lng": "81.1496"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" }",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" },",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "phone": "1-770-736-8031 x56442",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "website": "hildegard.org",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "company": {',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "name": "Acme-Corp",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "catchPhrase": "Multi-layered client-server neural-net",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "bs": "harness real-time e-markets"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" }",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"}'",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["To view the ",(0,r.jsx)(t.code,{children:"Data"})," resulting from the ",(0,r.jsx)(t.strong,{children:"Select Keys"})," operation, do one of the following:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["If you attached a ",(0,r.jsx)(t.strong,{children:"Chat Output"})," component, open the ",(0,r.jsx)(t.strong,{children:"Playground"})," to see the result as a chat message."]}),"\n",(0,r.jsxs)(t.li,{children:["Click ",(0,r.jsx)(i.A,{name:"TextSearch","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Inspect output"})," on the ",(0,r.jsx)(t.strong,{children:"Data Operations"})," component."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.h3,{id:"data-operations-parameters",children:"Data Operations parameters"}),"\n",(0,r.jsxs)(t.p,{children:["Many parameters are conditional based on the selected ",(0,r.jsx)(t.strong,{children:"Operation"})," (",(0,r.jsx)(t.code,{children:"operation"}),")."]}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Name"}),(0,r.jsx)(t.th,{children:"Display Name"}),(0,r.jsx)(t.th,{children:"Info"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"data"}),(0,r.jsx)(t.td,{children:"Data"}),(0,r.jsxs)(t.td,{children:["Input parameter. The ",(0,r.jsx)(t.code,{children:"Data"})," object to operate on."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"operation"}),(0,r.jsx)(t.td,{children:"Operation"}),(0,r.jsxs)(t.td,{children:["Input parameter. The operation to perform on the data. See ",(0,r.jsx)(t.a,{href:"#available-data-operations",children:"Available data operations"})]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"select_keys_input"}),(0,r.jsx)(t.td,{children:"Select Keys"}),(0,r.jsx)(t.td,{children:"Input parameter. A list of keys to select from the data."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"filter_key"}),(0,r.jsx)(t.td,{children:"Filter Key"}),(0,r.jsx)(t.td,{children:"Input parameter. The key to filter by."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"operator"}),(0,r.jsx)(t.td,{children:"Comparison Operator"}),(0,r.jsx)(t.td,{children:"Input parameter. The operator to apply for comparing values."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"filter_values"}),(0,r.jsx)(t.td,{children:"Filter Values"}),(0,r.jsx)(t.td,{children:"Input parameter. A list of values to filter by."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"append_update_data"}),(0,r.jsx)(t.td,{children:"Append or Update"}),(0,r.jsx)(t.td,{children:"Input parameter. The data to append or update the existing data with."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"remove_keys_input"}),(0,r.jsx)(t.td,{children:"Remove Keys"}),(0,r.jsx)(t.td,{children:"Input parameter. A list of keys to remove from the data."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"rename_keys_input"}),(0,r.jsx)(t.td,{children:"Rename Keys"}),(0,r.jsx)(t.td,{children:"Input parameter. A list of keys to rename in the data."})]})]})]}),"\n",(0,r.jsx)(t.h4,{id:"available-data-operations",children:"Available data operations"}),"\n",(0,r.jsxs)(t.p,{children:["Options for the ",(0,r.jsx)(t.code,{children:"operations"})," input parameter are as follows.\nAll operations act on an incoming ",(0,r.jsx)(t.code,{children:"Data"})," object."]}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Name"}),(0,r.jsx)(t.th,{children:"Required Inputs"}),(0,r.jsx)(t.th,{children:"Process"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Select Keys"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"select_keys_input"})}),(0,r.jsx)(t.td,{children:"Selects specific keys from the data."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Literal Eval"}),(0,r.jsx)(t.td,{children:"None"}),(0,r.jsx)(t.td,{children:"Evaluates string values as Python literals."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Combine"}),(0,r.jsx)(t.td,{children:"None"}),(0,r.jsx)(t.td,{children:"Combines multiple data objects into one."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Filter Values"}),(0,r.jsxs)(t.td,{children:[(0,r.jsx)(t.code,{children:"filter_key"}),", ",(0,r.jsx)(t.code,{children:"filter_values"}),", ",(0,r.jsx)(t.code,{children:"operator"})]}),(0,r.jsx)(t.td,{children:"Filters data based on key-value pair."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Append or Update"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"append_update_data"})}),(0,r.jsx)(t.td,{children:"Adds or updates key-value pairs."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Remove Keys"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"remove_keys_input"})}),(0,r.jsx)(t.td,{children:"Removes specified keys from the data."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Rename Keys"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"rename_keys_input"})}),(0,r.jsx)(t.td,{children:"Renames keys in the data."})]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"dataframe-operations",children:"DataFrame Operations"}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," component performs operations on ",(0,r.jsx)(t.a,{href:"/data-types#dataframe",children:(0,r.jsx)(t.code,{children:"DataFrame"})})," (table) rows and columns, including schema changes, record changes, sorting, and filtering.\nFor all options, see ",(0,r.jsx)(t.a,{href:"#dataframe-operations-parameters",children:"DataFrame Operations parameters"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["The output is a new ",(0,r.jsx)(t.code,{children:"DataFrame"})," containing the modified data after running the selected operation."]}),"\n",(0,r.jsx)(t.h3,{id:"use-the-dataframe-operations-component-in-a-flow",children:"Use the DataFrame Operations component in a flow"}),"\n",(0,r.jsxs)(t.p,{children:["The following steps explain how to configure a ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," component in a flow.\nYou can follow along with an example or use your own flow.\nThe only requirement is that the preceding component must create ",(0,r.jsx)(t.code,{children:"DataFrame"})," output that you can pass to the ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," component."]}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Create a new flow or use an existing flow."}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Example: API response extraction flow"}),(0,r.jsxs)(t.p,{children:["The following example flow uses five components to extract ",(0,r.jsx)(t.code,{children:"Data"})," from an API response, transform it to a ",(0,r.jsx)(t.code,{children:"DataFrame"}),", and then perform further processing on the tabular data using a ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," component.\nThe sixth component, ",(0,r.jsx)(t.strong,{children:"Chat Output"}),", is optional in this example.\nIt only serves as a convenient way for you to view the final output in the ",(0,r.jsx)(t.strong,{children:"Playground"}),", rather than inspecting the component logs."]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"A flow that ingests an API response, extracts it to a DataFrame with a Smart Function component, and the processes it through a DataFrame Operations component",src:n(13533).A+"",width:"4000",height:"2120"})}),(0,r.jsxs)(t.p,{children:["If you want to use this example to test the ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," component, do the following:"]}),(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Create a flow with the following components:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.strong,{children:"API Request"})}),"\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.strong,{children:"Language Model"})}),"\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.strong,{children:"Smart Function"})}),"\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.strong,{children:"Type Convert"})}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Configure the ",(0,r.jsxs)(t.a,{href:"#smart-transform",children:[(0,r.jsx)(t.strong,{children:"Smart Function"})," component"]})," and its dependencies:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"API Request"}),": Configure the ",(0,r.jsxs)(t.a,{href:"/components-data#api-request",children:[(0,r.jsx)(t.strong,{children:"API Request"})," component"]})," to get JSON data from an endpoint of your choice, and then connect the ",(0,r.jsx)(t.strong,{children:"API Response"})," output to the ",(0,r.jsx)(t.strong,{children:"Smart Function"})," component's ",(0,r.jsx)(t.strong,{children:"Data"})," input."]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Language Model"}),": Select your preferred provider and model, and then enter a valid API key.\nChange the output to ",(0,r.jsx)(t.strong,{children:"Language Model"}),", and then connect the ",(0,r.jsx)(t.code,{children:"LanguageModel"})," output to the ",(0,r.jsx)(t.strong,{children:"Smart Function"})," component's ",(0,r.jsx)(t.strong,{children:"Language Model"})," input."]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Smart Function"}),": In the ",(0,r.jsx)(t.strong,{children:"Instructions"})," field, enter natural language instructions to extract data from the API response.\nYour instructions depend on the response content and desired outcome.\nFor example, if the response contains a large ",(0,r.jsx)(t.code,{children:"result"})," field, you might provide instructions like ",(0,r.jsx)(t.code,{children:"explode the result field out into a Data object"}),"."]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Convert the ",(0,r.jsx)(t.strong,{children:"Smart Function"})," component's ",(0,r.jsx)(t.code,{children:"Data"})," output to ",(0,r.jsx)(t.code,{children:"DataFrame"}),":"]}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["Connect the ",(0,r.jsx)(t.strong,{children:"Filtered Data"})," output to the ",(0,r.jsx)(t.strong,{children:"Type Convert"})," component's ",(0,r.jsx)(t.strong,{children:"Data"})," input."]}),"\n",(0,r.jsxs)(t.li,{children:["Set the ",(0,r.jsx)(t.strong,{children:"Type Convert"})," component's ",(0,r.jsx)(t.strong,{children:"Output Type"})," to ",(0,r.jsx)(t.strong,{children:"DataFrame"}),"."]}),"\n"]}),"\n"]}),"\n"]}),(0,r.jsxs)(t.p,{children:["Now the flow is ready for you to add the ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," component."]})]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Add a ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," component to the flow, and then connect ",(0,r.jsx)(t.code,{children:"DataFrame"})," output from another component to the ",(0,r.jsx)(t.strong,{children:"DataFrame"})," input."]}),"\n",(0,r.jsxs)(t.p,{children:["All operations in the ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," component require at least one ",(0,r.jsx)(t.code,{children:"DataFrame"})," input from another component.\nIf a component doesn't produce ",(0,r.jsx)(t.code,{children:"DataFrame"})," output, you can use another component, such as the ",(0,r.jsx)(t.strong,{children:"Type Convert"})," component, to reformat the data before passing it to the ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," component.\nAlternatively, you could consider using a component that is designed to process the original data type, such as the ",(0,r.jsx)(t.strong,{children:"Parser"})," or ",(0,r.jsx)(t.strong,{children:"Data Operations"})," components."]}),"\n",(0,r.jsxs)(t.p,{children:["If you are following along with the example flow, connect the ",(0,r.jsx)(t.strong,{children:"Type Convert"})," component's ",(0,r.jsx)(t.strong,{children:"DataFrame Output"})," port to the ",(0,r.jsx)(t.strong,{children:"DataFrame"})," input."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In the ",(0,r.jsx)(t.strong,{children:"Operations"})," field, select the operation you want to perform on the incoming ",(0,r.jsx)(t.code,{children:"DataFrame"}),".\nFor example, the ",(0,r.jsx)(t.strong,{children:"Filter"})," operation filters the rows based on a specified column and value."]}),"\n",(0,r.jsx)(t.admonition,{type:"tip",children:(0,r.jsxs)(t.p,{children:["You can select only one operation.\nIf you need to perform multiple operations on the data, you can chain multiple ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," components together to execute each operation in sequence.\nFor more complex multi-step operations, like dramatic schema changes or pivots, consider using an LLM-powered component, like the ",(0,r.jsx)(t.strong,{children:"Structured Output"})," or ",(0,r.jsx)(t.strong,{children:"Smart Function"})," component, as a replacement or preparation for the ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," component."]})}),"\n",(0,r.jsxs)(t.p,{children:["If you're following along with the example flow, select any operation that you want to apply to the data that was extracted by the ",(0,r.jsx)(t.strong,{children:"Smart Function"})," component.\nTo view the contents of the incoming ",(0,r.jsx)(t.code,{children:"DataFrame"}),", click ",(0,r.jsx)(i.A,{name:"Play","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Run component"})," on the ",(0,r.jsx)(t.strong,{children:"Type Convert"})," component, and then ",(0,r.jsx)(i.A,{name:"TextSearch","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Inspect output"}),".\nIf the ",(0,r.jsx)(t.code,{children:"DataFrame"})," seems malformed, click ",(0,r.jsx)(i.A,{name:"TextSearch","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Inspect output"})," on each upstream component to determine where the error occurs, and then modify your flow's configuration as needed.\nFor example, if the ",(0,r.jsx)(t.strong,{children:"Smart Function"})," component didn't extract the expected fields, modify your instructions or verify that the given fields are present in the ",(0,r.jsx)(t.strong,{children:"API Response"})," output."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Configure the operation's parameters.\nThe specific parameters depend on the selected operation.\nFor example, if you select the ",(0,r.jsx)(t.strong,{children:"Filter"})," operation, you must define a filter condition using the ",(0,r.jsx)(t.strong,{children:"Column Name"}),", ",(0,r.jsx)(t.strong,{children:"Filter Value"}),", and ",(0,r.jsx)(t.strong,{children:"Filter Operator"})," parameters.\nFor more information, see ",(0,r.jsx)(t.a,{href:"#dataframe-operations-parameters",children:"DataFrame Operations parameters"})]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["To test the flow, click ",(0,r.jsx)(i.A,{name:"Play","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Run component"})," on the ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," component, and then click ",(0,r.jsx)(i.A,{name:"TextSearch","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Inspect output"})," to view the new ",(0,r.jsx)(t.code,{children:"DataFrame"})," created from the ",(0,r.jsx)(t.strong,{children:"Filter"})," operation."]}),"\n",(0,r.jsxs)(t.p,{children:["If you want to view the output in the ",(0,r.jsx)(t.strong,{children:"Playground"}),", connect the ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," component's output to a ",(0,r.jsx)(t.strong,{children:"Chat Output"})," component, rerun the ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," component, and then click ",(0,r.jsx)(t.strong,{children:"Playground"}),"."]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.p,{children:["For another example, see ",(0,r.jsx)(t.a,{href:"/components-logic#conditional-looping",children:"Conditional looping"}),"."]}),"\n",(0,r.jsx)(t.h3,{id:"dataframe-operations-parameters",children:"DataFrame Operations parameters"}),"\n",(0,r.jsxs)(t.p,{children:["Most ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," parameters are conditional because they only apply to specific operations."]}),"\n",(0,r.jsxs)(t.p,{children:["The only permanent parameters are ",(0,r.jsx)(t.strong,{children:"DataFrame"})," (",(0,r.jsx)(t.code,{children:"df"}),"), which is the ",(0,r.jsx)(t.code,{children:"DataFrame"})," input, and ",(0,r.jsx)(t.strong,{children:"Operation"})," (",(0,r.jsx)(t.code,{children:"operation"}),"), which is the operation to perform on the ",(0,r.jsx)(t.code,{children:"DataFrame"}),".\nOnce you select an operation, the conditional parameters for that operation appear on the ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," component."]}),"\n",(0,r.jsxs)(c.A,{children:[(0,r.jsxs)(l.A,{value:"addcolumn",label:"Add Column",default:!0,children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Add Column"})," operation allows you to add a new column to the ",(0,r.jsx)(t.code,{children:"DataFrame"})," with a constant value."]}),(0,r.jsxs)(t.p,{children:["The parameters are ",(0,r.jsx)(t.strong,{children:"New Column Name"})," (",(0,r.jsx)(t.code,{children:"new_column_name"}),") and ",(0,r.jsx)(t.strong,{children:"New Column Value"})," (",(0,r.jsx)(t.code,{children:"new_column_value"}),")."]})]}),(0,r.jsx)(l.A,{value:"dropcolumn",label:"Drop Column",children:(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Drop Column"})," operation allows you to remove a column from the ",(0,r.jsx)(t.code,{children:"DataFrame"}),", specified by ",(0,r.jsx)(t.strong,{children:"Column Name"})," (",(0,r.jsx)(t.code,{children:"column_name"}),")."]})}),(0,r.jsxs)(l.A,{value:"filter",label:"Filter",children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Filter"})," operation allows you to filter the ",(0,r.jsx)(t.code,{children:"DataFrame"})," based on a specified condition.\nThe output is a ",(0,r.jsx)(t.code,{children:"DataFrame"})," containing only the rows that matched the filter condition."]}),(0,r.jsx)(t.p,{children:"Provide the following parameters:"}),(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Column Name"})," (",(0,r.jsx)(t.code,{children:"column_name"}),"): The name of the column to filter on."]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Filter Value"})," (",(0,r.jsx)(t.code,{children:"filter_value"}),"): The value to filter on."]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Filter Operator"})," (",(0,r.jsx)(t.code,{children:"filter_operator"}),"): The operator to use for filtering, one of ",(0,r.jsx)(t.code,{children:"equals"})," (default), ",(0,r.jsx)(t.code,{children:"not equals"}),", ",(0,r.jsx)(t.code,{children:"contains"}),", ",(0,r.jsx)(t.code,{children:"starts with"}),", ",(0,r.jsx)(t.code,{children:"ends with"}),", ",(0,r.jsx)(t.code,{children:"greater than"}),", or ",(0,r.jsx)(t.code,{children:"less than"}),"."]}),"\n"]})]}),(0,r.jsxs)(l.A,{value:"head",label:"Head",children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Head"})," operation allows you to retrieve the first ",(0,r.jsx)(t.code,{children:"n"})," rows of the ",(0,r.jsx)(t.code,{children:"DataFrame"}),", where ",(0,r.jsx)(t.code,{children:"n"})," is set in ",(0,r.jsx)(t.strong,{children:"Number of Rows"})," (",(0,r.jsx)(t.code,{children:"num_rows"}),").\nThe default is ",(0,r.jsx)(t.code,{children:"5"}),"."]}),(0,r.jsxs)(t.p,{children:["The output is a ",(0,r.jsx)(t.code,{children:"DataFrame"})," containing only the selected rows."]})]}),(0,r.jsxs)(l.A,{value:"renamecolumn",label:"Rename Column",children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Rename Column"})," operation allows you to rename an existing column in the ",(0,r.jsx)(t.code,{children:"DataFrame"}),"."]}),(0,r.jsxs)(t.p,{children:["The parameters are ",(0,r.jsx)(t.strong,{children:"Column Name"})," (",(0,r.jsx)(t.code,{children:"column_name"}),"), which is the current name, and ",(0,r.jsx)(t.strong,{children:"New Column Name"})," (",(0,r.jsx)(t.code,{children:"new_column_name"}),")."]})]}),(0,r.jsxs)(l.A,{value:"replacevalue",label:"Replace Value",children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Replace Value"})," operation allows you to replace values in a specific column of the ",(0,r.jsx)(t.code,{children:"DataFrame"}),".\nThis operation replaces a target value with a new value.\nAll cells matching the target value are replaced with the new value in the new ",(0,r.jsx)(t.code,{children:"DataFrame"})," output."]}),(0,r.jsx)(t.p,{children:"Provide the following parameters:"}),(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Column Name"})," (",(0,r.jsx)(t.code,{children:"column_name"}),"): The name of the column to modify."]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Value to Replace"})," (",(0,r.jsx)(t.code,{children:"replace_value"}),"): The value that you want to replace."]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Replacement Value"})," (",(0,r.jsx)(t.code,{children:"replacement_value"}),"): The new value to use."]}),"\n"]})]}),(0,r.jsxs)(l.A,{value:"selectcolumns",label:"Select Columns",children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Select Columns"})," operation allows you to select one or more specific columns from the ",(0,r.jsx)(t.code,{children:"DataFrame"}),"."]}),(0,r.jsxs)(t.p,{children:["Provide a list of column names in ",(0,r.jsx)(t.strong,{children:"Columns to Select"})," (",(0,r.jsx)(t.code,{children:"columns_to_select"}),").\nIn the visual editor, click ",(0,r.jsx)(i.A,{name:"Plus","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Add More"})," to add multiple fields, and then enter one column name in each field."]}),(0,r.jsxs)(t.p,{children:["The output is a ",(0,r.jsx)(t.code,{children:"DataFrame"})," containing only the specified columns."]})]}),(0,r.jsxs)(l.A,{value:"sort",label:"Sort",children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Sort"})," operation allows you to sort the ",(0,r.jsx)(t.code,{children:"DataFrame"})," on a specific column in ascending or descending order."]}),(0,r.jsx)(t.p,{children:"Provide the following parameters:"}),(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Column Name"})," (",(0,r.jsx)(t.code,{children:"column_name"}),"): The name of the column to sort on."]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Sort Ascending"})," (",(0,r.jsx)(t.code,{children:"ascending"}),"): Whether to sort in ascending or descending order. If enabled (",(0,r.jsx)(t.code,{children:"true"}),"), sorts in ascending order; if disabled (",(0,r.jsx)(t.code,{children:"false"}),"), sorts in descending order. Default: Enabled (",(0,r.jsx)(t.code,{children:"true"}),")"]}),"\n"]})]}),(0,r.jsxs)(l.A,{value:"tail",label:"Tail",children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Tail"})," operation allows you to retrieve the last ",(0,r.jsx)(t.code,{children:"n"})," rows of the ",(0,r.jsx)(t.code,{children:"DataFrame"}),", where ",(0,r.jsx)(t.code,{children:"n"})," is set in ",(0,r.jsx)(t.strong,{children:"Number of Rows"})," (",(0,r.jsx)(t.code,{children:"num_rows"}),").\nThe default is ",(0,r.jsx)(t.code,{children:"5"}),"."]}),(0,r.jsxs)(t.p,{children:["The output is a ",(0,r.jsx)(t.code,{children:"DataFrame"})," containing only the selected rows."]})]}),(0,r.jsxs)(l.A,{value:"dropduplicates",label:"Drop Duplicates",children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Drop Duplicates"})," operation removes rows from the ",(0,r.jsx)(t.code,{children:"DataFrame"})," by identifying all duplicate values within a single column."]}),(0,r.jsxs)(t.p,{children:["The only parameter is the ",(0,r.jsx)(t.strong,{children:"Column Name"})," (",(0,r.jsx)(t.code,{children:"column_name"}),")."]}),(0,r.jsxs)(t.p,{children:["When the flow runs, all rows with duplicate values in the given column are removed.\nThe output is a ",(0,r.jsx)(t.code,{children:"DataFrame"})," containing all columns from the original ",(0,r.jsx)(t.code,{children:"DataFrame"}),", but only rows with non-duplicate values."]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"llm-router",children:"LLM Router"}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"LLM Router"})," component routes requests to the most appropriate LLM based on ",(0,r.jsx)(t.a,{href:"https://openrouter.ai/docs/quickstart",children:"OpenRouter"})," model specifications."]}),"\n",(0,r.jsxs)(t.p,{children:["To use the component in a flow, you connect multiple language model components to the ",(0,r.jsx)(t.strong,{children:"LLM Router"})," components.\nOne model is the judge LLM that analyzes input messages to understand the evaluation context, selects the most appropriate model from the other attached LLMs, and then routes the input to the selected model.\nThe selected model processes the input, and then returns the generated response."]}),"\n",(0,r.jsx)(t.p,{children:"The following example flow has three language model components.\nOne is the judge LLM, and the other two are in the LLM pool for request routing.\nThe input and output components create a seamless chat interaction where you send a message and receive a response without any user awareness of the underlying routing."}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"LLM Router component",src:n(9898).A+"",width:"3316",height:"2492"})}),"\n",(0,r.jsx)(t.h3,{id:"llm-router-parameters",children:"LLM Router parameters"}),"\n",(0,r.jsx)(d.Ay,{}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Name"}),(0,r.jsx)(t.th,{children:"Display Name"}),(0,r.jsx)(t.th,{children:"Info"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"models"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Language Models"})}),(0,r.jsxs)(t.td,{children:["Input parameter. Connect ",(0,r.jsx)(t.a,{href:"/data-types#languagemodel",children:(0,r.jsx)(t.code,{children:"LanguageModel"})})," output from multiple ",(0,r.jsx)(t.a,{href:"/components-models",children:"language model components"})," to create a pool of models. The ",(0,r.jsx)(t.code,{children:"judge_llm"})," selects models from this pool when routing requests. The first model you connect is the default model if there is a problem with model selection or routing."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"input_value"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Input"})}),(0,r.jsx)(t.td,{children:"Input parameter. The incoming query to be routed to the model selected by the judge LLM."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"judge_llm"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Judge LLM"})}),(0,r.jsxs)(t.td,{children:["Input parameter. Connect ",(0,r.jsx)(t.code,{children:"LanguageModel"})," output from ",(0,r.jsx)(t.em,{children:"one"})," ",(0,r.jsx)(t.strong,{children:"Language Model"})," component to serve as the judge LLM for request routing."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"optimization"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Optimization"})}),(0,r.jsxs)(t.td,{children:["Input parameter. Set a preferred characteristic for model selection by the judge LLM. The options are ",(0,r.jsx)(t.code,{children:"quality"})," (highest response quality), ",(0,r.jsx)(t.code,{children:"speed"})," (fastest response time), ",(0,r.jsx)(t.code,{children:"cost"})," (most cost-effective model), or ",(0,r.jsx)(t.code,{children:"balanced"})," (equal weight for quality, speed, and cost). Default: ",(0,r.jsx)(t.code,{children:"balanced"})]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"use_openrouter_specs"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Use OpenRouter Specs"})}),(0,r.jsx)(t.td,{children:"Input parameter. Whether to fetch model specifications from the OpenRouter API."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsxs)(t.td,{children:["If ",(0,r.jsx)(t.code,{children:"false"}),", only the model name is provided to the judge LLM. Default: Enabled (",(0,r.jsx)(t.code,{children:"true"}),")"]}),(0,r.jsx)(t.td,{}),(0,r.jsx)(t.td,{})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"timeout"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"API Timeout"})}),(0,r.jsxs)(t.td,{children:["Input parameter. Set a timeout duration in seconds for API requests made by the router. Default: ",(0,r.jsx)(t.code,{children:"10"})]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"fallback_to_first"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Fallback to First Model"})}),(0,r.jsxs)(t.td,{children:["Input parameter. Whether to use the first LLM in ",(0,r.jsx)(t.code,{children:"models"})," as a backup if routing fails to reach the selected model. Default: Enabled (",(0,r.jsx)(t.code,{children:"true"}),")"]})]})]})]}),"\n",(0,r.jsx)(t.h3,{id:"llm-router-outputs",children:"LLM Router outputs"}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"LLM Router"})," component provides three output options.\nYou can set the desired output type near the component's output port."]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Output"}),": A ",(0,r.jsx)(t.code,{children:"Message"})," containing the response to the original query as generated by the selected LLM.\nUse this output for regular chat interactions."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Selected Model Info"}),": A ",(0,r.jsx)(t.code,{children:"Data"})," object containing information about the selected model, such as its name and version."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Routing Decision"}),": A ",(0,r.jsx)(t.code,{children:"Message"})," containing the judge model's reasoning for selecting a particular model, including input query length and number of models considered.\nFor example:"]}),"\n",(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"Model Selection Decision:",props:{}}]},{tokens:[{content:"- Selected Model Index: 0",props:{}}]},{tokens:[{content:"- Selected Langflow Model Name: gpt-4o-mini",props:{}}]},{tokens:[{content:"- Selected API Model ID (if resolved): openai/gpt-4o-mini",props:{}}]},{tokens:[{content:"- Optimization Preference: cost",props:{}}]},{tokens:[{content:"- Input Query Length: 27 characters (~5 tokens)",props:{}}]},{tokens:[{content:"- Number of Models Considered: 2",props:{}}]},{tokens:[{content:"- Specifications Source: OpenRouter API",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsx)(t.p,{children:"This is useful for debugging if you feel the judge model isn't selecting the best model."}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"parser",children:"Parser"}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Parser"})," component extracts text from structured data (",(0,r.jsx)(t.code,{children:"DataFrame"})," or ",(0,r.jsx)(t.code,{children:"Data"}),") using a template or direct stringification.\nThe output is a ",(0,r.jsx)(t.code,{children:"Message"})," containing the parsed text."]}),"\n",(0,r.jsxs)(t.p,{children:["This is a versatile component for data extraction and manipulation in your flows.\nFor examples of ",(0,r.jsx)(t.strong,{children:"Parser"})," components in flows, see the following:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:(0,r.jsxs)(t.a,{href:"#batch-run",children:[(0,r.jsx)(t.strong,{children:"Batch Run"})," component example"]})}),"\n",(0,r.jsx)(t.li,{children:(0,r.jsxs)(t.a,{href:"#structured-output",children:[(0,r.jsx)(t.strong,{children:"Structured Output"})," component example"]})}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Financial Report Parser"})," template"]}),"\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.a,{href:"/webhook",children:"Trigger flows with webhooks"})}),"\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.a,{href:"/chat-with-rag",children:"Create a vector RAG chatbot"})}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"A flow that uses a Parser component to extract text from a Structured Output component.",src:n(96218).A+"",width:"4000",height:"2202"})}),"\n",(0,r.jsx)(t.h3,{id:"parsing-modes",children:"Parsing modes"}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Parser"})," component has two modes: ",(0,r.jsx)(t.strong,{children:"Parser"})," and ",(0,r.jsx)(t.strong,{children:"Stringify"}),"."]}),"\n",(0,r.jsxs)(c.A,{children:[(0,r.jsxs)(l.A,{value:"template",label:"Parser (template) mode",default:!0,children:[(0,r.jsxs)(t.p,{children:["In ",(0,r.jsx)(t.strong,{children:"Parser"})," mode, you create a template for text output that can include literal strings and variables for extracted keys."]}),(0,r.jsxs)(t.p,{children:["Use curly braces to define variables anywhere in the template.\nVariables must match keys in the ",(0,r.jsx)(t.code,{children:"DataFrame"})," or ",(0,r.jsx)(t.code,{children:"Data"})," input, such as column names.\nFor example, ",(0,r.jsx)(t.code,{children:"{name}"})," extracts the value of a ",(0,r.jsx)(t.code,{children:"name"})," key.\nFor more information about the content and structure of ",(0,r.jsx)(t.code,{children:"DataFrame"})," and ",(0,r.jsx)(t.code,{children:"Data"})," objects, see ",(0,r.jsx)(t.a,{href:"/data-types",children:"Langflow data types"}),"."]}),(0,r.jsx)(h.Ay,{}),(0,r.jsxs)(t.p,{children:["When the flow runs, the ",(0,r.jsx)(t.strong,{children:"Parser"})," component iterates over the input, producing a ",(0,r.jsx)(t.code,{children:"Message"})," for each parsed item.\nFor example, parsing a ",(0,r.jsx)(t.code,{children:"DataFrame"})," creates a ",(0,r.jsx)(t.code,{children:"Message"})," for each row, populated with the unique values from that row."]}),(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Employee summary template"}),(0,r.jsx)(t.p,{children:"This example template extracts employee data into a natural language summary about an employee's hire date and current role:"}),(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"{employee_first_name} {employee_last_name} was hired on {start_date}.",props:{}}]},{tokens:[{content:"Their current position is {job_title} ({grade}).",props:{}}]}],lang:"text"},annotations:[]}]}),(0,r.jsxs)(t.p,{children:["The resulting ",(0,r.jsx)(t.code,{children:"Message"})," output replaces the variables with the corresponding extracted values.\nFor example:"]}),(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"Renlo Kai was hired on 11-July-2017.",props:{}}]},{tokens:[{content:"Their current position is Software Engineer (Principal).",props:{}}]}],lang:"text"},annotations:[]}]})]}),(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Employee profile template"}),(0,r.jsx)(t.p,{children:"This example template uses Markdown syntax and extracted employee data to create an employee profile:"}),(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"# Employee Profile",props:{}}]},{tokens:[{content:"## Personal Information",props:{}}]},{tokens:[{content:"- **Name:** {name}",props:{}}]},{tokens:[{content:"- **ID:** {id}",props:{}}]},{tokens:[{content:"- **Email:** {email}",props:{}}]}],lang:"text"},annotations:[]}]}),(0,r.jsxs)(t.p,{children:["When the flow runs, the ",(0,r.jsx)(t.strong,{children:"Parser"})," component iterates over each row of the ",(0,r.jsx)(t.code,{children:"DataFrame"}),", populating the template's variables with the appropriate extracted values.\nThe resulting text for each row is output as a ",(0,r.jsx)(t.a,{href:"/data-types#message",children:(0,r.jsx)(t.code,{children:"Message"})}),"."]})]}),(0,r.jsxs)(t.p,{children:["The following parameters are available in ",(0,r.jsx)(t.strong,{children:"Parser"})," mode."]}),(0,r.jsx)(d.Ay,{}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Name"}),(0,r.jsx)(t.th,{children:"Display Name"}),(0,r.jsx)(t.th,{children:"Info"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"input_data"}),(0,r.jsx)(t.td,{children:"Data or DataFrame"}),(0,r.jsxs)(t.td,{children:["Input parameter. The ",(0,r.jsx)(t.code,{children:"Data"})," or ",(0,r.jsx)(t.code,{children:"DataFrame"})," input to parse."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"pattern"}),(0,r.jsx)(t.td,{children:"Template"}),(0,r.jsxs)(t.td,{children:["Input parameter. The formatting template using plaintext and variables for keys (",(0,r.jsx)(t.code,{children:"{KEY_NAME}"}),"). See the preceding examples for more information."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"sep"}),(0,r.jsx)(t.td,{children:"Separator"}),(0,r.jsxs)(t.td,{children:["Input parameter. A string defining the separator for rows or lines. Default: ",(0,r.jsx)(t.code,{children:"\\n"})," (new line)."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"clean_data"}),(0,r.jsx)(t.td,{children:"Clean Data"}),(0,r.jsxs)(t.td,{children:["Whether to remove empty rows and lines in each cell or key of the ",(0,r.jsx)(t.code,{children:"DataFrame"})," or ",(0,r.jsx)(t.code,{children:"Data"})," input. Default: Enabled (",(0,r.jsx)(t.code,{children:"true"}),")"]})]})]})]})]}),(0,r.jsxs)(l.A,{value:"stringify",label:"Stringify mode",children:[(0,r.jsxs)(t.p,{children:["Use ",(0,r.jsx)(t.strong,{children:"Stringify"})," mode to convert the entire input directly to text.\nThis mode doesn't support templates or key selection."]}),(0,r.jsxs)(t.p,{children:["The following parameters are available in ",(0,r.jsx)(t.strong,{children:"Stringify"})," mode."]}),(0,r.jsx)(d.Ay,{}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Name"}),(0,r.jsx)(t.th,{children:"Display Name"}),(0,r.jsx)(t.th,{children:"Info"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"input_data"}),(0,r.jsx)(t.td,{children:"Data or DataFrame"}),(0,r.jsxs)(t.td,{children:["Input parameter. The ",(0,r.jsx)(t.code,{children:"Data"})," or ",(0,r.jsx)(t.code,{children:"DataFrame"})," input to parse."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"sep"}),(0,r.jsx)(t.td,{children:"Separator"}),(0,r.jsxs)(t.td,{children:["Input parameter. A string defining the separator for rows or lines. Default: ",(0,r.jsx)(t.code,{children:"\\n"})," (new line)."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"clean_data"}),(0,r.jsx)(t.td,{children:"Clean Data"}),(0,r.jsxs)(t.td,{children:["Whether to remove empty rows and lines in each cell or key of the ",(0,r.jsx)(t.code,{children:"DataFrame"})," or ",(0,r.jsx)(t.code,{children:"Data"})," input. Default: Enabled (",(0,r.jsx)(t.code,{children:"true"}),")"]})]})]})]})]})]}),"\n",(0,r.jsx)(t.h3,{id:"test-and-troubleshoot-parsed-text",children:"Test and troubleshoot parsed text"}),"\n",(0,r.jsxs)(t.p,{children:["To test the ",(0,r.jsx)(t.strong,{children:"Parser"})," component, click ",(0,r.jsx)(i.A,{name:"Play","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Run component"}),", and then click ",(0,r.jsx)(i.A,{name:"TextSearch","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Inspect output"})," to see the ",(0,r.jsx)(t.code,{children:"Message"})," output with the parsed text.\nYou can also connect a ",(0,r.jsx)(t.strong,{children:"Chat Output"})," component if you want to view the output in the ",(0,r.jsx)(t.strong,{children:"Playground"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["If the ",(0,r.jsx)(t.code,{children:"Message"})," output from the ",(0,r.jsx)(t.strong,{children:"Parser"})," component has empty or unexpected values, there might be a mapping error between the input and the parsing mode, the input has empty values, or the input isn't suitable for plaintext extraction."]}),"\n",(0,r.jsxs)(t.p,{children:["For example, assume you use the following template to parse a ",(0,r.jsx)(t.code,{children:"DataFrame"}),":"]}),"\n",(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"{employee_first_name} {employee_last_name} is a {job_title} ({grade}).",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsxs)(t.p,{children:["The following ",(0,r.jsx)(t.code,{children:"Message"})," could result from parsing a row where ",(0,r.jsx)(t.code,{children:"employee_first_name"})," was empty and ",(0,r.jsx)(t.code,{children:"grade"})," was ",(0,r.jsx)(t.code,{children:"null"}),":"]}),"\n",(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:" Smith is a Software Engineer (null).",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsx)(t.p,{children:"To troubleshoot missing or unexpected values, you can do the following:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Make sure the variables in your template map to keys in the incoming ",(0,r.jsx)(t.code,{children:"Data"})," or ",(0,r.jsx)(t.code,{children:"DataFrame"}),".\nTo see the data being passed directly to the ",(0,r.jsx)(t.strong,{children:"Parser"})," component, click ",(0,r.jsx)(i.A,{name:"TextSearch","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Inspect output"})," on the component that is sending data to the ",(0,r.jsx)(t.strong,{children:"Parser"})," component."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Check the source data for missing or incorrect values.\nThere are several ways you can address these inconsistencies:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Rectify the source data directly."}),"\n",(0,r.jsxs)(t.li,{children:["Use other components to amend or filter anomalies before passing the data to the ",(0,r.jsx)(t.strong,{children:"Parser"})," component.\nThere are many components you can use for this depending on your goal, such as the ",(0,r.jsx)(t.strong,{children:"Data Operations"}),", ",(0,r.jsx)(t.strong,{children:"Structured Output"}),", and ",(0,r.jsx)(t.strong,{children:"Smart Function"})," components."]}),"\n",(0,r.jsxs)(t.li,{children:["Enable the ",(0,r.jsx)(t.strong,{children:"Parser"})," component's ",(0,r.jsx)(t.strong,{children:"Clean Data"})," parameter to skip empty rows or lines."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"python-interpreter",children:"Python Interpreter"}),"\n",(0,r.jsx)(t.p,{children:"This component allows you to execute Python code with imported packages."}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Python Interpreter"})," component can only import packages that are already installed in your Langflow environment.\nIf you encounter an ",(0,r.jsx)(t.code,{children:"ImportError"})," when trying to use a package, you need to install it first."]}),"\n",(0,r.jsxs)(t.p,{children:["To install custom packages, see ",(0,r.jsx)(t.a,{href:"/install-custom-dependencies",children:"Install custom dependencies"}),"."]}),"\n",(0,r.jsx)(t.h3,{id:"use-the-python-interpreter-in-a-flow",children:"Use the Python Interpreter in a flow"}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["To use this component in a flow, in the ",(0,r.jsx)(t.strong,{children:"Global Imports"})," field, add the packages you want to import as a comma-separated list, such as ",(0,r.jsx)(t.code,{children:"math,pandas"}),".\nAt least one import is required."]}),"\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:"Python Code"})," field, enter the Python code you want to execute. Use ",(0,r.jsx)(t.code,{children:"print()"})," to see the output."]}),"\n",(0,r.jsxs)(t.li,{children:["Optional: Enable ",(0,r.jsx)(t.strong,{children:"Tool Mode"}),", and then connect the ",(0,r.jsx)(t.strong,{children:"Python Interpreter"})," component to an ",(0,r.jsx)(t.strong,{children:"Agent"})," component as a tool.\nFor example, connect a ",(0,r.jsx)(t.strong,{children:"Python Interpreter"})," component and a ",(0,r.jsxs)(t.a,{href:"/components-helpers#calculator",children:[(0,r.jsx)(t.strong,{children:"Calculator"})," component"]})," as tools for an ",(0,r.jsx)(t.strong,{children:"Agent"})," component, and then test how it chooses different tools to solve math problems.\n",(0,r.jsx)(t.img,{alt:"Python Interpreter and Calculator components connected to an Agent component",src:n(99e3).A+"",width:"3988",height:"2928"})]}),"\n",(0,r.jsxs)(t.li,{children:["Ask the agent an easier math question.\nThe ",(0,r.jsx)(t.strong,{children:"Calculator"})," tool can add, subtract, multiple, divide, or perform exponentiation.\nThe agent executes the ",(0,r.jsx)(t.code,{children:"evaluate_expression"})," tool to correctly answer the question."]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:"Result:"}),"\n",(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"Executed evaluate_expression",props:{}}]},{tokens:[{content:"Input:",props:{}}]},{tokens:[{content:"{",props:{}}]},{tokens:[{content:' "expression": "2+5"',props:{}}]},{tokens:[{content:"}",props:{}}]},{tokens:[{content:"Output:",props:{}}]},{tokens:[{content:"{",props:{}}]},{tokens:[{content:' "result": "7"',props:{}}]},{tokens:[{content:"}",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsxs)(t.ol,{start:"5",children:["\n",(0,r.jsxs)(t.li,{children:["Give the agent complete Python code.\nThis example creates a Pandas DataFrame table with the imported ",(0,r.jsx)(t.code,{children:"pandas"})," packages, and returns the square root of the mean squares."]}),"\n"]}),"\n",(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"import",props:{style:{color:"#FF7B72"}}},{content:" pandas ",props:{style:{color:"#C9D1D9"}}},{content:"as",props:{style:{color:"#FF7B72"}}},{content:" pd",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"import",props:{style:{color:"#FF7B72"}}},{content:" math",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"# Create a simple DataFrame",props:{style:{color:"#8B949E"}}}]},{tokens:[{content:"df ",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:" pd.DataFrame({",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" 'numbers'",props:{style:{color:"#A5D6FF"}}},{content:": [",props:{style:{color:"#C9D1D9"}}},{content:"1",props:{style:{color:"#79C0FF"}}},{content:", ",props:{style:{color:"#C9D1D9"}}},{content:"2",props:{style:{color:"#79C0FF"}}},{content:", ",props:{style:{color:"#C9D1D9"}}},{content:"3",props:{style:{color:"#79C0FF"}}},{content:", ",props:{style:{color:"#C9D1D9"}}},{content:"4",props:{style:{color:"#79C0FF"}}},{content:", ",props:{style:{color:"#C9D1D9"}}},{content:"5",props:{style:{color:"#79C0FF"}}},{content:"],",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" 'squares'",props:{style:{color:"#A5D6FF"}}},{content:": [x",props:{style:{color:"#C9D1D9"}}},{content:"**",props:{style:{color:"#FF7B72"}}},{content:"2 ",props:{style:{color:"#79C0FF"}}},{content:"for",props:{style:{color:"#FF7B72"}}},{content:" x ",props:{style:{color:"#C9D1D9"}}},{content:"in ",props:{style:{color:"#FF7B72"}}},{content:"range",props:{style:{color:"#79C0FF"}}},{content:"(",props:{style:{color:"#C9D1D9"}}},{content:"1",props:{style:{color:"#79C0FF"}}},{content:", ",props:{style:{color:"#C9D1D9"}}},{content:"6",props:{style:{color:"#79C0FF"}}},{content:")]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"})",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"# Calculate the square root of the mean",props:{style:{color:"#8B949E"}}}]},{tokens:[{content:"result ",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:" math.sqrt(df[",props:{style:{color:"#C9D1D9"}}},{content:"'squares'",props:{style:{color:"#A5D6FF"}}},{content:"].mean())",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"print",props:{style:{color:"#79C0FF"}}},{content:"(",props:{style:{color:"#C9D1D9"}}},{content:"f",props:{style:{color:"#FF7B72"}}},{content:'"Square root of mean squares: ',props:{style:{color:"#A5D6FF"}}},{content:"{",props:{style:{color:"#79C0FF"}}},{content:"result",props:{style:{color:"#C9D1D9"}}},{content:"}",props:{style:{color:"#79C0FF"}}},{content:'"',props:{style:{color:"#A5D6FF"}}},{content:")",props:{style:{color:"#C9D1D9"}}}]}],lang:"python"},annotations:[]}]}),"\n",(0,r.jsxs)(t.p,{children:["The agent correctly chooses the ",(0,r.jsx)(t.code,{children:"run_python_repl"})," tool to solve the problem."]}),"\n",(0,r.jsx)(t.p,{children:"Result:"}),"\n",(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"Executed run_python_repl",props:{}}]},{tokens:[{content:"",props:{}}]},{tokens:[{content:"Input:",props:{}}]},{tokens:[{content:"",props:{}}]},{tokens:[{content:"{",props:{}}]},{tokens:[{content:" \"python_code\": \"import pandas as pd\\nimport math\\n\\n# Create a simple DataFrame\\ndf = pd.DataFrame({\\n 'numbers': [1, 2, 3, 4, 5],\\n 'squares': [x**2 for x in range(1, 6)]\\n})\\n\\n# Calculate the square root of the mean\\nresult = math.sqrt(df['squares'].mean())\\nprint(f\\\"Square root of mean squares: {result}\\\")\"",props:{}}]},{tokens:[{content:"}",props:{}}]},{tokens:[{content:"Output:",props:{}}]},{tokens:[{content:"",props:{}}]},{tokens:[{content:"{",props:{}}]},{tokens:[{content:' "result": "Square root of mean squares: 3.3166247903554"',props:{}}]},{tokens:[{content:"}",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsxs)(t.p,{children:["If you don't include the package imports in the chat, the agent can still create the table using ",(0,r.jsx)(t.code,{children:"pd.DataFrame"}),", because the ",(0,r.jsx)(t.code,{children:"pandas"})," package is imported globally by the ",(0,r.jsx)(t.strong,{children:"Python Interpreter"})," component in the ",(0,r.jsx)(t.strong,{children:"Global Imports"})," field."]}),"\n",(0,r.jsx)(t.h3,{id:"python-interpreter-parameters",children:"Python Interpreter parameters"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Name"}),(0,r.jsx)(t.th,{children:"Type"}),(0,r.jsx)(t.th,{children:"Description"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"global_imports"}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsxs)(t.td,{children:["Input parameter. A comma-separated list of modules to import globally, such as ",(0,r.jsx)(t.code,{children:"math,pandas,numpy"}),"."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"python_code"}),(0,r.jsx)(t.td,{children:"Code"}),(0,r.jsx)(t.td,{children:"Input parameter. The Python code to execute. Only modules specified in Global Imports can be used."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"results"}),(0,r.jsx)(t.td,{children:"Data"}),(0,r.jsx)(t.td,{children:"Output parameter. The output of the executed Python code, including any printed results or errors."})]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"save-file",children:"Save File"}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Save File"})," component creates a file containing data produced by another component.\nSeveral file formats are supported, and you can store files in ",(0,r.jsx)(t.a,{href:"/memory",children:"Langflow storage"})," or the local file system."]}),"\n",(0,r.jsxs)(t.p,{children:["To configure the ",(0,r.jsx)(t.strong,{children:"Save File"})," component and use it in a flow, do the following:"]}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Connect ",(0,r.jsx)(t.a,{href:"/data-types#dataframe",children:(0,r.jsx)(t.code,{children:"DataFrame"})}),", ",(0,r.jsx)(t.a,{href:"/data-types#data",children:(0,r.jsx)(t.code,{children:"Data"})}),", or ",(0,r.jsx)(t.a,{href:"/data-types#message",children:(0,r.jsx)(t.code,{children:"Message"})})," output from another component to the ",(0,r.jsx)(t.strong,{children:"Save File"})," component's ",(0,r.jsx)(t.strong,{children:"Input"})," port."]}),"\n",(0,r.jsxs)(t.p,{children:["You can connect the same output to multiple ",(0,r.jsx)(t.strong,{children:"Save File"})," components if you want to create multiple files, save the data in different file formats, or save files to multiple locations."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In ",(0,r.jsx)(t.strong,{children:"File Name"}),", enter a file name and an optional path."]}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"File Name"})," parameter controls where the file is saved.\nIt can contain a file name or an entire file path:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Default location"}),": If you only provide a file name, then the file is stored in the Langflow data directory. For example,",(0,r.jsx)(t.code,{children:"~/Library/Caches/langflow/data"})," on macOS."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Subdirectory"}),": To store files in subdirectories, add the path to the ",(0,r.jsx)(t.strong,{children:"File Name"})," parameter.\nIf a given subdirectory doesn't already exist, Langflow automatically creates it.\nFor example, ",(0,r.jsx)(t.code,{children:"files/my_file"})," creates ",(0,r.jsx)(t.code,{children:"my_file"})," in ",(0,r.jsx)(t.code,{children:"/data/files"}),", and it creates the ",(0,r.jsx)(t.code,{children:"files"})," subdirectory if it doesn't already exist."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Absolute or relative path"}),": To store files elsewhere in your environment or local file storage, provide the absolute or relative path to the desired location.\nFor example, ",(0,r.jsx)(t.code,{children:"~/Desktop/my_file"})," saves ",(0,r.jsx)(t.code,{children:"my_file"})," to the desktop."]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.p,{children:["Don't include an extension in the file name.\nIf you do, the extension is treated as part of the file name; it has no impact on the ",(0,r.jsx)(t.strong,{children:"File Format"})," parameter."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In the ",(0,r.jsx)(t.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),", click ",(0,r.jsx)(i.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Controls"}),", select the desired file format, and then click ",(0,r.jsx)(t.strong,{children:"Close"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["The available ",(0,r.jsx)(t.strong,{children:"File Format"})," options depend on the input data type:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.code,{children:"DataFrame"})," can be saved to CSV (default), Excel (requires ",(0,r.jsx)(t.code,{children:"openpyxl"})," ",(0,r.jsx)(t.a,{href:"/install-custom-dependencies",children:"custom dependency"}),"), JSON (fallback default), or Markdown."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.code,{children:"Data"})," can be saved to CSV, Excel (requires ",(0,r.jsx)(t.code,{children:"openpyxl"})," ",(0,r.jsx)(t.a,{href:"/install-custom-dependencies",children:"custom dependency"}),"), JSON (default), or Markdown."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.code,{children:"Message"})," can be saved to TXT, JSON (default), or Markdown."]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.admonition,{title:"Overwrites allowed",type:"warning",children:(0,r.jsxs)(t.p,{children:["If you have multiple ",(0,r.jsx)(t.strong,{children:"Save File"})," components, in one or more flows, with the same file name, path, and extension, the file contains the data from the most recent run only.\nLangflow doesn't block overwrites if a matching file already exists.\nTo avoid unintended overwrites, use unique file names and paths."]})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["To test the ",(0,r.jsx)(t.strong,{children:"Save File"})," component, click ",(0,r.jsx)(i.A,{name:"Play","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Run component"}),", and then click ",(0,r.jsx)(i.A,{name:"TextSearch","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Inspect output"})," to get the filepath where the file was saved."]}),"\n",(0,r.jsxs)(t.p,{children:["The component's literal output is a ",(0,r.jsx)(t.code,{children:"Message"})," containing the original data type, the file name and extension, and the absolute filepath to the file based on the ",(0,r.jsx)(t.strong,{children:"File Name"})," parameter.\nFor example:"]}),"\n",(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"DataFrame saved successfully as 'my_file.csv' at /Users/user.name/Library/Caches/langflow/data/my_file.csv",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsxs)(t.p,{children:["If the ",(0,r.jsx)(t.strong,{children:"File Name"})," contains a subdirectory or other non-default path, this is reflected in the ",(0,r.jsx)(t.code,{children:"Message"})," output.\nFor example, a CSV file with the file name ",(0,r.jsx)(t.code,{children:"~/Desktop/my_file"})," could produce the following output:"]}),"\n",(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"DataFrame saved successfully as '/Users/user.name/Desktop/my_file.csv' at /Users/user.name/Desktop/my_file.csv",props:{}}]}],lang:"text"},annotations:[]}]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Optional: If you want to use the saved file in a flow, you must use an API call or another component to retrieve the file from the given filepath."}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"smart-function",children:"Smart Function"}),"\n",(0,r.jsxs)(t.p,{children:["In Langflow version 1.5, this component was renamed from ",(0,r.jsx)(t.strong,{children:"Lambda Filter"})," to ",(0,r.jsx)(t.strong,{children:"Smart Function"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Smart Function"})," component uses an LLM to generate a Lambda function to filter or transform structured data based on natural language instructions.\nYou must connect this component to a ",(0,r.jsx)(t.a,{href:"/components-models",children:"language model component"}),", which is used to generate a function based on the natural language instructions you provide in the ",(0,r.jsx)(t.strong,{children:"Instructions"})," parameter.\nThe LLM runs the function against the data input, and then outputs the results as ",(0,r.jsx)(t.a,{href:"/data-types#data",children:(0,r.jsx)(t.code,{children:"Data"})}),"."]}),"\n",(0,r.jsxs)(t.admonition,{type:"tip",children:[(0,r.jsxs)(t.p,{children:["Provide brief, clear instructions, focusing on the desired outcome or specific actions, such as ",(0,r.jsx)(t.code,{children:"Filter the data to only include items where the 'status' is 'active'"}),".\nOne sentence or less is preferred because end punctuation, like periods, can cause errors or unexpected behavior."]}),(0,r.jsxs)(t.p,{children:["If you need to provide more details instructions that aren't directly relevant to the Lambda function, you can input them in the ",(0,r.jsx)(t.strong,{children:"Language Model"})," component's ",(0,r.jsx)(t.strong,{children:"Input"})," field or through a ",(0,r.jsx)(t.strong,{children:"Prompt Template"})," component."]})]}),"\n",(0,r.jsxs)(t.p,{children:["The following example uses the ",(0,r.jsx)(t.strong,{children:"API Request"})," endpoint to pass JSON data from the ",(0,r.jsx)(t.code,{children:"https://jsonplaceholder.typicode.com/users"})," endpoint to the ",(0,r.jsx)(t.strong,{children:"Smart Function"})," component.\nThen, the ",(0,r.jsx)(t.strong,{children:"Smart Function"})," component passes the data and the instruction ",(0,r.jsx)(t.code,{children:"extract emails"})," to the attached ",(0,r.jsx)(t.strong,{children:"Language Model"})," component.\nFrom there, the LLM generates a filter function that extracts email addresses from the JSON data, returning the filtered data as chat output."]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"A small flow using a Smart Function component to extract data from an API response.",src:n(66539).A+"",width:"4000",height:"1796"})}),"\n",(0,r.jsx)(t.h3,{id:"smart-function-parameters",children:"Smart Function parameters"}),"\n",(0,r.jsx)(d.Ay,{}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Name"}),(0,r.jsx)(t.th,{children:"Display Name"}),(0,r.jsx)(t.th,{children:"Info"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"data"}),(0,r.jsx)(t.td,{children:"Data"}),(0,r.jsx)(t.td,{children:"Input parameter. The structured data to filter or transform using a Lambda function."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"llm"}),(0,r.jsx)(t.td,{children:"Language Model"}),(0,r.jsxs)(t.td,{children:["Input parameter. Connect ",(0,r.jsx)(t.a,{href:"/data-types#languagemodel",children:(0,r.jsx)(t.code,{children:"LanguageModel"})})," output from a ",(0,r.jsx)(t.strong,{children:"Language Model"})," component."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"filter_instruction"}),(0,r.jsx)(t.td,{children:"Instructions"}),(0,r.jsx)(t.td,{children:"Input parameter. The natural language instructions for how to filter or transform the data. The LLM uses these instructions to create a Lambda function."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"sample_size"}),(0,r.jsx)(t.td,{children:"Sample Size"}),(0,r.jsxs)(t.td,{children:["Input parameter. For large datasets, the number of characters to sample from the dataset head and tail. Only applied if the dataset meets or exceeds ",(0,r.jsx)(t.code,{children:"max_size"}),". Default: ",(0,r.jsx)(t.code,{children:"1000"}),"."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"max_size"}),(0,r.jsx)(t.td,{children:"Max Size"}),(0,r.jsxs)(t.td,{children:["Input parameter. The number of characters for the dataset to be considered large, which triggers sampling by the ",(0,r.jsx)(t.code,{children:"sample_size"})," value. Default: ",(0,r.jsx)(t.code,{children:"30000"}),"."]})]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"split-text",children:"Split Text"}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Split Text"})," component splits data into chunks based on parameters like chunk size and separator.\nIt is often used to chunk data to be tokenized and embedded into vector databases.\nFor examples, see ",(0,r.jsx)(t.a,{href:"/components-embedding-models#use-embedding-model-components-in-a-flow",children:"Use embedding model components in a flow"})," and ",(0,r.jsx)(t.a,{href:"/chat-with-rag",children:"Create a Vector RAG chatbot"}),"."]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"An embedding generation flow that uses a Split Text component to chunk data.",src:n(49823).A+"",width:"4000",height:"2766"})}),"\n",(0,r.jsxs)(t.p,{children:["The component accepts ",(0,r.jsx)(t.code,{children:"Message"}),", ",(0,r.jsx)(t.code,{children:"Data"}),", or ",(0,r.jsx)(t.code,{children:"DataFrame"}),", and then outputs either ",(0,r.jsx)(t.strong,{children:"Chunks"})," or ",(0,r.jsx)(t.strong,{children:"DataFrame"}),".\nThe ",(0,r.jsx)(t.strong,{children:"Chunks"})," output returns a list of ",(0,r.jsx)(t.a,{href:"/data-types#data",children:(0,r.jsx)(t.code,{children:"Data"})})," objects containing individual text chunks.\nThe ",(0,r.jsx)(t.strong,{children:"DataFrame"})," output returns the list of chunks as a structured ",(0,r.jsx)(t.a,{href:"/data-types#dataframe",children:(0,r.jsx)(t.code,{children:"DataFrame"})})," with additional ",(0,r.jsx)(t.code,{children:"text"})," and ",(0,r.jsx)(t.code,{children:"metadata"})," columns."]}),"\n",(0,r.jsx)(t.h3,{id:"split-text-parameters",children:"Split Text parameters"}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Split Text"})," component's parameters control how the text is split into chunks, specifically the ",(0,r.jsx)(t.code,{children:"chunk_size"}),", ",(0,r.jsx)(t.code,{children:"chunk_overlap"}),", and ",(0,r.jsx)(t.code,{children:"separator"})," parameters."]}),"\n",(0,r.jsxs)(t.p,{children:["To test the chunking behavior, add a ",(0,r.jsx)(t.strong,{children:"Text Input"})," or ",(0,r.jsx)(t.strong,{children:"File"})," component with some sample data to chunk, click ",(0,r.jsx)(i.A,{name:"Play","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Run component"})," on the ",(0,r.jsx)(t.strong,{children:"Split Text"})," component, and then click ",(0,r.jsx)(i.A,{name:"TextSearch","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Inspect output"})," to view the list of chunks and their metadata. The ",(0,r.jsx)(t.strong,{children:"text"})," column contains the actual text chunks created from your chunking settings.\nIf the chunks aren't split as you expect, adjust the parameters, rerun the component, and then inspect the new output."]}),"\n",(0,r.jsx)(d.Ay,{}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Name"}),(0,r.jsx)(t.th,{children:"Display Name"}),(0,r.jsx)(t.th,{children:"Info"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"data_inputs"}),(0,r.jsx)(t.td,{children:"Input"}),(0,r.jsxs)(t.td,{children:["Input parameter. The data to split. Input must be in ",(0,r.jsx)(t.code,{children:"Message"}),", ",(0,r.jsx)(t.code,{children:"Data"}),", or ",(0,r.jsx)(t.code,{children:"DataFrame"})," format."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"chunk_overlap"}),(0,r.jsx)(t.td,{children:"Chunk Overlap"}),(0,r.jsxs)(t.td,{children:["Input parameter. The number of characters to overlap between chunks. This helps maintain context across chunks. When a separator is encountered, the overlap is applied at the point of the separator so that the subsequent chunk contains the last ",(0,r.jsx)(t.em,{children:"n"})," characters of the preceding chunk. Default: ",(0,r.jsx)(t.code,{children:"200"}),"."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"chunk_size"}),(0,r.jsx)(t.td,{children:"Chunk Size"}),(0,r.jsxs)(t.td,{children:["Input parameter. The target length for each chunk after splitting. The data is first split by separator, and then chunks smaller than the ",(0,r.jsx)(t.code,{children:"chunk_size"})," are merged up to this limit. However, if the initial separator split produces any chunks larger than the ",(0,r.jsx)(t.code,{children:"chunk_size"}),", those chunks are neither further subdivided nor combined with any smaller chunks; these chunks will be output as-is even though they exceed the ",(0,r.jsx)(t.code,{children:"chunk_size"}),". Default: ",(0,r.jsx)(t.code,{children:"1000"}),". See ",(0,r.jsx)(t.a,{href:"#chunk-size",children:"Tokenization errors due to chunk size"})," for important considerations."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"separator"}),(0,r.jsx)(t.td,{children:"Separator"}),(0,r.jsxs)(t.td,{children:["Input parameter. A string defining a character to split on, such as ",(0,r.jsx)(t.code,{children:"\\n"})," to split on new line characters, ",(0,r.jsx)(t.code,{children:"\\n\\n"})," to split at paragraph breaks, or ",(0,r.jsx)(t.code,{children:"},"})," to split at the end of JSON objects. You can directly provide the separator string, or pass a separator string from another component as ",(0,r.jsx)(t.code,{children:"Message"})," input."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"text_key"}),(0,r.jsx)(t.td,{children:"Text Key"}),(0,r.jsxs)(t.td,{children:["Input parameter. The key to use for the text column that is extracted from the input and then split. Default: ",(0,r.jsx)(t.code,{children:"text"}),"."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"keep_separator"}),(0,r.jsx)(t.td,{children:"Keep Separator"}),(0,r.jsxs)(t.td,{children:["Input parameter. Select how to handle separators in output chunks. If ",(0,r.jsx)(t.code,{children:"False"}),", separators are omitted from output chunks. Options include ",(0,r.jsx)(t.code,{children:"False"})," (remove separators), ",(0,r.jsx)(t.code,{children:"True"})," (keep separators in chunks without preference for placement), ",(0,r.jsx)(t.code,{children:"Start"})," (place separators at the beginning of chunks), or ",(0,r.jsx)(t.code,{children:"End"})," (place separators at the end of chunks). Default: ",(0,r.jsx)(t.code,{children:"False"}),"."]})]})]})]}),"\n",(0,r.jsx)(t.h3,{id:"chunk-size",children:"Tokenization errors due to chunk size"}),"\n",(0,r.jsxs)(t.p,{children:["When using ",(0,r.jsx)(t.strong,{children:"Split Text"})," with embedding models (especially NVIDIA models like ",(0,r.jsx)(t.code,{children:"nvidia/nv-embed-v1"}),"), you may need to use smaller chunk sizes (",(0,r.jsx)(t.code,{children:"500"})," or less) even though the model supports larger token limits.\nThe ",(0,r.jsx)(t.strong,{children:"Split Text"})," component doesn't always enforce the exact chunk size you set, and individual chunks may exceed your specified limit.\nIf you encounter tokenization errors, modify your text splitting strategy by reducing the chunk size, changing the overlap length, or using a more common separator.\nThen, test your configuration by running the flow and inspecting the component's output."]}),"\n",(0,r.jsx)(t.h3,{id:"other-text-splitters",children:"Other text splitters"}),"\n",(0,r.jsxs)(t.p,{children:["See ",(0,r.jsx)(t.a,{href:"/bundles-langchain#text-splitters",children:"LangChain text splitter components"}),"."]}),"\n",(0,r.jsx)(t.h2,{id:"structured-output",children:"Structured Output"}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Structured Output"})," component uses an LLM to transform any input into structured data (",(0,r.jsx)(t.code,{children:"Data"})," or ",(0,r.jsx)(t.code,{children:"DataFrame"}),") using natural language formatting instructions and an output schema definition.\nFor example, you can extract specific details from documents, like email messages or scientific papers."]}),"\n",(0,r.jsx)(t.h3,{id:"use-the-structured-output-component-in-a-flow",children:"Use the Structured Output component in a flow"}),"\n",(0,r.jsxs)(t.p,{children:["To use the ",(0,r.jsx)(t.strong,{children:"Structured Output"})," component in a flow, do the following:"]}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Provide an ",(0,r.jsx)(t.strong,{children:"Input Message"}),", which is the source material from which you want to extract structured data.\nThis can come from practically any component, but it is typically a ",(0,r.jsx)(t.strong,{children:"Chat Input"}),", ",(0,r.jsx)(t.strong,{children:"File"}),", or other component that provides some unstructured or semi-structured input."]}),"\n",(0,r.jsx)(t.admonition,{type:"tip",children:(0,r.jsxs)(t.p,{children:["Not all source material has to become structured output.\nThe power of the ",(0,r.jsx)(t.strong,{children:"Structured Output"})," component is that you can specify the information you want to extract, even if that data isn't explicitly labeled or an exact keyword match.\nThen, the LLM can use your instructions to analyze the source material, extract the relevant data, and format it according to your specifications.\nAny irrelevant source material isn't included in the structured output."]})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Define ",(0,r.jsx)(t.strong,{children:"Format Instructions"})," and an ",(0,r.jsx)(t.strong,{children:"Output Schema"})," to specify the data to extract from the source material and how to structure it in the final ",(0,r.jsx)(t.code,{children:"Data"})," or ",(0,r.jsx)(t.code,{children:"DataFrame"})," output."]}),"\n",(0,r.jsx)(t.p,{children:"The instructions are a prompt that tell the LLM what data to extract, how to format it, how to handle exceptions, and any other instructions relevant to preparing the structured data."}),"\n",(0,r.jsxs)(t.p,{children:["The schema is a table that defines the fields (keys) and data types to organize the data extracted by the LLM into a structured ",(0,r.jsx)(t.code,{children:"Data"})," or ",(0,r.jsx)(t.code,{children:"DataFrame"})," object.\nFor more information, see ",(0,r.jsx)(t.a,{href:"#output-schema-options",children:"Output Schema options"})]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Attach a ",(0,r.jsx)(t.a,{href:"/components-models",children:"language model component"})," that is set to emit ",(0,r.jsx)(t.a,{href:"/data-types#languagemodel",children:(0,r.jsx)(t.code,{children:"LanguageModel"})})," output."]}),"\n",(0,r.jsxs)(t.p,{children:["The LLM uses the ",(0,r.jsx)(t.strong,{children:"Input Message"})," and ",(0,r.jsx)(t.strong,{children:"Format Instructions"})," from the ",(0,r.jsx)(t.strong,{children:"Structured Output"})," component to extract specific pieces of data from the input text.\nThe output schema is applied to the model's response to produce the final ",(0,r.jsx)(t.code,{children:"Data"})," or ",(0,r.jsx)(t.code,{children:"DataFrame"})," structured object."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Optional: Typically, the structured output is passed to downstream components that use the extracted data for other processes, such as the ",(0,r.jsx)(t.strong,{children:"Parser"})," or ",(0,r.jsx)(t.strong,{children:"Data Operations"})," components."]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"A basic flow with Structured Output, Language Model, Type Convert, and Chat Input and Output components.",src:n(82798).A+"",width:"4000",height:"1724"})}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Structured Output example: Financial Report Parser template"}),(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Financial Report Parser"})," template provides an example of how the ",(0,r.jsx)(t.strong,{children:"Structured Output"})," component can be used to extract structured data from unstructured text."]}),(0,r.jsxs)(t.p,{children:["The template's ",(0,r.jsx)(t.strong,{children:"Structured Output"})," component has the following configuration:"]}),(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Input Message"})," comes from a ",(0,r.jsx)(t.strong,{children:"Chat Input"})," component that is preloaded with quotes from sample financial reports"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Format Instructions"})," are as follows:"]}),"\n",(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"You are an AI that extracts structured JSON objects from unstructured text.",props:{}}]},{tokens:[{content:"Use a predefined schema with expected types (str, int, float, bool, dict).",props:{}}]},{tokens:[{content:"Extract ALL relevant instances that match the schema - if multiple patterns exist, capture them all.",props:{}}]},{tokens:[{content:"Fill missing or ambiguous values with defaults: null for missing values.",props:{}}]},{tokens:[{content:"Remove exact duplicates but keep variations that have different field values.",props:{}}]},{tokens:[{content:"Always return valid JSON in the expected format, never throw errors.",props:{}}]},{tokens:[{content:"If multiple objects can be extracted, return them all in the structured format.",props:{}}]}],lang:"text"},annotations:[]}]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Output Schema"})," includes keys for ",(0,r.jsx)(t.code,{children:"EBITDA"}),", ",(0,r.jsx)(t.code,{children:"NET_INCOME"}),", and ",(0,r.jsx)(t.code,{children:"GROSS_PROFIT"}),"."]}),"\n"]}),"\n"]}),(0,r.jsxs)(t.p,{children:["The structured ",(0,r.jsx)(t.code,{children:"Data"})," object is passed to a ",(0,r.jsx)(t.strong,{children:"Parser"})," component that produces a text string by mapping the schema keys to variables in the parsing template:"]}),(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"EBITDA: {EBITDA} , Net Income: {NET_INCOME} , GROSS_PROFIT: {GROSS_PROFIT}",props:{}}]}],lang:"text"},annotations:[]}]}),(0,r.jsxs)(t.p,{children:["When printed to the ",(0,r.jsx)(t.strong,{children:"Playground"}),", the resulting ",(0,r.jsx)(t.code,{children:"Message"})," replaces the variables with the actual values extracted by the ",(0,r.jsx)(t.strong,{children:"Structured Output"})," component. For example:"]}),(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"EBITDA: 900 million , Net Income: 500 million , GROSS_PROFIT: 1.2 billion",props:{}}]}],lang:"text"},annotations:[]}]})]}),"\n",(0,r.jsx)(t.h3,{id:"structured-output-parameters",children:"Structured Output parameters"}),"\n",(0,r.jsx)(d.Ay,{}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Name"}),(0,r.jsx)(t.th,{children:"Type"}),(0,r.jsx)(t.th,{children:"Description"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsxs)(t.td,{children:["Language Model (",(0,r.jsx)(t.code,{children:"llm"}),")"]}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"LanguageModel"})}),(0,r.jsxs)(t.td,{children:["Input parameter. The ",(0,r.jsx)(t.a,{href:"/data-types#languagemodel",children:(0,r.jsx)(t.code,{children:"LanguageModel"})})," output from a ",(0,r.jsx)(t.strong,{children:"Language Model"})," component that defines the LLM to use to analyze, extract, and prepare the structured output."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsxs)(t.td,{children:["Input Message (",(0,r.jsx)(t.code,{children:"input_value"}),")"]}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsx)(t.td,{children:"Input parameter. The input message containing source material for extraction."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsxs)(t.td,{children:["Format Instructions (",(0,r.jsx)(t.code,{children:"system_prompt"}),")"]}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsx)(t.td,{children:"Input parameter. The instructions to the language model for extracting and formatting the output."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsxs)(t.td,{children:["Schema Name (",(0,r.jsx)(t.code,{children:"schema_name"}),")"]}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsxs)(t.td,{children:["Input parameter. An optional title for the ",(0,r.jsx)(t.strong,{children:"Output Schema"}),"."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsxs)(t.td,{children:["Output Schema (",(0,r.jsx)(t.code,{children:"output_schema"}),")"]}),(0,r.jsx)(t.td,{children:"Table"}),(0,r.jsxs)(t.td,{children:["Input parameter. A table describing the schema of the desired structured output, ultimately determining the content of the ",(0,r.jsx)(t.code,{children:"Data"})," or ",(0,r.jsx)(t.code,{children:"DataFrame"})," output. See ",(0,r.jsx)(t.a,{href:"#output-schema-options",children:"Output Schema options"}),"."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsxs)(t.td,{children:["Structured Output (",(0,r.jsx)(t.code,{children:"structured_output"}),")"]}),(0,r.jsxs)(t.td,{children:[(0,r.jsx)(t.code,{children:"Data"})," or ",(0,r.jsx)(t.code,{children:"DataFrame"})]}),(0,r.jsxs)(t.td,{children:["Output parameter. The final structured output produced by the component. Near the component's output port, you can select the output data type as either ",(0,r.jsx)(t.strong,{children:"Structured Output Data"})," or ",(0,r.jsx)(t.strong,{children:"Structured Output DataFrame"}),". The specific content and structure of the output depends on the input parameters."]})]})]})]}),"\n",(0,r.jsx)(t.h4,{id:"output-schema-options",children:"Output Schema options"}),"\n",(0,r.jsxs)(t.p,{children:["After the LLM extracts the relevant data from the ",(0,r.jsx)(t.strong,{children:"Input Message"})," and ",(0,r.jsx)(t.strong,{children:"Format Instructions"}),", the data is organized according to the ",(0,r.jsx)(t.strong,{children:"Output Schema"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["The schema is a table that defines the fields (keys) and data types for the final ",(0,r.jsx)(t.code,{children:"Data"})," or ",(0,r.jsx)(t.code,{children:"DataFrame"})," output from the ",(0,r.jsx)(t.strong,{children:"Structured Output"})," component."]}),"\n",(0,r.jsxs)(t.p,{children:["The default schema is a single ",(0,r.jsx)(t.code,{children:"field"})," string."]}),"\n",(0,r.jsxs)(t.p,{children:["To add a key to the schema, click ",(0,r.jsx)(i.A,{name:"Plus","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Add a new row"}),", and then edit each column to define the schema:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Name"}),": The name of the output field. Typically a specific key for which you want to extract a value."]}),"\n",(0,r.jsxs)(t.p,{children:["You can reference these keys as variables in downstream components, such as a ",(0,r.jsx)(t.strong,{children:"Parser"})," component's template.\nFor example, the schema key ",(0,r.jsx)(t.code,{children:"NET_INCOME"})," could be referenced by the variable ",(0,r.jsx)(t.code,{children:"{NET_INCOME}"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Description"}),": An optional metadata description of the field's contents and purpose."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Type"}),": The data type of the value stored in the field.\nSupported types are ",(0,r.jsx)(t.code,{children:"str"})," (default), ",(0,r.jsx)(t.code,{children:"int"}),", ",(0,r.jsx)(t.code,{children:"float"}),", ",(0,r.jsx)(t.code,{children:"bool"}),", and ",(0,r.jsx)(t.code,{children:"dict"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"As List"}),": Enable this setting if you want the field to contain a list of values rather than a single value."]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.p,{children:["For simple schemas, you might only extract a few ",(0,r.jsx)(t.code,{children:"string"})," or ",(0,r.jsx)(t.code,{children:"int"})," fields.\nFor more complex schemas with lists and dictionaries, it might help to refer to the ",(0,r.jsx)(t.code,{children:"Data"})," and ",(0,r.jsx)(t.code,{children:"DataFrame"})," structures and attributes, as described in ",(0,r.jsx)(t.a,{href:"/data-types",children:"Langflow data types"}),".\nYou can also emit a rough ",(0,r.jsx)(t.code,{children:"Data"})," or ",(0,r.jsx)(t.code,{children:"DataFrame"}),", and then use downstream components for further refinement, such as a ",(0,r.jsx)(t.strong,{children:"Data Operations"})," component."]}),"\n",(0,r.jsx)(t.h2,{id:"type-convert",children:"Type Convert"}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Type Convert"})," component converts data from one type to another.\nIt supports ",(0,r.jsx)(t.code,{children:"Data"}),", ",(0,r.jsx)(t.code,{children:"DataFrame"}),", and ",(0,r.jsx)(t.code,{children:"Message"})," data types."]}),"\n",(0,r.jsxs)(c.A,{children:[(0,r.jsxs)(l.A,{value:"data",label:"Data",default:!0,children:[(0,r.jsxs)(t.p,{children:["A ",(0,r.jsx)(t.code,{children:"Data"})," object is a structured object that contains a primary ",(0,r.jsx)(t.code,{children:"text"})," key and other key-value pairs:"]}),(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:'"data"',props:{style:{color:"#A5D6FF"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "text"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"User Profile"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "name"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"Charlie Lastname"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "age"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"28",props:{style:{color:"#79C0FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "email"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"charlie.lastname@example.com"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"},",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]}),(0,r.jsxs)(t.p,{children:["The larger context associated with a component's ",(0,r.jsx)(t.code,{children:"data"})," dictionary also identifies which key is the primary ",(0,r.jsx)(t.code,{children:"text_key"}),", and it can provide an optional default value if the primary key isn't specified.\nFor example:"]}),(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"{",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "text_key"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"text"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "data"',props:{style:{color:"#7EE787"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "text"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"User Profile"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "name"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"Charlie Lastname"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "age"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"28",props:{style:{color:"#79C0FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "email"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"charlie.lastname@example.com"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" },",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "default_value"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'""',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"}",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]})]}),(0,r.jsxs)(l.A,{value:"dataframe",label:"DataFrame",children:[(0,r.jsxs)(t.p,{children:["A ",(0,r.jsx)(t.code,{children:"DataFrame"})," is an array that represents a tabular data structure with rows and columns."]}),(0,r.jsxs)(t.p,{children:["It consists of a list (array) of dictionary objects, where each dictionary represents a row.\nEach key in the dictionaries corresponds to a column name.\nFor example, the following ",(0,r.jsx)(t.code,{children:"DataFrame"})," contains two rows with columns for ",(0,r.jsx)(t.code,{children:"name"}),", ",(0,r.jsx)(t.code,{children:"age"}),", and ",(0,r.jsx)(t.code,{children:"email"}),":"]}),(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"[",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "name"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"Charlie Lastname"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "age"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"28",props:{style:{color:"#79C0FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "email"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"charlie.lastname@example.com"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" },",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "name"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"Bobby Othername"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "age"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"25",props:{style:{color:"#79C0FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "email"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"bobby.othername@example.com"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" }",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"]",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]})]}),(0,r.jsx)(l.A,{value:"message",label:"Message",children:(0,r.jsxs)(t.p,{children:["A ",(0,r.jsx)(t.code,{children:"Message"})," is primarily for passing a ",(0,r.jsx)(t.code,{children:"text"})," string, such as",(0,r.jsx)(t.code,{children:'"Name: Charlie Lastname, Age: 28, Email: charlie.lastname@example.com"'}),".\nHowever, the entire ",(0,r.jsx)(t.code,{children:"Message"})," object can include metadata about the message, particularly when used as chat input or output."]})})]}),"\n",(0,r.jsxs)(t.p,{children:["For more information, see ",(0,r.jsx)(t.a,{href:"/data-types",children:"Langflow data types"}),"."]}),"\n",(0,r.jsx)(t.h3,{id:"use-the-type-convert-component-in-a-flow",children:"Use the Type Convert component in a flow"}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Type Convert"})," component is typically used to transform data into a format required by a downstream component.\nFor example, if a component outputs a ",(0,r.jsx)(t.code,{children:"Message"}),", but the following component requires ",(0,r.jsx)(t.code,{children:"Data"}),", then you can use the ",(0,r.jsx)(t.strong,{children:"Type Convert"})," component to reformat the ",(0,r.jsx)(t.code,{children:"Message"})," as ",(0,r.jsx)(t.code,{children:"Data"})," before passing it to the downstream component."]}),"\n",(0,r.jsxs)(t.p,{children:["The following example uses the ",(0,r.jsx)(t.strong,{children:"Type Convert"})," component to convert the ",(0,r.jsx)(t.code,{children:"DataFrame"})," output from a ",(0,r.jsx)(t.strong,{children:"Web Search"})," component into ",(0,r.jsx)(t.code,{children:"Message"})," data that is passed as text input for an LLM:"]}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Create a flow based on the ",(0,r.jsx)(t.strong,{children:"Basic prompting"})," template."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Add a ",(0,r.jsx)(t.strong,{children:"Web Search"})," component to the flow, and then enter a search query, such as ",(0,r.jsx)(t.code,{children:"environmental news"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In the ",(0,r.jsx)(t.strong,{children:"Prompt Template"})," component, replace the contents of the ",(0,r.jsx)(t.strong,{children:"Template"})," field with the following text:"]}),"\n",(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"Answer the user's question using the {context}",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsxs)(t.p,{children:["The curly braces define a ",(0,r.jsx)(t.a,{href:"/components-prompts#define-variables-in-prompts",children:"prompt variable"})," that becomes an input field on the ",(0,r.jsx)(t.strong,{children:"Prompt Template"})," component.\nIn this example, you will use the ",(0,r.jsx)(t.strong,{children:"context"})," field to pass the search results into the template, as explained in the next steps."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Add a ",(0,r.jsx)(t.strong,{children:"Type Convert"})," component to the flow, and then set the ",(0,r.jsx)(t.strong,{children:"Output Type"})," to ",(0,r.jsx)(t.strong,{children:"Message"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["Because the ",(0,r.jsx)(t.strong,{children:"Web Search"})," component's ",(0,r.jsx)(t.code,{children:"DataFrame"})," output is incompatible with the ",(0,r.jsx)(t.strong,{children:"context"})," variable's ",(0,r.jsx)(t.code,{children:"Message"})," input, you must use the ",(0,r.jsx)(t.strong,{children:"Type Convert"})," component to change the ",(0,r.jsx)(t.code,{children:"DataFrame"})," to a ",(0,r.jsx)(t.code,{children:"Message"})," in order to pass the search results to the ",(0,r.jsx)(t.strong,{children:"Prompt Template"})," component."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Connect the additional components to the rest of the flow:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["Connect the ",(0,r.jsx)(t.strong,{children:"Web Search"})," component's output to the ",(0,r.jsx)(t.strong,{children:"Type Convert"})," component's input."]}),"\n",(0,r.jsxs)(t.li,{children:["Connect the ",(0,r.jsx)(t.strong,{children:"Type Convert"})," component's output to the ",(0,r.jsx)(t.strong,{children:"Prompt Template"})," component's ",(0,r.jsx)(t.strong,{children:"context"})," input."]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"Convert web search output to text input",src:n(42547).A+"",width:"4000",height:"1826"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In the ",(0,r.jsx)(t.strong,{children:"Language Model"})," component, add your OpenAI API key."]}),"\n",(0,r.jsxs)(t.p,{children:["If you want to use a different provider or model, edit the ",(0,r.jsx)(t.strong,{children:"Model Provider"}),", ",(0,r.jsx)(t.strong,{children:"Model Name"}),", and ",(0,r.jsx)(t.strong,{children:"API Key"})," fields accordingly."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Click ",(0,r.jsx)(t.strong,{children:"Playground"}),", and then ask something relevant to your search query, such as ",(0,r.jsx)(t.code,{children:"latest news"})," or ",(0,r.jsx)(t.code,{children:"what's the latest research on the environment?"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Result"}),(0,r.jsx)(t.p,{children:"The LLM uses the search results context, your chat message, and it's built-in training data to respond to your question.\nFor example:"}),(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"Here are some of the latest news articles related to the environment:",props:{}}]},{tokens:[{content:"Ozone Pollution and Global Warming: A recent study highlights that ozone pollution is a significant global environmental concern, threatening human health and crop production while exacerbating global warming. Read more",props:{}}]},{tokens:[{content:"...",props:{}}]}],lang:"text"},annotations:[]}]})]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.h3,{id:"type-convert-parameters",children:"Type Convert parameters"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Name"}),(0,r.jsx)(t.th,{children:"Display Name"}),(0,r.jsx)(t.th,{children:"Info"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"input_data"}),(0,r.jsx)(t.td,{children:"Input Data"}),(0,r.jsxs)(t.td,{children:["Input parameter. The data to convert. Accepts ",(0,r.jsx)(t.code,{children:"Data"}),", ",(0,r.jsx)(t.code,{children:"DataFrame"}),", or ",(0,r.jsx)(t.code,{children:"Message"})," input."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"output_type"}),(0,r.jsx)(t.td,{children:"Output Type"}),(0,r.jsxs)(t.td,{children:["Input parameter. The desired output type, as one of ",(0,r.jsx)(t.strong,{children:"Data"}),", ",(0,r.jsx)(t.strong,{children:"DataFrame"})," or ",(0,r.jsx)(t.strong,{children:"Message"}),"."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"output"}),(0,r.jsx)(t.td,{children:"Output"}),(0,r.jsxs)(t.td,{children:["Output parameter. The converted data in the specified format. The output port changes depending on the selected ",(0,r.jsx)(t.strong,{children:"Output Type"}),"."]})]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"legacy-processing-components",children:"Legacy Processing components"}),"\n","\n",(0,r.jsx)(p.Ay,{}),"\n",(0,r.jsx)(t.p,{children:"The following Processing components are in legacy status:"}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Alter Metadata"}),(0,r.jsxs)(t.p,{children:["Replace this legacy component with the ",(0,r.jsxs)(t.a,{href:"#data-operations",children:[(0,r.jsx)(t.strong,{children:"Data Operations"})," component"]}),"."]}),(0,r.jsxs)(t.p,{children:["This component modifies metadata of input objects. It can add new metadata, update existing metadata, and remove specified metadata fields. The component works with both ",(0,r.jsx)(t.code,{children:"Message"})," and ",(0,r.jsx)(t.code,{children:"Data"})," objects, and can also create a new ",(0,r.jsx)(t.code,{children:"Data"})," object from user-provided text."]}),(0,r.jsx)(t.p,{children:"It accepts the following parameters:"}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Name"}),(0,r.jsx)(t.th,{children:"Display Name"}),(0,r.jsx)(t.th,{children:"Info"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"input_value"}),(0,r.jsx)(t.td,{children:"Input"}),(0,r.jsx)(t.td,{children:"Input parameter. Objects to which Metadata should be added."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"text_in"}),(0,r.jsx)(t.td,{children:"User Text"}),(0,r.jsxs)(t.td,{children:["Input parameter. Text input; the value is contained in the 'text' attribute of the ",(0,r.jsx)(t.code,{children:"Data"})," object. Empty text entries are ignored."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"metadata"}),(0,r.jsx)(t.td,{children:"Metadata"}),(0,r.jsx)(t.td,{children:"Input parameter. Metadata to add to each object."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"remove_fields"}),(0,r.jsx)(t.td,{children:"Fields to Remove"}),(0,r.jsx)(t.td,{children:"Input parameter. Metadata fields to remove."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"data"}),(0,r.jsx)(t.td,{children:"Data"}),(0,r.jsx)(t.td,{children:"Output parameter. List of Input objects, each with added metadata."})]})]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Combine Data"}),(0,r.jsxs)(t.p,{children:["Replace this legacy component with the ",(0,r.jsxs)(t.a,{href:"#data-operations",children:[(0,r.jsx)(t.strong,{children:"Data Operations"})," component"]})," or the ",(0,r.jsxs)(t.a,{href:"/components-logic#loop",children:[(0,r.jsx)(t.strong,{children:"Loop"})," component"]}),"."]}),(0,r.jsxs)(t.p,{children:["This component combines multiple data sources into a single unified ",(0,r.jsx)(t.code,{children:"Data"})," object."]}),(0,r.jsxs)(t.p,{children:["The component iterates through a list of ",(0,r.jsx)(t.code,{children:"Data"})," objects, merging them into a single ",(0,r.jsx)(t.code,{children:"Data"})," object (",(0,r.jsx)(t.code,{children:"merged_data"}),").\nIf the input list is empty, it returns an empty data object.\nIf there's only one input data object, it returns that object unchanged."]}),(0,r.jsx)(t.p,{children:"The merging process uses the addition operator to combine data objects."})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Combine Text"}),(0,r.jsxs)(t.p,{children:["Replace this legacy component with the ",(0,r.jsxs)(t.a,{href:"#data-operations",children:[(0,r.jsx)(t.strong,{children:"Data Operations"})," component"]}),"."]}),(0,r.jsxs)(t.p,{children:["This component concatenates two text inputs into a single text chunk using a specified delimiter, outputting a ",(0,r.jsx)(t.code,{children:"Message"})," object with the combined text."]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Create Data"}),(0,r.jsxs)(t.p,{children:["Replace this legacy component with the ",(0,r.jsxs)(t.a,{href:"#data-operations",children:[(0,r.jsx)(t.strong,{children:"Data Operations"})," component"]}),"."]}),(0,r.jsxs)(t.p,{children:["This component dynamically creates a ",(0,r.jsx)(t.code,{children:"Data"})," object with a specified number of fields and a text key."]}),(0,r.jsx)(t.p,{children:"It accepts the following parameters:"}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Name"}),(0,r.jsx)(t.th,{children:"Display Name"}),(0,r.jsx)(t.th,{children:"Info"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"number_of_fields"}),(0,r.jsx)(t.td,{children:"Number of Fields"}),(0,r.jsx)(t.td,{children:"Input parameter. The number of fields to be added to the record."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"text_key"}),(0,r.jsx)(t.td,{children:"Text Key"}),(0,r.jsx)(t.td,{children:"Input parameter. Key that identifies the field to be used as the text content."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"text_key_validator"}),(0,r.jsx)(t.td,{children:"Text Key Validator"}),(0,r.jsxs)(t.td,{children:["Input parameter. If enabled, checks if the given ",(0,r.jsx)(t.code,{children:"Text Key"})," is present in the given ",(0,r.jsx)(t.code,{children:"Data"}),"."]})]})]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Extract Key"}),(0,r.jsxs)(t.p,{children:["Replace this legacy component with the ",(0,r.jsxs)(t.a,{href:"#data-operations",children:[(0,r.jsx)(t.strong,{children:"Data Operations"})," component"]}),"."]}),(0,r.jsxs)(t.p,{children:["This component extracts a specific key from a ",(0,r.jsx)(t.code,{children:"Data"})," object and returns the value associated with that key."]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Data to DataFrame/Data to Message"}),(0,r.jsxs)(t.p,{children:["Replace these legacy components with newer Processing components, such as the ",(0,r.jsxs)(t.a,{href:"#data-operations",children:[(0,r.jsx)(t.strong,{children:"Data Operations"})," component"]})," and ",(0,r.jsxs)(t.a,{href:"#type-convert",children:[(0,r.jsx)(t.strong,{children:"Type Convert"})," component"]}),"."]}),(0,r.jsxs)(t.p,{children:["These components converted one or more ",(0,r.jsx)(t.code,{children:"Data"})," objects into a ",(0,r.jsx)(t.code,{children:"DataFrame"})," or ",(0,r.jsx)(t.code,{children:"Message"})," object."]}),(0,r.jsxs)(t.p,{children:["For the ",(0,r.jsx)(t.strong,{children:"Data to DataFrame"})," component, each ",(0,r.jsx)(t.code,{children:"Data"})," object corresponds to one row in the resulting ",(0,r.jsx)(t.code,{children:"DataFrame"}),".\nFields from the ",(0,r.jsx)(t.code,{children:".data"})," attribute become columns, and the ",(0,r.jsx)(t.code,{children:".text"})," field (if present) is placed in a ",(0,r.jsx)(t.code,{children:"text"})," column."]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Filter Data"}),(0,r.jsxs)(t.p,{children:["Replace this legacy component with the ",(0,r.jsxs)(t.a,{href:"#data-operations",children:[(0,r.jsx)(t.strong,{children:"Data Operations"})," component"]}),"."]}),(0,r.jsxs)(t.p,{children:["This component filters a ",(0,r.jsx)(t.code,{children:"Data"})," object based on a list of keys (",(0,r.jsx)(t.code,{children:"filter_criteria"}),"), returning a new ",(0,r.jsx)(t.code,{children:"Data"})," object (",(0,r.jsx)(t.code,{children:"filtered_data"}),") that contains only the key-value pairs that match the filter criteria."]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Filter Values"}),(0,r.jsxs)(t.p,{children:["Replace this legacy component with the ",(0,r.jsxs)(t.a,{href:"#data-operations",children:[(0,r.jsx)(t.strong,{children:"Data Operations"})," component"]}),"."]}),(0,r.jsx)(t.p,{children:"The Filter values component filters a list of data items based on a specified key, filter value, and comparison operator."}),(0,r.jsx)(t.p,{children:"It accepts the following parameters:"}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Name"}),(0,r.jsx)(t.th,{children:"Display Name"}),(0,r.jsx)(t.th,{children:"Info"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"input_data"}),(0,r.jsx)(t.td,{children:"Input data"}),(0,r.jsx)(t.td,{children:"Input parameter. The list of data items to filter."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"filter_key"}),(0,r.jsx)(t.td,{children:"Filter Key"}),(0,r.jsx)(t.td,{children:"Input parameter. The key to filter on."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"filter_value"}),(0,r.jsx)(t.td,{children:"Filter Value"}),(0,r.jsx)(t.td,{children:"Input parameter. The value to filter by."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"operator"}),(0,r.jsx)(t.td,{children:"Comparison Operator"}),(0,r.jsx)(t.td,{children:"Input parameter. The operator to apply for comparing the values."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"filtered_data"}),(0,r.jsx)(t.td,{children:"Filtered data"}),(0,r.jsx)(t.td,{children:"Output parameter. The resulting list of filtered data items."})]})]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"JSON Cleaner"}),(0,r.jsxs)(t.p,{children:["Replace this legacy component with the ",(0,r.jsxs)(t.a,{href:"#parser",children:[(0,r.jsx)(t.strong,{children:"Parser"})," component"]}),"."]}),(0,r.jsx)(t.p,{children:"This component cleans JSON strings to ensure they are fully compliant with the JSON specification."}),(0,r.jsx)(t.p,{children:"It accepts the following parameters:"}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Name"}),(0,r.jsx)(t.th,{children:"Display Name"}),(0,r.jsx)(t.th,{children:"Info"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"json_str"}),(0,r.jsx)(t.td,{children:"JSON String"}),(0,r.jsx)(t.td,{children:"Input parameter. The JSON string to be cleaned. This can be a raw, potentially malformed JSON string produced by language models or other sources that may not fully comply with JSON specifications."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"remove_control_chars"}),(0,r.jsx)(t.td,{children:"Remove Control Characters"}),(0,r.jsxs)(t.td,{children:["Input parameter. If set to ",(0,r.jsx)(t.code,{children:"True"}),", this option removes control characters (ASCII characters 0-31 and 127) from the JSON string. This can help eliminate invisible characters that might cause parsing issues or make the JSON invalid."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"normalize_unicode"}),(0,r.jsx)(t.td,{children:"Normalize Unicode"}),(0,r.jsx)(t.td,{children:"Input parameter. When enabled, this option normalizes Unicode characters in the JSON string to their canonical composition form (NFC). This ensures consistent representation of Unicode characters across different systems and prevents potential issues with character encoding."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"validate_json"}),(0,r.jsx)(t.td,{children:"Validate JSON"}),(0,r.jsxs)(t.td,{children:["Input parameter. If set to ",(0,r.jsx)(t.code,{children:"True"}),", this option attempts to parse the JSON string to ensure it is well-formed before applying the final repair operation. It raises a ValueError if the JSON is invalid, allowing for early detection of major structural issues in the JSON."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"output"}),(0,r.jsx)(t.td,{children:"Cleaned JSON String"}),(0,r.jsx)(t.td,{children:"Output parameter. The resulting cleaned, repaired, and validated JSON string that fully complies with the JSON specification."})]})]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Message to Data"}),(0,r.jsxs)(t.p,{children:["Replace this legacy component with the ",(0,r.jsxs)(t.a,{href:"#type-convert",children:[(0,r.jsx)(t.strong,{children:"Type Convert"})," component"]}),"."]}),(0,r.jsxs)(t.p,{children:["This component converts ",(0,r.jsx)(t.code,{children:"Message"})," objects to ",(0,r.jsx)(t.code,{children:"Data"})," objects."]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parse DataFrame"}),(0,r.jsxs)(t.p,{children:["Replace this legacy component with the ",(0,r.jsxs)(t.a,{href:"#dataframe-operations",children:[(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," component"]})," or ",(0,r.jsxs)(t.a,{href:"#parser",children:[(0,r.jsx)(t.strong,{children:"Parser"})," component"]}),"."]}),(0,r.jsxs)(t.p,{children:["This component converts ",(0,r.jsx)(t.code,{children:"DataFrame"})," objects into plain text using templates."]}),(0,r.jsx)(t.p,{children:"It accepts the following parameters:"}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Name"}),(0,r.jsx)(t.th,{children:"Display Name"}),(0,r.jsx)(t.th,{children:"Info"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"df"}),(0,r.jsx)(t.td,{children:"DataFrame"}),(0,r.jsx)(t.td,{children:"Input parameter. The DataFrame to convert to text rows."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"template"}),(0,r.jsx)(t.td,{children:"Template"}),(0,r.jsxs)(t.td,{children:["Input parameter. Template for formatting (use ",(0,r.jsx)(t.code,{children:"{column_name}"})," placeholders)."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"sep"}),(0,r.jsx)(t.td,{children:"Separator"}),(0,r.jsx)(t.td,{children:"Input parameter. String to join rows in output."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"text"}),(0,r.jsx)(t.td,{children:"Text"}),(0,r.jsx)(t.td,{children:"Output parameter. All rows combined into single text."})]})]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parse JSON"}),(0,r.jsxs)(t.p,{children:["Replace this legacy component with the ",(0,r.jsxs)(t.a,{href:"#parser",children:[(0,r.jsx)(t.strong,{children:"Parser"})," component"]}),"."]}),(0,r.jsxs)(t.p,{children:["This component converts and extracts JSON fields in ",(0,r.jsx)(t.code,{children:"Message"})," and ",(0,r.jsx)(t.code,{children:"Data"})," objects using JQ queries, then returns ",(0,r.jsx)(t.code,{children:"filtered_data"}),", which is a list of ",(0,r.jsx)(t.code,{children:"Data"})," objects."]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Regex Extractor"}),(0,r.jsxs)(t.p,{children:["Replace this legacy component with the ",(0,r.jsxs)(t.a,{href:"#parser",children:[(0,r.jsx)(t.strong,{children:"Parser"})," component"]}),"."]}),(0,r.jsx)(t.p,{children:"This component extracts patterns in text using regular expressions. It can be used to find and extract specific patterns or information in text."})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Select Data"}),(0,r.jsxs)(t.p,{children:["Replace this legacy component with the ",(0,r.jsxs)(t.a,{href:"#data-operations",children:[(0,r.jsx)(t.strong,{children:"Data Operations"})," component"]}),"."]}),(0,r.jsxs)(t.p,{children:["This component selects a single ",(0,r.jsx)(t.code,{children:"Data"})," object from a list."]}),(0,r.jsx)(t.p,{children:"It accepts the following parameters:"}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Name"}),(0,r.jsx)(t.th,{children:"Display Name"}),(0,r.jsx)(t.th,{children:"Info"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"data_list"}),(0,r.jsx)(t.td,{children:"Data List"}),(0,r.jsx)(t.td,{children:"Input parameter. List of data to select from"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"data_index"}),(0,r.jsx)(t.td,{children:"Data Index"}),(0,r.jsx)(t.td,{children:"Input parameter. Index of the data to select"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"selected_data"}),(0,r.jsx)(t.td,{children:"Selected Data"}),(0,r.jsxs)(t.td,{children:["Output parameter. The selected ",(0,r.jsx)(t.code,{children:"Data"})," object."]})]})]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Update Data"}),(0,r.jsxs)(t.p,{children:["Replace this legacy component with the ",(0,r.jsxs)(t.a,{href:"#data-operations",children:[(0,r.jsx)(t.strong,{children:"Data Operations"})," component"]}),"."]}),(0,r.jsx)(t.p,{children:"This component dynamically updates or appends data with specified fields."}),(0,r.jsx)(t.p,{children:"It accepts the following parameters:"}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Name"}),(0,r.jsx)(t.th,{children:"Display Name"}),(0,r.jsx)(t.th,{children:"Info"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"old_data"}),(0,r.jsx)(t.td,{children:"Data"}),(0,r.jsx)(t.td,{children:"Input parameter. The records to update."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"number_of_fields"}),(0,r.jsx)(t.td,{children:"Number of Fields"}),(0,r.jsx)(t.td,{children:"Input parameter. The number of fields to add. The maximum is 15."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"text_key"}),(0,r.jsx)(t.td,{children:"Text Key"}),(0,r.jsx)(t.td,{children:"Input parameter. The key for text content."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"text_key_validator"}),(0,r.jsx)(t.td,{children:"Text Key Validator"}),(0,r.jsx)(t.td,{children:"Input parameter. Validates the text key presence."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"data"}),(0,r.jsx)(t.td,{children:"Data"}),(0,r.jsx)(t.td,{children:"Output parameter. The updated Data objects."})]})]})]})]})]})}function b(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(y,{...e})}):y(e)}function D(e,t){throw new Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}},42547:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/component-type-convert-and-web-search-1eef7b9a7c1a243f4a08d9717728d0e1.png"},46445:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/component-data-operations-select-key-80bade862d29f2851b01ee26413d495f.png"},49823:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/component-split-text-fec2b1abb28e0852c8a172bbeb164b2c.png"},66539:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/component-lambda-filter-76cd345c52fa41a59dcfac0205dc3068.png"},72736:(e,t,n)=>{n.d(t,{Ay:()=>i,RM:()=>o});var s=n(74848),r=n(28453);const o=[];function a(e){const t={code:"code",p:"p",...(0,r.R)(),...e.components};return(0,s.jsxs)(t.p,{children:["If your template includes literal text and variables, you can use double curly braces to escape literal curly braces in the template and prevent interpretation of that text as a variable.\nFor example: ",(0,s.jsx)(t.code,{children:"This is a template with {{literal text in curly braces}} and a {variable}"}),"."]})}function i(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}},82798:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/component-structured-output-23458b0d29eed6d092b557c7aaf6ab2c.png"},88103:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/component-batch-run-19c94fbb0646b2731b37013b84dff1f6.png"},96218:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/component-parser-1d1d72593f02991e5b14b6b1c112a744.png"},99e3:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/component-python-interpreter-1ef9e7dec643a216fd5e83c2139d09c9.png"}}]); \ No newline at end of file diff --git a/assets/js/7819cc1c.514330cd.js b/assets/js/7819cc1c.514330cd.js deleted file mode 100644 index 57d8006c9a..0000000000 --- a/assets/js/7819cc1c.514330cd.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[6006],{9898:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/component-llm-router-1b417082a0208a70065bc177a78fab67.png"},11470:(e,t,n)=>{n.d(t,{A:()=>v});var s=n(96540),r=n(18215),o=n(23104),a=n(56347),i=n(205),c=n(57485),l=n(31682),d=n(70679);function h(e){return s.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,s.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)})?.filter(Boolean)??[]}function p(e){const{values:t,children:n}=e;return(0,s.useMemo)(()=>{const e=t??function(e){return h(e).map(({props:{value:e,label:t,attributes:n,default:s}})=>({value:e,label:t,attributes:n,default:s}))}(n);return function(e){const t=(0,l.XI)(e,(e,t)=>e.value===t.value);if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map(e=>e.value).join(", ")}" found in . Every value needs to be unique.`)}(e),e},[t,n])}function x({value:e,tabValues:t}){return t.some(t=>t.value===e)}function u({queryString:e=!1,groupId:t}){const n=(0,a.W6)(),r=function({queryString:e=!1,groupId:t}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:e,groupId:t});return[(0,c.aZ)(r),(0,s.useCallback)(e=>{if(!r)return;const t=new URLSearchParams(n.location.search);t.set(r,e),n.replace({...n.location,search:t.toString()})},[r,n])]}function m(e){const{defaultValue:t,queryString:n=!1,groupId:r}=e,o=p(e),[a,c]=(0,s.useState)(()=>function({defaultValue:e,tabValues:t}){if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(e){if(!x({value:e,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${t.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const n=t.find(e=>e.default)??t[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:o})),[l,h]=u({queryString:n,groupId:r}),[m,j]=function({groupId:e}){const t=function(e){return e?`docusaurus.tab.${e}`:null}(e),[n,r]=(0,d.Dv)(t);return[n,(0,s.useCallback)(e=>{t&&r.set(e)},[t,r])]}({groupId:r}),g=(()=>{const e=l??m;return x({value:e,tabValues:o})?e:null})();(0,i.A)(()=>{g&&c(g)},[g]);return{selectedValue:a,selectValue:(0,s.useCallback)(e=>{if(!x({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);c(e),h(e),j(e)},[h,j,o]),tabValues:o}}var j=n(92303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=n(74848);function y({className:e,block:t,selectedValue:n,selectValue:s,tabValues:a}){const i=[],{blockElementScrollPositionUntilNextRender:c}=(0,o.a_)(),l=e=>{const t=e.currentTarget,r=i.indexOf(t),o=a[r].value;o!==n&&(c(t),s(o))},d=e=>{let t=null;switch(e.key){case"Enter":l(e);break;case"ArrowRight":{const n=i.indexOf(e.currentTarget)+1;t=i[n]??i[0];break}case"ArrowLeft":{const n=i.indexOf(e.currentTarget)-1;t=i[n]??i[i.length-1];break}}t?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.A)("tabs",{"tabs--block":t},e),children:a.map(({value:e,label:t,attributes:s})=>(0,f.jsx)("li",{role:"tab",tabIndex:n===e?0:-1,"aria-selected":n===e,ref:e=>{i.push(e)},onKeyDown:d,onClick:l,...s,className:(0,r.A)("tabs__item",g.tabItem,s?.className,{"tabs__item--active":n===e}),children:t??e},e))})}function b({lazy:e,children:t,selectedValue:n}){const o=(Array.isArray(t)?t:[t]).filter(Boolean);if(e){const e=o.find(e=>e.props.value===n);return e?(0,s.cloneElement)(e,{className:(0,r.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:o.map((e,t)=>(0,s.cloneElement)(e,{key:t,hidden:e.props.value!==n}))})}function D(e){const t=m(e);return(0,f.jsxs)("div",{className:(0,r.A)("tabs-container",g.tabList),children:[(0,f.jsx)(y,{...t,...e}),(0,f.jsx)(b,{...t,...e})]})}function v(e){const t=(0,j.A)();return(0,f.jsx)(D,{...e,children:h(e.children)},String(t))}},13533:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/component-dataframe-operations-031488ccf4e3d3378f8842f0ea10682c.png"},17886:(e,t,n)=>{n.d(t,{A:()=>o});n(96540);var s=n(64058),r=n(74848);function o({name:e,...t}){const n=s[e];return n?(0,r.jsx)(n,{...t}):null}},19365:(e,t,n)=>{n.d(t,{A:()=>a});n(96540);var s=n(18215);const r={tabItem:"tabItem_Ymn6"};var o=n(74848);function a({children:e,hidden:t,className:n}){return(0,o.jsx)("div",{role:"tabpanel",className:(0,s.A)(r.tabItem,n),hidden:t,children:e})}},31929:(e,t,n)=>{n.d(t,{Ay:()=>c,RM:()=>a});var s=n(74848),r=n(28453),o=n(17886);const a=[];function i(e){const t={a:"a",p:"p",strong:"strong",...(0,r.R)(),...e.components};return(0,s.jsxs)(t.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,s.jsx)(o.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,s.jsx)(t.strong,{children:"Controls"})," in the ",(0,s.jsx)(t.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function c(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(i,{...e})}):i(e)}},36813:(e,t,n)=>{n.d(t,{Ay:()=>c,RM:()=>a});var s=n(74848),r=n(28453),o=n(17886);const a=[];function i(e){const t={a:"a",p:"p",strong:"strong",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(t.p,{children:["Legacy components are longer supported and can be removed in a future release.\nYou can continue to use them in existing flows, but it is recommended that you replace them with supported components as soon as possible.\nSuggested replacements are included in the ",(0,s.jsx)(t.strong,{children:"Legacy"})," banner on components in your flows.\nThey are also given in release notes and Langflow documentation whenever possible."]}),"\n",(0,s.jsxs)(t.p,{children:["If you aren't sure how to replace a legacy component, ",(0,s.jsx)(o.A,{name:"Search","aria-hidden":"true"})," ",(0,s.jsx)(t.strong,{children:"Search"})," for components by provider, service, or component name.\nThe component may have been deprecated in favor of a completely new component, a similar component, or a new version of the same component in a different category."]}),"\n",(0,s.jsxs)(t.p,{children:["If there is no obvious replacement, consider whether another component can be adapted to your use case.\nFor example, many ",(0,s.jsx)(o.A,{name:"Component","aria-hidden":"true"})," ",(0,s.jsx)(t.strong,{children:"Core components"})," provide generic functionality that can support multiple providers and use cases, such as the ",(0,s.jsxs)(t.a,{href:"/components-data#api-request",children:[(0,s.jsx)(t.strong,{children:"API Request"})," component"]}),"."]}),"\n",(0,s.jsxs)(t.p,{children:["If neither of these options are viable, you could use the legacy component's code to create your own custom component, or ",(0,s.jsx)(t.a,{href:"/contributing-github-issues",children:"start a discussion"})," about the legacy component."]}),"\n",(0,s.jsxs)(t.p,{children:["To discourage use of legacy components in new flows, these components are hidden by default.\nIn the visual editor, you can click ",(0,s.jsx)(o.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,s.jsx)(t.strong,{children:"Component settings"})," to toggle the ",(0,s.jsx)(t.strong,{children:"Legacy"})," filter."]})]})}function c(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(i,{...e})}):i(e)}},40966:(e,t,n)=>{n.r(t),n.d(t,{CH:()=>j,assets:()=>m,chCodeConfig:()=>g,contentTitle:()=>u,default:()=>b,frontMatter:()=>x,metadata:()=>s,toc:()=>f});const s=JSON.parse('{"id":"Components/components-processing","title":"Processing components","description":"Processing components process and transform data within a flow.","source":"@site/docs/Components/components-processing.mdx","sourceDirName":"Components","slug":"/components-processing","permalink":"/components-processing","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Processing components","slug":"/components-processing"},"sidebar":"docs","previous":{"title":"Data","permalink":"/components-data"},"next":{"title":"Prompt Template","permalink":"/components-prompts"}}');var r=n(74848),o=n(28453),a=n(24754),i=n(17886),c=n(11470),l=n(19365),d=n(31929),h=n(72736),p=n(36813);const x={title:"Processing components",slug:"/components-processing"},u=void 0,m={},j={annotations:a.hk,Code:a.Cy},g={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},f=[{value:"Prompt Template",id:"prompt-template",level:2},{value:"Batch Run",id:"batch-run",level:2},{value:"Use the Batch Run component in a flow",id:"use-the-batch-run-component-in-a-flow",level:3},{value:"Batch Run parameters",id:"batch-run-parameters",level:3},...d.RM,{value:"Data Operations",id:"data-operations",level:2},{value:"Use the Data Operations component in a flow",id:"use-the-data-operations-component-in-a-flow",level:3},{value:"Data Operations parameters",id:"data-operations-parameters",level:3},{value:"Available data operations",id:"available-data-operations",level:4},{value:"DataFrame Operations",id:"dataframe-operations",level:2},{value:"Use the DataFrame Operations component in a flow",id:"use-the-dataframe-operations-component-in-a-flow",level:3},{value:"DataFrame Operations parameters",id:"dataframe-operations-parameters",level:3},{value:"LLM Router",id:"llm-router",level:2},{value:"LLM Router parameters",id:"llm-router-parameters",level:3},...d.RM,{value:"LLM Router outputs",id:"llm-router-outputs",level:3},{value:"Parser",id:"parser",level:2},{value:"Parsing modes",id:"parsing-modes",level:3},...h.RM,...d.RM,...d.RM,{value:"Test and troubleshoot parsed text",id:"test-and-troubleshoot-parsed-text",level:3},{value:"Python Interpreter",id:"python-interpreter",level:2},{value:"Use the Python Interpreter in a flow",id:"use-the-python-interpreter-in-a-flow",level:3},{value:"Python Interpreter parameters",id:"python-interpreter-parameters",level:3},{value:"Save File",id:"save-file",level:2},{value:"Smart Transform",id:"smart-transform",level:2},{value:"Smart Transform parameters",id:"smart-transform-parameters",level:3},...d.RM,{value:"Split Text",id:"split-text",level:2},{value:"Split Text parameters",id:"split-text-parameters",level:3},...d.RM,{value:"Tokenization errors due to chunk size",id:"chunk-size",level:3},{value:"Other text splitters",id:"other-text-splitters",level:3},{value:"Structured Output",id:"structured-output",level:2},{value:"Use the Structured Output component in a flow",id:"use-the-structured-output-component-in-a-flow",level:3},{value:"Structured Output parameters",id:"structured-output-parameters",level:3},...d.RM,{value:"Output Schema options",id:"output-schema-options",level:4},{value:"Type Convert",id:"type-convert",level:2},{value:"Use the Type Convert component in a flow",id:"use-the-type-convert-component-in-a-flow",level:3},{value:"Type Convert parameters",id:"type-convert-parameters",level:3},{value:"Legacy Processing components",id:"legacy-processing-components",level:2},...p.RM];function y(e){const t={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",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},{Details:s}=t;return j||D("CH",!1),j.Code||D("CH.Code",!0),s||D("Details",!0),(0,r.jsxs)(r.Fragment,{children:[(0,r.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","\n",(0,r.jsx)(t.p,{children:"Processing components process and transform data within a flow.\nThey have many uses, including:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["Feed instructions and context to your LLMs and agents with the ",(0,r.jsxs)(t.a,{href:"#prompt-template",children:[(0,r.jsx)(t.strong,{children:"Prompt Template"})," component"]}),"."]}),"\n",(0,r.jsxs)(t.li,{children:["Extract content from larger chunks of data with a ",(0,r.jsxs)(t.a,{href:"#parser",children:[(0,r.jsx)(t.strong,{children:"Parser"})," component"]}),"."]}),"\n",(0,r.jsxs)(t.li,{children:["Filter data with natural language with the ",(0,r.jsxs)(t.a,{href:"#smart-transform",children:[(0,r.jsx)(t.strong,{children:"Smart Transform"})," component"]}),"."]}),"\n",(0,r.jsxs)(t.li,{children:["Save data to your local machine with the ",(0,r.jsxs)(t.a,{href:"#save-file",children:[(0,r.jsx)(t.strong,{children:"Save File"})," component"]}),"."]}),"\n",(0,r.jsxs)(t.li,{children:["Transform data into a different data type with the ",(0,r.jsxs)(t.a,{href:"#type-convert",children:[(0,r.jsx)(t.strong,{children:"Type Convert"})," component"]})," to pass it between incompatible components."]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"prompt-template",children:"Prompt Template"}),"\n",(0,r.jsxs)(t.p,{children:["See ",(0,r.jsxs)(t.a,{href:"/components-prompts",children:[(0,r.jsx)(t.strong,{children:"Prompt Template"})," component"]}),"."]}),"\n",(0,r.jsx)(t.h2,{id:"batch-run",children:"Batch Run"}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Batch Run"})," component runs a language model over ",(0,r.jsx)(t.em,{children:"each row of one text column"})," in a ",(0,r.jsx)(t.a,{href:"/data-types#dataframe",children:(0,r.jsx)(t.code,{children:"DataFrame"})}),", and then returns a new ",(0,r.jsx)(t.code,{children:"DataFrame"})," with the original text and an LLM response.\nThe output contains the following columns:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:"text_input"}),": The original text from the input ",(0,r.jsx)(t.code,{children:"DataFrame"})]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:"model_response"}),": The model's response for each input"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:"batch_index"}),": The 0-indexed processing order for all rows in the ",(0,r.jsx)(t.code,{children:"DataFrame"})]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:"metadata"})," (optional): Additional information about the processing"]}),"\n"]}),"\n",(0,r.jsx)(t.h3,{id:"use-the-batch-run-component-in-a-flow",children:"Use the Batch Run component in a flow"}),"\n",(0,r.jsxs)(t.p,{children:["If you pass the ",(0,r.jsx)(t.strong,{children:"Batch Run"})," output to a ",(0,r.jsxs)(t.a,{href:"/components-processing#parser",children:[(0,r.jsx)(t.strong,{children:"Parser"})," component"]}),", you can use variables in the parsing template to reference these keys, such as ",(0,r.jsx)(t.code,{children:"{text_input}"})," and ",(0,r.jsx)(t.code,{children:"{model_response}"}),".\nThis is demonstrated in the following example."]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"A batch run component connected to OpenAI and a Parser",src:n(88103).A+"",width:"4000",height:"2728"})}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Connect any language model component to a ",(0,r.jsx)(t.strong,{children:"Batch Run"})," component's ",(0,r.jsx)(t.strong,{children:"Language model"})," port."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Connect ",(0,r.jsx)(t.code,{children:"DataFrame"})," output from another component to the ",(0,r.jsx)(t.strong,{children:"Batch Run"})," component's ",(0,r.jsx)(t.strong,{children:"DataFrame"})," input.\nFor example, you could connect a ",(0,r.jsx)(t.strong,{children:"File"})," component with a CSV file."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In the ",(0,r.jsx)(t.strong,{children:"Batch Run"})," component's ",(0,r.jsx)(t.strong,{children:"Column Name"})," field, enter the name of the column in the incoming ",(0,r.jsx)(t.code,{children:"DataFrame"})," that contains the text to process.\nFor example, if you want to extract text from a ",(0,r.jsx)(t.code,{children:"name"})," column in a CSV file, enter ",(0,r.jsx)(t.code,{children:"name"})," in the ",(0,r.jsx)(t.strong,{children:"Column Name"})," field."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Connect the ",(0,r.jsx)(t.strong,{children:"Batch Run"})," component's ",(0,r.jsx)(t.strong,{children:"Batch Results"})," output to a ",(0,r.jsx)(t.strong,{children:"Parser"})," component's ",(0,r.jsx)(t.strong,{children:"DataFrame"})," input."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Optional: In the ",(0,r.jsx)(t.strong,{children:"Batch Run"})," ",(0,r.jsx)(t.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),", click ",(0,r.jsx)(i.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Controls"}),", enable the ",(0,r.jsx)(t.strong,{children:"System Message"})," parameter, click ",(0,r.jsx)(t.strong,{children:"Close"}),", and then enter an instruction for how you want the LLM to process each cell extracted from the file.\nFor example, ",(0,r.jsx)(t.code,{children:"Create a business card for each name."})]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In the ",(0,r.jsx)(t.strong,{children:"Parser"})," component's ",(0,r.jsx)(t.strong,{children:"Template"})," field, enter a template for processing the ",(0,r.jsx)(t.strong,{children:"Batch Run"})," component's new ",(0,r.jsx)(t.code,{children:"DataFrame"})," columns (",(0,r.jsx)(t.code,{children:"text_input"}),", ",(0,r.jsx)(t.code,{children:"model_response"}),", and ",(0,r.jsx)(t.code,{children:"batch_index"}),"):"]}),"\n",(0,r.jsxs)(t.p,{children:["For example, this template uses three columns from the resulting, post-batch ",(0,r.jsx)(t.code,{children:"DataFrame"}),":"]}),"\n",(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"record_number: {batch_index}, name: {text_input}, summary: {model_response}",props:{}}]}],lang:"text"},annotations:[]}]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["To test the processing, click the ",(0,r.jsx)(t.strong,{children:"Parser"})," component, click ",(0,r.jsx)(i.A,{name:"Play","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Run component"}),", and then click ",(0,r.jsx)(i.A,{name:"TextSearch","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Inspect output"})," to view the final ",(0,r.jsx)(t.code,{children:"DataFrame"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["You can also connect a ",(0,r.jsx)(t.strong,{children:"Chat Output"})," component to the ",(0,r.jsx)(t.strong,{children:"Parser"})," component if you want to see the output in the ",(0,r.jsx)(t.strong,{children:"Playground"}),"."]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.h3,{id:"batch-run-parameters",children:"Batch Run parameters"}),"\n",(0,r.jsx)(d.Ay,{}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Name"}),(0,r.jsx)(t.th,{children:"Type"}),(0,r.jsx)(t.th,{children:"Description"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"model"}),(0,r.jsx)(t.td,{children:"HandleInput"}),(0,r.jsx)(t.td,{children:"Input parameter. Connect the 'Language Model' output from a language model component. Required."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"system_message"}),(0,r.jsx)(t.td,{children:"MultilineInput"}),(0,r.jsx)(t.td,{children:"Input parameter. A multi-line system instruction for all rows in the DataFrame."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"df"}),(0,r.jsx)(t.td,{children:"DataFrameInput"}),(0,r.jsx)(t.td,{children:"Input parameter. The DataFrame whose column is treated as text messages, as specified by 'column_name'. Required."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"column_name"}),(0,r.jsx)(t.td,{children:"MessageTextInput"}),(0,r.jsx)(t.td,{children:"Input parameter. The name of the DataFrame column to treat as text messages. If empty, all columns are formatted in TOML."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"output_column_name"}),(0,r.jsx)(t.td,{children:"MessageTextInput"}),(0,r.jsxs)(t.td,{children:["Input parameter. Name of the column where the model's response is stored. Default=",(0,r.jsx)(t.code,{children:"model_response"}),"."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"enable_metadata"}),(0,r.jsx)(t.td,{children:"BoolInput"}),(0,r.jsxs)(t.td,{children:["Input parameter. If ",(0,r.jsx)(t.code,{children:"True"}),", add metadata to the output DataFrame."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"batch_results"}),(0,r.jsx)(t.td,{children:"DataFrame"}),(0,r.jsx)(t.td,{children:"Output parameter. A DataFrame with all original columns plus the model's response column."})]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"data-operations",children:"Data Operations"}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Data Operations"})," component performs operations on ",(0,r.jsx)(t.a,{href:"/data-types#data",children:(0,r.jsx)(t.code,{children:"Data"})})," objects, including extracting, filtering, and editing keys and values in the ",(0,r.jsx)(t.code,{children:"Data"}),".\nFor all options, see ",(0,r.jsx)(t.a,{href:"#available-data-operations",children:"Available data operations"}),".\nThe output is a new ",(0,r.jsx)(t.code,{children:"Data"})," object containing the modified data after running the selected operation."]}),"\n",(0,r.jsx)(t.h3,{id:"use-the-data-operations-component-in-a-flow",children:"Use the Data Operations component in a flow"}),"\n",(0,r.jsxs)(t.p,{children:["The following example demonstrates how to use a ",(0,r.jsx)(t.strong,{children:"Data Operations"})," component in a flow using data from a webhook payload:"]}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Create a flow with a ",(0,r.jsx)(t.strong,{children:"Webhook"})," component and a ",(0,r.jsx)(t.strong,{children:"Data Operations"})," component, and then connect the ",(0,r.jsx)(t.strong,{children:"Webhook"})," component's output to the ",(0,r.jsx)(t.strong,{children:"Data Operations"})," component's ",(0,r.jsx)(t.strong,{children:"Data"})," input."]}),"\n",(0,r.jsxs)(t.p,{children:["All operations in the ",(0,r.jsx)(t.strong,{children:"Data Operations"})," component require at least one ",(0,r.jsx)(t.code,{children:"Data"})," input from another component.\nIf the preceding component doesn't produce ",(0,r.jsx)(t.code,{children:"Data"})," output, you can use another component, such as the ",(0,r.jsx)(t.strong,{children:"Type Convert"})," component, to reformat the data before passing it to the ",(0,r.jsx)(t.strong,{children:"Data Operations"})," component.\nAlternatively, you could consider using a component that is designed to process the original data type, such as the ",(0,r.jsx)(t.strong,{children:"Parser"})," or ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," components."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In the ",(0,r.jsx)(t.strong,{children:"Operations"})," field, select the operation you want to perform on the incoming ",(0,r.jsx)(t.code,{children:"Data"}),".\nFor this example, select the ",(0,r.jsx)(t.strong,{children:"Select Keys"})," operation."]}),"\n",(0,r.jsx)(t.admonition,{type:"tip",children:(0,r.jsxs)(t.p,{children:["You can select only one operation.\nIf you need to perform multiple operations on the data, you can chain multiple ",(0,r.jsx)(t.strong,{children:"Data Operations"})," components together to execute each operation in sequence.\nFor more complex multi-step operations, consider using a component like the ",(0,r.jsx)(t.strong,{children:"Smart Transform"})," component."]})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Under ",(0,r.jsx)(t.strong,{children:"Select Keys"}),", add keys for ",(0,r.jsx)(t.code,{children:"name"}),", ",(0,r.jsx)(t.code,{children:"username"}),", and ",(0,r.jsx)(t.code,{children:"email"}),".\nClick ",(0,r.jsx)(i.A,{name:"Plus","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Add more"})," to add a field for each key."]}),"\n",(0,r.jsxs)(t.p,{children:["For this example, assume that the webhook will receive consistent payloads that always contain ",(0,r.jsx)(t.code,{children:"name"}),", ",(0,r.jsx)(t.code,{children:"username"}),", and ",(0,r.jsx)(t.code,{children:"email"})," keys.\nThe ",(0,r.jsx)(t.strong,{children:"Select Keys"})," operation extracts the value of these keys from each incoming payload."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Optional: If you want to view the output in the ",(0,r.jsx)(t.strong,{children:"Playground"}),", connect the ",(0,r.jsx)(t.strong,{children:"Data Operations"})," component's output to a ",(0,r.jsx)(t.strong,{children:"Chat Output"})," component."]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"A flow with Webhook, Data Operations, and Chat Output components",src:n(46445).A+"",width:"4000",height:"1920"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["To test the flow, send the following request to your flow's webhook endpoint.\nFor more information about the webhook endpoint, see ",(0,r.jsx)(t.a,{href:"/webhook",children:"Trigger flows with webhooks"}),"."]}),"\n",(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"curl ",props:{style:{color:"#FFA657"}}},{content:"-X ",props:{style:{color:"#79C0FF"}}},{content:'POST "http://',props:{style:{color:"#A5D6FF"}}},{content:"$LANGFLOW_SERVER_URL",props:{style:{color:"#C9D1D9"}}},{content:"/api/v1/webhook/",props:{style:{color:"#A5D6FF"}}},{content:"$FLOW_ID",props:{style:{color:"#C9D1D9"}}},{content:'" ',props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:"-H ",props:{style:{color:"#C9D1D9"}}},{content:'"Content-Type: application/json" ',props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:"-H ",props:{style:{color:"#C9D1D9"}}},{content:'"x-api-key: ',props:{style:{color:"#A5D6FF"}}},{content:"$LANGFLOW_API_KEY",props:{style:{color:"#C9D1D9"}}},{content:'" ',props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:"-d ",props:{style:{color:"#C9D1D9"}}},{content:"'{",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "id": 1,',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "name": "Leanne Graham",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "username": "Bret",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "email": "Sincere@april.biz",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "address": {',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "street": "Main Street",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "suite": "Apt. 556",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "city": "Springfield",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "zipcode": "92998-3874",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "geo": {',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "lat": "-37.3159",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "lng": "81.1496"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" }",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" },",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "phone": "1-770-736-8031 x56442",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "website": "hildegard.org",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "company": {',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "name": "Acme-Corp",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "catchPhrase": "Multi-layered client-server neural-net",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "bs": "harness real-time e-markets"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" }",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"}'",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["To view the ",(0,r.jsx)(t.code,{children:"Data"})," resulting from the ",(0,r.jsx)(t.strong,{children:"Select Keys"})," operation, do one of the following:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["If you attached a ",(0,r.jsx)(t.strong,{children:"Chat Output"})," component, open the ",(0,r.jsx)(t.strong,{children:"Playground"})," to see the result as a chat message."]}),"\n",(0,r.jsxs)(t.li,{children:["Click ",(0,r.jsx)(i.A,{name:"TextSearch","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Inspect output"})," on the ",(0,r.jsx)(t.strong,{children:"Data Operations"})," component."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.h3,{id:"data-operations-parameters",children:"Data Operations parameters"}),"\n",(0,r.jsxs)(t.p,{children:["Many parameters are conditional based on the selected ",(0,r.jsx)(t.strong,{children:"Operation"})," (",(0,r.jsx)(t.code,{children:"operation"}),")."]}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Name"}),(0,r.jsx)(t.th,{children:"Display Name"}),(0,r.jsx)(t.th,{children:"Info"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"data"}),(0,r.jsx)(t.td,{children:"Data"}),(0,r.jsxs)(t.td,{children:["Input parameter. The ",(0,r.jsx)(t.code,{children:"Data"})," object to operate on."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"operation"}),(0,r.jsx)(t.td,{children:"Operation"}),(0,r.jsxs)(t.td,{children:["Input parameter. The operation to perform on the data. See ",(0,r.jsx)(t.a,{href:"#available-data-operations",children:"Available data operations"})]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"select_keys_input"}),(0,r.jsx)(t.td,{children:"Select Keys"}),(0,r.jsx)(t.td,{children:"Input parameter. A list of keys to select from the data."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"filter_key"}),(0,r.jsx)(t.td,{children:"Filter Key"}),(0,r.jsx)(t.td,{children:"Input parameter. The key to filter by."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"operator"}),(0,r.jsx)(t.td,{children:"Comparison Operator"}),(0,r.jsx)(t.td,{children:"Input parameter. The operator to apply for comparing values."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"filter_values"}),(0,r.jsx)(t.td,{children:"Filter Values"}),(0,r.jsx)(t.td,{children:"Input parameter. A list of values to filter by."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"append_update_data"}),(0,r.jsx)(t.td,{children:"Append or Update"}),(0,r.jsx)(t.td,{children:"Input parameter. The data to append or update the existing data with."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"remove_keys_input"}),(0,r.jsx)(t.td,{children:"Remove Keys"}),(0,r.jsx)(t.td,{children:"Input parameter. A list of keys to remove from the data."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"rename_keys_input"}),(0,r.jsx)(t.td,{children:"Rename Keys"}),(0,r.jsx)(t.td,{children:"Input parameter. A list of keys to rename in the data."})]})]})]}),"\n",(0,r.jsx)(t.h4,{id:"available-data-operations",children:"Available data operations"}),"\n",(0,r.jsxs)(t.p,{children:["Options for the ",(0,r.jsx)(t.code,{children:"operations"})," input parameter are as follows.\nAll operations act on an incoming ",(0,r.jsx)(t.code,{children:"Data"})," object."]}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Name"}),(0,r.jsx)(t.th,{children:"Required Inputs"}),(0,r.jsx)(t.th,{children:"Process"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Select Keys"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"select_keys_input"})}),(0,r.jsx)(t.td,{children:"Selects specific keys from the data."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Literal Eval"}),(0,r.jsx)(t.td,{children:"None"}),(0,r.jsx)(t.td,{children:"Evaluates string values as Python literals."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Combine"}),(0,r.jsx)(t.td,{children:"None"}),(0,r.jsx)(t.td,{children:"Combines multiple data objects into one."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Filter Values"}),(0,r.jsxs)(t.td,{children:[(0,r.jsx)(t.code,{children:"filter_key"}),", ",(0,r.jsx)(t.code,{children:"filter_values"}),", ",(0,r.jsx)(t.code,{children:"operator"})]}),(0,r.jsx)(t.td,{children:"Filters data based on key-value pair."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Append or Update"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"append_update_data"})}),(0,r.jsx)(t.td,{children:"Adds or updates key-value pairs."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Remove Keys"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"remove_keys_input"})}),(0,r.jsx)(t.td,{children:"Removes specified keys from the data."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Rename Keys"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"rename_keys_input"})}),(0,r.jsx)(t.td,{children:"Renames keys in the data."})]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"dataframe-operations",children:"DataFrame Operations"}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," component performs operations on ",(0,r.jsx)(t.a,{href:"/data-types#dataframe",children:(0,r.jsx)(t.code,{children:"DataFrame"})})," (table) rows and columns, including schema changes, record changes, sorting, and filtering.\nFor all options, see ",(0,r.jsx)(t.a,{href:"#dataframe-operations-parameters",children:"DataFrame Operations parameters"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["The output is a new ",(0,r.jsx)(t.code,{children:"DataFrame"})," containing the modified data after running the selected operation."]}),"\n",(0,r.jsx)(t.h3,{id:"use-the-dataframe-operations-component-in-a-flow",children:"Use the DataFrame Operations component in a flow"}),"\n",(0,r.jsxs)(t.p,{children:["The following steps explain how to configure a ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," component in a flow.\nYou can follow along with an example or use your own flow.\nThe only requirement is that the preceding component must create ",(0,r.jsx)(t.code,{children:"DataFrame"})," output that you can pass to the ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," component."]}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Create a new flow or use an existing flow."}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Example: API response extraction flow"}),(0,r.jsxs)(t.p,{children:["The following example flow uses five components to extract ",(0,r.jsx)(t.code,{children:"Data"})," from an API response, transform it to a ",(0,r.jsx)(t.code,{children:"DataFrame"}),", and then perform further processing on the tabular data using a ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," component.\nThe sixth component, ",(0,r.jsx)(t.strong,{children:"Chat Output"}),", is optional in this example.\nIt only serves as a convenient way for you to view the final output in the ",(0,r.jsx)(t.strong,{children:"Playground"}),", rather than inspecting the component logs."]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"A flow that ingests an API response, extracts it to a DataFrame with a Smart Transform component, and the processes it through a DataFrame Operations component",src:n(13533).A+"",width:"4000",height:"2120"})}),(0,r.jsxs)(t.p,{children:["If you want to use this example to test the ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," component, do the following:"]}),(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Create a flow with the following components:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.strong,{children:"API Request"})}),"\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.strong,{children:"Language Model"})}),"\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.strong,{children:"Smart Transform"})}),"\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.strong,{children:"Type Convert"})}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Configure the ",(0,r.jsxs)(t.a,{href:"#smart-transform",children:[(0,r.jsx)(t.strong,{children:"Smart Transform"})," component"]})," and its dependencies:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"API Request"}),": Configure the ",(0,r.jsxs)(t.a,{href:"/components-data#api-request",children:[(0,r.jsx)(t.strong,{children:"API Request"})," component"]})," to get JSON data from an endpoint of your choice, and then connect the ",(0,r.jsx)(t.strong,{children:"API Response"})," output to the ",(0,r.jsx)(t.strong,{children:"Smart Transform"})," component's ",(0,r.jsx)(t.strong,{children:"Data"})," input."]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Language Model"}),": Select your preferred provider and model, and then enter a valid API key.\nChange the output to ",(0,r.jsx)(t.strong,{children:"Language Model"}),", and then connect the ",(0,r.jsx)(t.code,{children:"LanguageModel"})," output to the ",(0,r.jsx)(t.strong,{children:"Smart Transform"})," component's ",(0,r.jsx)(t.strong,{children:"Language Model"})," input."]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Smart Transform"}),": In the ",(0,r.jsx)(t.strong,{children:"Instructions"})," field, enter natural language instructions to extract data from the API response.\nYour instructions depend on the response content and desired outcome.\nFor example, if the response contains a large ",(0,r.jsx)(t.code,{children:"result"})," field, you might provide instructions like ",(0,r.jsx)(t.code,{children:"explode the result field out into a Data object"}),"."]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Convert the ",(0,r.jsx)(t.strong,{children:"Smart Transform"})," component's ",(0,r.jsx)(t.code,{children:"Data"})," output to ",(0,r.jsx)(t.code,{children:"DataFrame"}),":"]}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["Connect the ",(0,r.jsx)(t.strong,{children:"Filtered Data"})," output to the ",(0,r.jsx)(t.strong,{children:"Type Convert"})," component's ",(0,r.jsx)(t.strong,{children:"Data"})," input."]}),"\n",(0,r.jsxs)(t.li,{children:["Set the ",(0,r.jsx)(t.strong,{children:"Type Convert"})," component's ",(0,r.jsx)(t.strong,{children:"Output Type"})," to ",(0,r.jsx)(t.strong,{children:"DataFrame"}),"."]}),"\n"]}),"\n"]}),"\n"]}),(0,r.jsxs)(t.p,{children:["Now the flow is ready for you to add the ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," component."]})]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Add a ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," component to the flow, and then connect ",(0,r.jsx)(t.code,{children:"DataFrame"})," output from another component to the ",(0,r.jsx)(t.strong,{children:"DataFrame"})," input."]}),"\n",(0,r.jsxs)(t.p,{children:["All operations in the ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," component require at least one ",(0,r.jsx)(t.code,{children:"DataFrame"})," input from another component.\nIf a component doesn't produce ",(0,r.jsx)(t.code,{children:"DataFrame"})," output, you can use another component, such as the ",(0,r.jsx)(t.strong,{children:"Type Convert"})," component, to reformat the data before passing it to the ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," component.\nAlternatively, you could consider using a component that is designed to process the original data type, such as the ",(0,r.jsx)(t.strong,{children:"Parser"})," or ",(0,r.jsx)(t.strong,{children:"Data Operations"})," components."]}),"\n",(0,r.jsxs)(t.p,{children:["If you are following along with the example flow, connect the ",(0,r.jsx)(t.strong,{children:"Type Convert"})," component's ",(0,r.jsx)(t.strong,{children:"DataFrame Output"})," port to the ",(0,r.jsx)(t.strong,{children:"DataFrame"})," input."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In the ",(0,r.jsx)(t.strong,{children:"Operations"})," field, select the operation you want to perform on the incoming ",(0,r.jsx)(t.code,{children:"DataFrame"}),".\nFor example, the ",(0,r.jsx)(t.strong,{children:"Filter"})," operation filters the rows based on a specified column and value."]}),"\n",(0,r.jsx)(t.admonition,{type:"tip",children:(0,r.jsxs)(t.p,{children:["You can select only one operation.\nIf you need to perform multiple operations on the data, you can chain multiple ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," components together to execute each operation in sequence.\nFor more complex multi-step operations, like dramatic schema changes or pivots, consider using an LLM-powered component, like the ",(0,r.jsx)(t.strong,{children:"Structured Output"})," or ",(0,r.jsx)(t.strong,{children:"Smart Transform"})," component, as a replacement or preparation for the ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," component."]})}),"\n",(0,r.jsxs)(t.p,{children:["If you're following along with the example flow, select any operation that you want to apply to the data that was extracted by the ",(0,r.jsx)(t.strong,{children:"Smart Transform"})," component.\nTo view the contents of the incoming ",(0,r.jsx)(t.code,{children:"DataFrame"}),", click ",(0,r.jsx)(i.A,{name:"Play","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Run component"})," on the ",(0,r.jsx)(t.strong,{children:"Type Convert"})," component, and then ",(0,r.jsx)(i.A,{name:"TextSearch","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Inspect output"}),".\nIf the ",(0,r.jsx)(t.code,{children:"DataFrame"})," seems malformed, click ",(0,r.jsx)(i.A,{name:"TextSearch","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Inspect output"})," on each upstream component to determine where the error occurs, and then modify your flow's configuration as needed.\nFor example, if the ",(0,r.jsx)(t.strong,{children:"Smart Transform"})," component didn't extract the expected fields, modify your instructions or verify that the given fields are present in the ",(0,r.jsx)(t.strong,{children:"API Response"})," output."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Configure the operation's parameters.\nThe specific parameters depend on the selected operation.\nFor example, if you select the ",(0,r.jsx)(t.strong,{children:"Filter"})," operation, you must define a filter condition using the ",(0,r.jsx)(t.strong,{children:"Column Name"}),", ",(0,r.jsx)(t.strong,{children:"Filter Value"}),", and ",(0,r.jsx)(t.strong,{children:"Filter Operator"})," parameters.\nFor more information, see ",(0,r.jsx)(t.a,{href:"#dataframe-operations-parameters",children:"DataFrame Operations parameters"})]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["To test the flow, click ",(0,r.jsx)(i.A,{name:"Play","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Run component"})," on the ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," component, and then click ",(0,r.jsx)(i.A,{name:"TextSearch","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Inspect output"})," to view the new ",(0,r.jsx)(t.code,{children:"DataFrame"})," created from the ",(0,r.jsx)(t.strong,{children:"Filter"})," operation."]}),"\n",(0,r.jsxs)(t.p,{children:["If you want to view the output in the ",(0,r.jsx)(t.strong,{children:"Playground"}),", connect the ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," component's output to a ",(0,r.jsx)(t.strong,{children:"Chat Output"})," component, rerun the ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," component, and then click ",(0,r.jsx)(t.strong,{children:"Playground"}),"."]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.p,{children:["For another example, see ",(0,r.jsx)(t.a,{href:"/components-logic#conditional-looping",children:"Conditional looping"}),"."]}),"\n",(0,r.jsx)(t.h3,{id:"dataframe-operations-parameters",children:"DataFrame Operations parameters"}),"\n",(0,r.jsxs)(t.p,{children:["Most ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," parameters are conditional because they only apply to specific operations."]}),"\n",(0,r.jsxs)(t.p,{children:["The only permanent parameters are ",(0,r.jsx)(t.strong,{children:"DataFrame"})," (",(0,r.jsx)(t.code,{children:"df"}),"), which is the ",(0,r.jsx)(t.code,{children:"DataFrame"})," input, and ",(0,r.jsx)(t.strong,{children:"Operation"})," (",(0,r.jsx)(t.code,{children:"operation"}),"), which is the operation to perform on the ",(0,r.jsx)(t.code,{children:"DataFrame"}),".\nOnce you select an operation, the conditional parameters for that operation appear on the ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," component."]}),"\n",(0,r.jsxs)(c.A,{children:[(0,r.jsxs)(l.A,{value:"addcolumn",label:"Add Column",default:!0,children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Add Column"})," operation allows you to add a new column to the ",(0,r.jsx)(t.code,{children:"DataFrame"})," with a constant value."]}),(0,r.jsxs)(t.p,{children:["The parameters are ",(0,r.jsx)(t.strong,{children:"New Column Name"})," (",(0,r.jsx)(t.code,{children:"new_column_name"}),") and ",(0,r.jsx)(t.strong,{children:"New Column Value"})," (",(0,r.jsx)(t.code,{children:"new_column_value"}),")."]})]}),(0,r.jsx)(l.A,{value:"dropcolumn",label:"Drop Column",children:(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Drop Column"})," operation allows you to remove a column from the ",(0,r.jsx)(t.code,{children:"DataFrame"}),", specified by ",(0,r.jsx)(t.strong,{children:"Column Name"})," (",(0,r.jsx)(t.code,{children:"column_name"}),")."]})}),(0,r.jsxs)(l.A,{value:"filter",label:"Filter",children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Filter"})," operation allows you to filter the ",(0,r.jsx)(t.code,{children:"DataFrame"})," based on a specified condition.\nThe output is a ",(0,r.jsx)(t.code,{children:"DataFrame"})," containing only the rows that matched the filter condition."]}),(0,r.jsx)(t.p,{children:"Provide the following parameters:"}),(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Column Name"})," (",(0,r.jsx)(t.code,{children:"column_name"}),"): The name of the column to filter on."]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Filter Value"})," (",(0,r.jsx)(t.code,{children:"filter_value"}),"): The value to filter on."]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Filter Operator"})," (",(0,r.jsx)(t.code,{children:"filter_operator"}),"): The operator to use for filtering, one of ",(0,r.jsx)(t.code,{children:"equals"})," (default), ",(0,r.jsx)(t.code,{children:"not equals"}),", ",(0,r.jsx)(t.code,{children:"contains"}),", ",(0,r.jsx)(t.code,{children:"starts with"}),", ",(0,r.jsx)(t.code,{children:"ends with"}),", ",(0,r.jsx)(t.code,{children:"greater than"}),", or ",(0,r.jsx)(t.code,{children:"less than"}),"."]}),"\n"]})]}),(0,r.jsxs)(l.A,{value:"head",label:"Head",children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Head"})," operation allows you to retrieve the first ",(0,r.jsx)(t.code,{children:"n"})," rows of the ",(0,r.jsx)(t.code,{children:"DataFrame"}),", where ",(0,r.jsx)(t.code,{children:"n"})," is set in ",(0,r.jsx)(t.strong,{children:"Number of Rows"})," (",(0,r.jsx)(t.code,{children:"num_rows"}),").\nThe default is ",(0,r.jsx)(t.code,{children:"5"}),"."]}),(0,r.jsxs)(t.p,{children:["The output is a ",(0,r.jsx)(t.code,{children:"DataFrame"})," containing only the selected rows."]})]}),(0,r.jsxs)(l.A,{value:"renamecolumn",label:"Rename Column",children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Rename Column"})," operation allows you to rename an existing column in the ",(0,r.jsx)(t.code,{children:"DataFrame"}),"."]}),(0,r.jsxs)(t.p,{children:["The parameters are ",(0,r.jsx)(t.strong,{children:"Column Name"})," (",(0,r.jsx)(t.code,{children:"column_name"}),"), which is the current name, and ",(0,r.jsx)(t.strong,{children:"New Column Name"})," (",(0,r.jsx)(t.code,{children:"new_column_name"}),")."]})]}),(0,r.jsxs)(l.A,{value:"replacevalue",label:"Replace Value",children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Replace Value"})," operation allows you to replace values in a specific column of the ",(0,r.jsx)(t.code,{children:"DataFrame"}),".\nThis operation replaces a target value with a new value.\nAll cells matching the target value are replaced with the new value in the new ",(0,r.jsx)(t.code,{children:"DataFrame"})," output."]}),(0,r.jsx)(t.p,{children:"Provide the following parameters:"}),(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Column Name"})," (",(0,r.jsx)(t.code,{children:"column_name"}),"): The name of the column to modify."]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Value to Replace"})," (",(0,r.jsx)(t.code,{children:"replace_value"}),"): The value that you want to replace."]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Replacement Value"})," (",(0,r.jsx)(t.code,{children:"replacement_value"}),"): The new value to use."]}),"\n"]})]}),(0,r.jsxs)(l.A,{value:"selectcolumns",label:"Select Columns",children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Select Columns"})," operation allows you to select one or more specific columns from the ",(0,r.jsx)(t.code,{children:"DataFrame"}),"."]}),(0,r.jsxs)(t.p,{children:["Provide a list of column names in ",(0,r.jsx)(t.strong,{children:"Columns to Select"})," (",(0,r.jsx)(t.code,{children:"columns_to_select"}),").\nIn the visual editor, click ",(0,r.jsx)(i.A,{name:"Plus","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Add More"})," to add multiple fields, and then enter one column name in each field."]}),(0,r.jsxs)(t.p,{children:["The output is a ",(0,r.jsx)(t.code,{children:"DataFrame"})," containing only the specified columns."]})]}),(0,r.jsxs)(l.A,{value:"sort",label:"Sort",children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Sort"})," operation allows you to sort the ",(0,r.jsx)(t.code,{children:"DataFrame"})," on a specific column in ascending or descending order."]}),(0,r.jsx)(t.p,{children:"Provide the following parameters:"}),(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Column Name"})," (",(0,r.jsx)(t.code,{children:"column_name"}),"): The name of the column to sort on."]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Sort Ascending"})," (",(0,r.jsx)(t.code,{children:"ascending"}),"): Whether to sort in ascending or descending order. If enabled (",(0,r.jsx)(t.code,{children:"true"}),"), sorts in ascending order; if disabled (",(0,r.jsx)(t.code,{children:"false"}),"), sorts in descending order. Default: Enabled (",(0,r.jsx)(t.code,{children:"true"}),")"]}),"\n"]})]}),(0,r.jsxs)(l.A,{value:"tail",label:"Tail",children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Tail"})," operation allows you to retrieve the last ",(0,r.jsx)(t.code,{children:"n"})," rows of the ",(0,r.jsx)(t.code,{children:"DataFrame"}),", where ",(0,r.jsx)(t.code,{children:"n"})," is set in ",(0,r.jsx)(t.strong,{children:"Number of Rows"})," (",(0,r.jsx)(t.code,{children:"num_rows"}),").\nThe default is ",(0,r.jsx)(t.code,{children:"5"}),"."]}),(0,r.jsxs)(t.p,{children:["The output is a ",(0,r.jsx)(t.code,{children:"DataFrame"})," containing only the selected rows."]})]}),(0,r.jsxs)(l.A,{value:"dropduplicates",label:"Drop Duplicates",children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Drop Duplicates"})," operation removes rows from the ",(0,r.jsx)(t.code,{children:"DataFrame"})," by identifying all duplicate values within a single column."]}),(0,r.jsxs)(t.p,{children:["The only parameter is the ",(0,r.jsx)(t.strong,{children:"Column Name"})," (",(0,r.jsx)(t.code,{children:"column_name"}),")."]}),(0,r.jsxs)(t.p,{children:["When the flow runs, all rows with duplicate values in the given column are removed.\nThe output is a ",(0,r.jsx)(t.code,{children:"DataFrame"})," containing all columns from the original ",(0,r.jsx)(t.code,{children:"DataFrame"}),", but only rows with non-duplicate values."]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"llm-router",children:"LLM Router"}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"LLM Router"})," component routes requests to the most appropriate LLM based on ",(0,r.jsx)(t.a,{href:"https://openrouter.ai/docs/quickstart",children:"OpenRouter"})," model specifications."]}),"\n",(0,r.jsxs)(t.p,{children:["To use the component in a flow, you connect multiple language model components to the ",(0,r.jsx)(t.strong,{children:"LLM Router"})," components.\nOne model is the judge LLM that analyzes input messages to understand the evaluation context, selects the most appropriate model from the other attached LLMs, and then routes the input to the selected model.\nThe selected model processes the input, and then returns the generated response."]}),"\n",(0,r.jsx)(t.p,{children:"The following example flow has three language model components.\nOne is the judge LLM, and the other two are in the LLM pool for request routing.\nThe input and output components create a seamless chat interaction where you send a message and receive a response without any user awareness of the underlying routing."}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"LLM Router component",src:n(9898).A+"",width:"3316",height:"2492"})}),"\n",(0,r.jsx)(t.h3,{id:"llm-router-parameters",children:"LLM Router parameters"}),"\n",(0,r.jsx)(d.Ay,{}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Name"}),(0,r.jsx)(t.th,{children:"Display Name"}),(0,r.jsx)(t.th,{children:"Info"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"models"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Language Models"})}),(0,r.jsxs)(t.td,{children:["Input parameter. Connect ",(0,r.jsx)(t.a,{href:"/data-types#languagemodel",children:(0,r.jsx)(t.code,{children:"LanguageModel"})})," output from multiple ",(0,r.jsx)(t.a,{href:"/components-models",children:"language model components"})," to create a pool of models. The ",(0,r.jsx)(t.code,{children:"judge_llm"})," selects models from this pool when routing requests. The first model you connect is the default model if there is a problem with model selection or routing."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"input_value"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Input"})}),(0,r.jsx)(t.td,{children:"Input parameter. The incoming query to be routed to the model selected by the judge LLM."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"judge_llm"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Judge LLM"})}),(0,r.jsxs)(t.td,{children:["Input parameter. Connect ",(0,r.jsx)(t.code,{children:"LanguageModel"})," output from ",(0,r.jsx)(t.em,{children:"one"})," ",(0,r.jsx)(t.strong,{children:"Language Model"})," component to serve as the judge LLM for request routing."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"optimization"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Optimization"})}),(0,r.jsxs)(t.td,{children:["Input parameter. Set a preferred characteristic for model selection by the judge LLM. The options are ",(0,r.jsx)(t.code,{children:"quality"})," (highest response quality), ",(0,r.jsx)(t.code,{children:"speed"})," (fastest response time), ",(0,r.jsx)(t.code,{children:"cost"})," (most cost-effective model), or ",(0,r.jsx)(t.code,{children:"balanced"})," (equal weight for quality, speed, and cost). Default: ",(0,r.jsx)(t.code,{children:"balanced"})]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"use_openrouter_specs"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Use OpenRouter Specs"})}),(0,r.jsx)(t.td,{children:"Input parameter. Whether to fetch model specifications from the OpenRouter API."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsxs)(t.td,{children:["If ",(0,r.jsx)(t.code,{children:"false"}),", only the model name is provided to the judge LLM. Default: Enabled (",(0,r.jsx)(t.code,{children:"true"}),")"]}),(0,r.jsx)(t.td,{}),(0,r.jsx)(t.td,{})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"timeout"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"API Timeout"})}),(0,r.jsxs)(t.td,{children:["Input parameter. Set a timeout duration in seconds for API requests made by the router. Default: ",(0,r.jsx)(t.code,{children:"10"})]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"fallback_to_first"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Fallback to First Model"})}),(0,r.jsxs)(t.td,{children:["Input parameter. Whether to use the first LLM in ",(0,r.jsx)(t.code,{children:"models"})," as a backup if routing fails to reach the selected model. Default: Enabled (",(0,r.jsx)(t.code,{children:"true"}),")"]})]})]})]}),"\n",(0,r.jsx)(t.h3,{id:"llm-router-outputs",children:"LLM Router outputs"}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"LLM Router"})," component provides three output options.\nYou can set the desired output type near the component's output port."]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Output"}),": A ",(0,r.jsx)(t.code,{children:"Message"})," containing the response to the original query as generated by the selected LLM.\nUse this output for regular chat interactions."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Selected Model Info"}),": A ",(0,r.jsx)(t.code,{children:"Data"})," object containing information about the selected model, such as its name and version."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Routing Decision"}),": A ",(0,r.jsx)(t.code,{children:"Message"})," containing the judge model's reasoning for selecting a particular model, including input query length and number of models considered.\nFor example:"]}),"\n",(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"Model Selection Decision:",props:{}}]},{tokens:[{content:"- Selected Model Index: 0",props:{}}]},{tokens:[{content:"- Selected Langflow Model Name: gpt-4o-mini",props:{}}]},{tokens:[{content:"- Selected API Model ID (if resolved): openai/gpt-4o-mini",props:{}}]},{tokens:[{content:"- Optimization Preference: cost",props:{}}]},{tokens:[{content:"- Input Query Length: 27 characters (~5 tokens)",props:{}}]},{tokens:[{content:"- Number of Models Considered: 2",props:{}}]},{tokens:[{content:"- Specifications Source: OpenRouter API",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsx)(t.p,{children:"This is useful for debugging if you feel the judge model isn't selecting the best model."}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"parser",children:"Parser"}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Parser"})," component extracts text from structured data (",(0,r.jsx)(t.code,{children:"DataFrame"})," or ",(0,r.jsx)(t.code,{children:"Data"}),") using a template or direct stringification.\nThe output is a ",(0,r.jsx)(t.code,{children:"Message"})," containing the parsed text."]}),"\n",(0,r.jsxs)(t.p,{children:["This is a versatile component for data extraction and manipulation in your flows.\nFor examples of ",(0,r.jsx)(t.strong,{children:"Parser"})," components in flows, see the following:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:(0,r.jsxs)(t.a,{href:"#batch-run",children:[(0,r.jsx)(t.strong,{children:"Batch Run"})," component example"]})}),"\n",(0,r.jsx)(t.li,{children:(0,r.jsxs)(t.a,{href:"#structured-output",children:[(0,r.jsx)(t.strong,{children:"Structured Output"})," component example"]})}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Financial Report Parser"})," template"]}),"\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.a,{href:"/webhook",children:"Trigger flows with webhooks"})}),"\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.a,{href:"/chat-with-rag",children:"Create a vector RAG chatbot"})}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"A flow that uses a Parser component to extract text from a Structured Output component.",src:n(96218).A+"",width:"4000",height:"2202"})}),"\n",(0,r.jsx)(t.h3,{id:"parsing-modes",children:"Parsing modes"}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Parser"})," component has two modes: ",(0,r.jsx)(t.strong,{children:"Parser"})," and ",(0,r.jsx)(t.strong,{children:"Stringify"}),"."]}),"\n",(0,r.jsxs)(c.A,{children:[(0,r.jsxs)(l.A,{value:"template",label:"Parser (template) mode",default:!0,children:[(0,r.jsxs)(t.p,{children:["In ",(0,r.jsx)(t.strong,{children:"Parser"})," mode, you create a template for text output that can include literal strings and variables for extracted keys."]}),(0,r.jsxs)(t.p,{children:["Use curly braces to define variables anywhere in the template.\nVariables must match keys in the ",(0,r.jsx)(t.code,{children:"DataFrame"})," or ",(0,r.jsx)(t.code,{children:"Data"})," input, such as column names.\nFor example, ",(0,r.jsx)(t.code,{children:"{name}"})," extracts the value of a ",(0,r.jsx)(t.code,{children:"name"})," key.\nFor more information about the content and structure of ",(0,r.jsx)(t.code,{children:"DataFrame"})," and ",(0,r.jsx)(t.code,{children:"Data"})," objects, see ",(0,r.jsx)(t.a,{href:"/data-types",children:"Langflow data types"}),"."]}),(0,r.jsx)(h.Ay,{}),(0,r.jsxs)(t.p,{children:["When the flow runs, the ",(0,r.jsx)(t.strong,{children:"Parser"})," component iterates over the input, producing a ",(0,r.jsx)(t.code,{children:"Message"})," for each parsed item.\nFor example, parsing a ",(0,r.jsx)(t.code,{children:"DataFrame"})," creates a ",(0,r.jsx)(t.code,{children:"Message"})," for each row, populated with the unique values from that row."]}),(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Employee summary template"}),(0,r.jsx)(t.p,{children:"This example template extracts employee data into a natural language summary about an employee's hire date and current role:"}),(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"{employee_first_name} {employee_last_name} was hired on {start_date}.",props:{}}]},{tokens:[{content:"Their current position is {job_title} ({grade}).",props:{}}]}],lang:"text"},annotations:[]}]}),(0,r.jsxs)(t.p,{children:["The resulting ",(0,r.jsx)(t.code,{children:"Message"})," output replaces the variables with the corresponding extracted values.\nFor example:"]}),(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"Renlo Kai was hired on 11-July-2017.",props:{}}]},{tokens:[{content:"Their current position is Software Engineer (Principal).",props:{}}]}],lang:"text"},annotations:[]}]})]}),(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Employee profile template"}),(0,r.jsx)(t.p,{children:"This example template uses Markdown syntax and extracted employee data to create an employee profile:"}),(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"# Employee Profile",props:{}}]},{tokens:[{content:"## Personal Information",props:{}}]},{tokens:[{content:"- **Name:** {name}",props:{}}]},{tokens:[{content:"- **ID:** {id}",props:{}}]},{tokens:[{content:"- **Email:** {email}",props:{}}]}],lang:"text"},annotations:[]}]}),(0,r.jsxs)(t.p,{children:["When the flow runs, the ",(0,r.jsx)(t.strong,{children:"Parser"})," component iterates over each row of the ",(0,r.jsx)(t.code,{children:"DataFrame"}),", populating the template's variables with the appropriate extracted values.\nThe resulting text for each row is output as a ",(0,r.jsx)(t.a,{href:"/data-types#message",children:(0,r.jsx)(t.code,{children:"Message"})}),"."]})]}),(0,r.jsxs)(t.p,{children:["The following parameters are available in ",(0,r.jsx)(t.strong,{children:"Parser"})," mode."]}),(0,r.jsx)(d.Ay,{}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Name"}),(0,r.jsx)(t.th,{children:"Display Name"}),(0,r.jsx)(t.th,{children:"Info"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"input_data"}),(0,r.jsx)(t.td,{children:"Data or DataFrame"}),(0,r.jsxs)(t.td,{children:["Input parameter. The ",(0,r.jsx)(t.code,{children:"Data"})," or ",(0,r.jsx)(t.code,{children:"DataFrame"})," input to parse."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"pattern"}),(0,r.jsx)(t.td,{children:"Template"}),(0,r.jsxs)(t.td,{children:["Input parameter. The formatting template using plaintext and variables for keys (",(0,r.jsx)(t.code,{children:"{KEY_NAME}"}),"). See the preceding examples for more information."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"sep"}),(0,r.jsx)(t.td,{children:"Separator"}),(0,r.jsxs)(t.td,{children:["Input parameter. A string defining the separator for rows or lines. Default: ",(0,r.jsx)(t.code,{children:"\\n"})," (new line)."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"clean_data"}),(0,r.jsx)(t.td,{children:"Clean Data"}),(0,r.jsxs)(t.td,{children:["Whether to remove empty rows and lines in each cell or key of the ",(0,r.jsx)(t.code,{children:"DataFrame"})," or ",(0,r.jsx)(t.code,{children:"Data"})," input. Default: Enabled (",(0,r.jsx)(t.code,{children:"true"}),")"]})]})]})]})]}),(0,r.jsxs)(l.A,{value:"stringify",label:"Stringify mode",children:[(0,r.jsxs)(t.p,{children:["Use ",(0,r.jsx)(t.strong,{children:"Stringify"})," mode to convert the entire input directly to text.\nThis mode doesn't support templates or key selection."]}),(0,r.jsxs)(t.p,{children:["The following parameters are available in ",(0,r.jsx)(t.strong,{children:"Stringify"})," mode."]}),(0,r.jsx)(d.Ay,{}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Name"}),(0,r.jsx)(t.th,{children:"Display Name"}),(0,r.jsx)(t.th,{children:"Info"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"input_data"}),(0,r.jsx)(t.td,{children:"Data or DataFrame"}),(0,r.jsxs)(t.td,{children:["Input parameter. The ",(0,r.jsx)(t.code,{children:"Data"})," or ",(0,r.jsx)(t.code,{children:"DataFrame"})," input to parse."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"sep"}),(0,r.jsx)(t.td,{children:"Separator"}),(0,r.jsxs)(t.td,{children:["Input parameter. A string defining the separator for rows or lines. Default: ",(0,r.jsx)(t.code,{children:"\\n"})," (new line)."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"clean_data"}),(0,r.jsx)(t.td,{children:"Clean Data"}),(0,r.jsxs)(t.td,{children:["Whether to remove empty rows and lines in each cell or key of the ",(0,r.jsx)(t.code,{children:"DataFrame"})," or ",(0,r.jsx)(t.code,{children:"Data"})," input. Default: Enabled (",(0,r.jsx)(t.code,{children:"true"}),")"]})]})]})]})]})]}),"\n",(0,r.jsx)(t.h3,{id:"test-and-troubleshoot-parsed-text",children:"Test and troubleshoot parsed text"}),"\n",(0,r.jsxs)(t.p,{children:["To test the ",(0,r.jsx)(t.strong,{children:"Parser"})," component, click ",(0,r.jsx)(i.A,{name:"Play","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Run component"}),", and then click ",(0,r.jsx)(i.A,{name:"TextSearch","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Inspect output"})," to see the ",(0,r.jsx)(t.code,{children:"Message"})," output with the parsed text.\nYou can also connect a ",(0,r.jsx)(t.strong,{children:"Chat Output"})," component if you want to view the output in the ",(0,r.jsx)(t.strong,{children:"Playground"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["If the ",(0,r.jsx)(t.code,{children:"Message"})," output from the ",(0,r.jsx)(t.strong,{children:"Parser"})," component has empty or unexpected values, there might be a mapping error between the input and the parsing mode, the input has empty values, or the input isn't suitable for plaintext extraction."]}),"\n",(0,r.jsxs)(t.p,{children:["For example, assume you use the following template to parse a ",(0,r.jsx)(t.code,{children:"DataFrame"}),":"]}),"\n",(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"{employee_first_name} {employee_last_name} is a {job_title} ({grade}).",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsxs)(t.p,{children:["The following ",(0,r.jsx)(t.code,{children:"Message"})," could result from parsing a row where ",(0,r.jsx)(t.code,{children:"employee_first_name"})," was empty and ",(0,r.jsx)(t.code,{children:"grade"})," was ",(0,r.jsx)(t.code,{children:"null"}),":"]}),"\n",(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:" Smith is a Software Engineer (null).",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsx)(t.p,{children:"To troubleshoot missing or unexpected values, you can do the following:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Make sure the variables in your template map to keys in the incoming ",(0,r.jsx)(t.code,{children:"Data"})," or ",(0,r.jsx)(t.code,{children:"DataFrame"}),".\nTo see the data being passed directly to the ",(0,r.jsx)(t.strong,{children:"Parser"})," component, click ",(0,r.jsx)(i.A,{name:"TextSearch","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Inspect output"})," on the component that is sending data to the ",(0,r.jsx)(t.strong,{children:"Parser"})," component."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Check the source data for missing or incorrect values.\nThere are several ways you can address these inconsistencies:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Rectify the source data directly."}),"\n",(0,r.jsxs)(t.li,{children:["Use other components to amend or filter anomalies before passing the data to the ",(0,r.jsx)(t.strong,{children:"Parser"})," component.\nThere are many components you can use for this depending on your goal, such as the ",(0,r.jsx)(t.strong,{children:"Data Operations"}),", ",(0,r.jsx)(t.strong,{children:"Structured Output"}),", and ",(0,r.jsx)(t.strong,{children:"Smart Transform"})," components."]}),"\n",(0,r.jsxs)(t.li,{children:["Enable the ",(0,r.jsx)(t.strong,{children:"Parser"})," component's ",(0,r.jsx)(t.strong,{children:"Clean Data"})," parameter to skip empty rows or lines."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"python-interpreter",children:"Python Interpreter"}),"\n",(0,r.jsx)(t.p,{children:"This component allows you to execute Python code with imported packages."}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Python Interpreter"})," component can only import packages that are already installed in your Langflow environment.\nIf you encounter an ",(0,r.jsx)(t.code,{children:"ImportError"})," when trying to use a package, you need to install it first."]}),"\n",(0,r.jsxs)(t.p,{children:["To install custom packages, see ",(0,r.jsx)(t.a,{href:"/install-custom-dependencies",children:"Install custom dependencies"}),"."]}),"\n",(0,r.jsx)(t.h3,{id:"use-the-python-interpreter-in-a-flow",children:"Use the Python Interpreter in a flow"}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["To use this component in a flow, in the ",(0,r.jsx)(t.strong,{children:"Global Imports"})," field, add the packages you want to import as a comma-separated list, such as ",(0,r.jsx)(t.code,{children:"math,pandas"}),".\nAt least one import is required."]}),"\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:"Python Code"})," field, enter the Python code you want to execute. Use ",(0,r.jsx)(t.code,{children:"print()"})," to see the output."]}),"\n",(0,r.jsxs)(t.li,{children:["Optional: Enable ",(0,r.jsx)(t.strong,{children:"Tool Mode"}),", and then connect the ",(0,r.jsx)(t.strong,{children:"Python Interpreter"})," component to an ",(0,r.jsx)(t.strong,{children:"Agent"})," component as a tool.\nFor example, connect a ",(0,r.jsx)(t.strong,{children:"Python Interpreter"})," component and a ",(0,r.jsxs)(t.a,{href:"/components-helpers#calculator",children:[(0,r.jsx)(t.strong,{children:"Calculator"})," component"]})," as tools for an ",(0,r.jsx)(t.strong,{children:"Agent"})," component, and then test how it chooses different tools to solve math problems.\n",(0,r.jsx)(t.img,{alt:"Python Interpreter and Calculator components connected to an Agent component",src:n(99e3).A+"",width:"3988",height:"2928"})]}),"\n",(0,r.jsxs)(t.li,{children:["Ask the agent an easier math question.\nThe ",(0,r.jsx)(t.strong,{children:"Calculator"})," tool can add, subtract, multiple, divide, or perform exponentiation.\nThe agent executes the ",(0,r.jsx)(t.code,{children:"evaluate_expression"})," tool to correctly answer the question."]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:"Result:"}),"\n",(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"Executed evaluate_expression",props:{}}]},{tokens:[{content:"Input:",props:{}}]},{tokens:[{content:"{",props:{}}]},{tokens:[{content:' "expression": "2+5"',props:{}}]},{tokens:[{content:"}",props:{}}]},{tokens:[{content:"Output:",props:{}}]},{tokens:[{content:"{",props:{}}]},{tokens:[{content:' "result": "7"',props:{}}]},{tokens:[{content:"}",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsxs)(t.ol,{start:"5",children:["\n",(0,r.jsxs)(t.li,{children:["Give the agent complete Python code.\nThis example creates a Pandas DataFrame table with the imported ",(0,r.jsx)(t.code,{children:"pandas"})," packages, and returns the square root of the mean squares."]}),"\n"]}),"\n",(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"import",props:{style:{color:"#FF7B72"}}},{content:" pandas ",props:{style:{color:"#C9D1D9"}}},{content:"as",props:{style:{color:"#FF7B72"}}},{content:" pd",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"import",props:{style:{color:"#FF7B72"}}},{content:" math",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"# Create a simple DataFrame",props:{style:{color:"#8B949E"}}}]},{tokens:[{content:"df ",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:" pd.DataFrame({",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" 'numbers'",props:{style:{color:"#A5D6FF"}}},{content:": [",props:{style:{color:"#C9D1D9"}}},{content:"1",props:{style:{color:"#79C0FF"}}},{content:", ",props:{style:{color:"#C9D1D9"}}},{content:"2",props:{style:{color:"#79C0FF"}}},{content:", ",props:{style:{color:"#C9D1D9"}}},{content:"3",props:{style:{color:"#79C0FF"}}},{content:", ",props:{style:{color:"#C9D1D9"}}},{content:"4",props:{style:{color:"#79C0FF"}}},{content:", ",props:{style:{color:"#C9D1D9"}}},{content:"5",props:{style:{color:"#79C0FF"}}},{content:"],",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" 'squares'",props:{style:{color:"#A5D6FF"}}},{content:": [x",props:{style:{color:"#C9D1D9"}}},{content:"**",props:{style:{color:"#FF7B72"}}},{content:"2 ",props:{style:{color:"#79C0FF"}}},{content:"for",props:{style:{color:"#FF7B72"}}},{content:" x ",props:{style:{color:"#C9D1D9"}}},{content:"in ",props:{style:{color:"#FF7B72"}}},{content:"range",props:{style:{color:"#79C0FF"}}},{content:"(",props:{style:{color:"#C9D1D9"}}},{content:"1",props:{style:{color:"#79C0FF"}}},{content:", ",props:{style:{color:"#C9D1D9"}}},{content:"6",props:{style:{color:"#79C0FF"}}},{content:")]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"})",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"# Calculate the square root of the mean",props:{style:{color:"#8B949E"}}}]},{tokens:[{content:"result ",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:" math.sqrt(df[",props:{style:{color:"#C9D1D9"}}},{content:"'squares'",props:{style:{color:"#A5D6FF"}}},{content:"].mean())",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"print",props:{style:{color:"#79C0FF"}}},{content:"(",props:{style:{color:"#C9D1D9"}}},{content:"f",props:{style:{color:"#FF7B72"}}},{content:'"Square root of mean squares: ',props:{style:{color:"#A5D6FF"}}},{content:"{",props:{style:{color:"#79C0FF"}}},{content:"result",props:{style:{color:"#C9D1D9"}}},{content:"}",props:{style:{color:"#79C0FF"}}},{content:'"',props:{style:{color:"#A5D6FF"}}},{content:")",props:{style:{color:"#C9D1D9"}}}]}],lang:"python"},annotations:[]}]}),"\n",(0,r.jsxs)(t.p,{children:["The agent correctly chooses the ",(0,r.jsx)(t.code,{children:"run_python_repl"})," tool to solve the problem."]}),"\n",(0,r.jsx)(t.p,{children:"Result:"}),"\n",(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"Executed run_python_repl",props:{}}]},{tokens:[{content:"",props:{}}]},{tokens:[{content:"Input:",props:{}}]},{tokens:[{content:"",props:{}}]},{tokens:[{content:"{",props:{}}]},{tokens:[{content:" \"python_code\": \"import pandas as pd\\nimport math\\n\\n# Create a simple DataFrame\\ndf = pd.DataFrame({\\n 'numbers': [1, 2, 3, 4, 5],\\n 'squares': [x**2 for x in range(1, 6)]\\n})\\n\\n# Calculate the square root of the mean\\nresult = math.sqrt(df['squares'].mean())\\nprint(f\\\"Square root of mean squares: {result}\\\")\"",props:{}}]},{tokens:[{content:"}",props:{}}]},{tokens:[{content:"Output:",props:{}}]},{tokens:[{content:"",props:{}}]},{tokens:[{content:"{",props:{}}]},{tokens:[{content:' "result": "Square root of mean squares: 3.3166247903554"',props:{}}]},{tokens:[{content:"}",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsxs)(t.p,{children:["If you don't include the package imports in the chat, the agent can still create the table using ",(0,r.jsx)(t.code,{children:"pd.DataFrame"}),", because the ",(0,r.jsx)(t.code,{children:"pandas"})," package is imported globally by the ",(0,r.jsx)(t.strong,{children:"Python Interpreter"})," component in the ",(0,r.jsx)(t.strong,{children:"Global Imports"})," field."]}),"\n",(0,r.jsx)(t.h3,{id:"python-interpreter-parameters",children:"Python Interpreter parameters"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Name"}),(0,r.jsx)(t.th,{children:"Type"}),(0,r.jsx)(t.th,{children:"Description"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"global_imports"}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsxs)(t.td,{children:["Input parameter. A comma-separated list of modules to import globally, such as ",(0,r.jsx)(t.code,{children:"math,pandas,numpy"}),"."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"python_code"}),(0,r.jsx)(t.td,{children:"Code"}),(0,r.jsx)(t.td,{children:"Input parameter. The Python code to execute. Only modules specified in Global Imports can be used."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"results"}),(0,r.jsx)(t.td,{children:"Data"}),(0,r.jsx)(t.td,{children:"Output parameter. The output of the executed Python code, including any printed results or errors."})]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"save-file",children:"Save File"}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Save File"})," component creates a file containing data produced by another component.\nSeveral file formats are supported, and you can store files in ",(0,r.jsx)(t.a,{href:"/memory",children:"Langflow storage"})," or the local file system."]}),"\n",(0,r.jsxs)(t.p,{children:["To configure the ",(0,r.jsx)(t.strong,{children:"Save File"})," component and use it in a flow, do the following:"]}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Connect ",(0,r.jsx)(t.a,{href:"/data-types#dataframe",children:(0,r.jsx)(t.code,{children:"DataFrame"})}),", ",(0,r.jsx)(t.a,{href:"/data-types#data",children:(0,r.jsx)(t.code,{children:"Data"})}),", or ",(0,r.jsx)(t.a,{href:"/data-types#message",children:(0,r.jsx)(t.code,{children:"Message"})})," output from another component to the ",(0,r.jsx)(t.strong,{children:"Save File"})," component's ",(0,r.jsx)(t.strong,{children:"Input"})," port."]}),"\n",(0,r.jsxs)(t.p,{children:["You can connect the same output to multiple ",(0,r.jsx)(t.strong,{children:"Save File"})," components if you want to create multiple files, save the data in different file formats, or save files to multiple locations."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In ",(0,r.jsx)(t.strong,{children:"File Name"}),", enter a file name and an optional path."]}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"File Name"})," parameter controls where the file is saved.\nIt can contain a file name or an entire file path:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Default location"}),": If you only provide a file name, then the file is stored in the Langflow data directory. For example,",(0,r.jsx)(t.code,{children:"~/Library/Caches/langflow/data"})," on macOS."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Subdirectory"}),": To store files in subdirectories, add the path to the ",(0,r.jsx)(t.strong,{children:"File Name"})," parameter.\nIf a given subdirectory doesn't already exist, Langflow automatically creates it.\nFor example, ",(0,r.jsx)(t.code,{children:"files/my_file"})," creates ",(0,r.jsx)(t.code,{children:"my_file"})," in ",(0,r.jsx)(t.code,{children:"/data/files"}),", and it creates the ",(0,r.jsx)(t.code,{children:"files"})," subdirectory if it doesn't already exist."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Absolute or relative path"}),": To store files elsewhere in your environment or local file storage, provide the absolute or relative path to the desired location.\nFor example, ",(0,r.jsx)(t.code,{children:"~/Desktop/my_file"})," saves ",(0,r.jsx)(t.code,{children:"my_file"})," to the desktop."]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.p,{children:["Don't include an extension in the file name.\nIf you do, the extension is treated as part of the file name; it has no impact on the ",(0,r.jsx)(t.strong,{children:"File Format"})," parameter."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In the ",(0,r.jsx)(t.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),", click ",(0,r.jsx)(i.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Controls"}),", select the desired file format, and then click ",(0,r.jsx)(t.strong,{children:"Close"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["The available ",(0,r.jsx)(t.strong,{children:"File Format"})," options depend on the input data type:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.code,{children:"DataFrame"})," can be saved to CSV (default), Excel (requires ",(0,r.jsx)(t.code,{children:"openpyxl"})," ",(0,r.jsx)(t.a,{href:"/install-custom-dependencies",children:"custom dependency"}),"), JSON (fallback default), or Markdown."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.code,{children:"Data"})," can be saved to CSV, Excel (requires ",(0,r.jsx)(t.code,{children:"openpyxl"})," ",(0,r.jsx)(t.a,{href:"/install-custom-dependencies",children:"custom dependency"}),"), JSON (default), or Markdown."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.code,{children:"Message"})," can be saved to TXT, JSON (default), or Markdown."]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.admonition,{title:"Overwrites allowed",type:"warning",children:(0,r.jsxs)(t.p,{children:["If you have multiple ",(0,r.jsx)(t.strong,{children:"Save File"})," components, in one or more flows, with the same file name, path, and extension, the file contains the data from the most recent run only.\nLangflow doesn't block overwrites if a matching file already exists.\nTo avoid unintended overwrites, use unique file names and paths."]})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["To test the ",(0,r.jsx)(t.strong,{children:"Save File"})," component, click ",(0,r.jsx)(i.A,{name:"Play","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Run component"}),", and then click ",(0,r.jsx)(i.A,{name:"TextSearch","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Inspect output"})," to get the filepath where the file was saved."]}),"\n",(0,r.jsxs)(t.p,{children:["The component's literal output is a ",(0,r.jsx)(t.code,{children:"Message"})," containing the original data type, the file name and extension, and the absolute filepath to the file based on the ",(0,r.jsx)(t.strong,{children:"File Name"})," parameter.\nFor example:"]}),"\n",(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"DataFrame saved successfully as 'my_file.csv' at /Users/user.name/Library/Caches/langflow/data/my_file.csv",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsxs)(t.p,{children:["If the ",(0,r.jsx)(t.strong,{children:"File Name"})," contains a subdirectory or other non-default path, this is reflected in the ",(0,r.jsx)(t.code,{children:"Message"})," output.\nFor example, a CSV file with the file name ",(0,r.jsx)(t.code,{children:"~/Desktop/my_file"})," could produce the following output:"]}),"\n",(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"DataFrame saved successfully as '/Users/user.name/Desktop/my_file.csv' at /Users/user.name/Desktop/my_file.csv",props:{}}]}],lang:"text"},annotations:[]}]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Optional: If you want to use the saved file in a flow, you must use an API call or another component to retrieve the file from the given filepath."}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"smart-transform",children:"Smart Transform"}),"\n",(0,r.jsxs)(t.p,{children:["In Langflow version 1.5, this component was renamed from ",(0,r.jsx)(t.strong,{children:"Lambda Filter"})," to ",(0,r.jsx)(t.strong,{children:"Smart Transform"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Smart Transform"})," component uses an LLM to generate a Lambda function to filter or transform structured data based on natural language instructions.\nYou must connect this component to a ",(0,r.jsx)(t.a,{href:"/components-models",children:"language model component"}),", which is used to generate a function based on the natural language instructions you provide in the ",(0,r.jsx)(t.strong,{children:"Instructions"})," parameter.\nThe LLM runs the function against the data input, and then outputs the results as ",(0,r.jsx)(t.a,{href:"/data-types#data",children:(0,r.jsx)(t.code,{children:"Data"})}),"."]}),"\n",(0,r.jsxs)(t.admonition,{type:"tip",children:[(0,r.jsxs)(t.p,{children:["Provide brief, clear instructions, focusing on the desired outcome or specific actions, such as ",(0,r.jsx)(t.code,{children:"Filter the data to only include items where the 'status' is 'active'"}),".\nOne sentence or less is preferred because end punctuation, like periods, can cause errors or unexpected behavior."]}),(0,r.jsxs)(t.p,{children:["If you need to provide more details instructions that aren't directly relevant to the Lambda function, you can input them in the ",(0,r.jsx)(t.strong,{children:"Language Model"})," component's ",(0,r.jsx)(t.strong,{children:"Input"})," field or through a ",(0,r.jsx)(t.strong,{children:"Prompt Template"})," component."]})]}),"\n",(0,r.jsxs)(t.p,{children:["The following example uses the ",(0,r.jsx)(t.strong,{children:"API Request"})," endpoint to pass JSON data from the ",(0,r.jsx)(t.code,{children:"https://jsonplaceholder.typicode.com/users"})," endpoint to the ",(0,r.jsx)(t.strong,{children:"Smart Transform"})," component.\nThen, the ",(0,r.jsx)(t.strong,{children:"Smart Transform"})," component passes the data and the instruction ",(0,r.jsx)(t.code,{children:"extract emails"})," to the attached ",(0,r.jsx)(t.strong,{children:"Language Model"})," component.\nFrom there, the LLM generates a filter function that extracts email addresses from the JSON data, returning the filtered data as chat output."]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"A small flow using a Smart Transform component to extract data from an API response.",src:n(66539).A+"",width:"4000",height:"1796"})}),"\n",(0,r.jsx)(t.h3,{id:"smart-transform-parameters",children:"Smart Transform parameters"}),"\n",(0,r.jsx)(d.Ay,{}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Name"}),(0,r.jsx)(t.th,{children:"Display Name"}),(0,r.jsx)(t.th,{children:"Info"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"data"}),(0,r.jsx)(t.td,{children:"Data"}),(0,r.jsx)(t.td,{children:"Input parameter. The structured data to filter or transform using a Lambda function."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"llm"}),(0,r.jsx)(t.td,{children:"Language Model"}),(0,r.jsxs)(t.td,{children:["Input parameter. Connect ",(0,r.jsx)(t.a,{href:"/data-types#languagemodel",children:(0,r.jsx)(t.code,{children:"LanguageModel"})})," output from a ",(0,r.jsx)(t.strong,{children:"Language Model"})," component."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"filter_instruction"}),(0,r.jsx)(t.td,{children:"Instructions"}),(0,r.jsx)(t.td,{children:"Input parameter. The natural language instructions for how to filter or transform the data. The LLM uses these instructions to create a Lambda function."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"sample_size"}),(0,r.jsx)(t.td,{children:"Sample Size"}),(0,r.jsxs)(t.td,{children:["Input parameter. For large datasets, the number of characters to sample from the dataset head and tail. Only applied if the dataset meets or exceeds ",(0,r.jsx)(t.code,{children:"max_size"}),". Default: ",(0,r.jsx)(t.code,{children:"1000"}),"."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"max_size"}),(0,r.jsx)(t.td,{children:"Max Size"}),(0,r.jsxs)(t.td,{children:["Input parameter. The number of characters for the dataset to be considered large, which triggers sampling by the ",(0,r.jsx)(t.code,{children:"sample_size"})," value. Default: ",(0,r.jsx)(t.code,{children:"30000"}),"."]})]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"split-text",children:"Split Text"}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Split Text"})," component splits data into chunks based on parameters like chunk size and separator.\nIt is often used to chunk data to be tokenized and embedded into vector databases.\nFor examples, see ",(0,r.jsx)(t.a,{href:"/components-embedding-models#use-embedding-model-components-in-a-flow",children:"Use embedding model components in a flow"})," and ",(0,r.jsx)(t.a,{href:"/chat-with-rag",children:"Create a Vector RAG chatbot"}),"."]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"An embedding generation flow that uses a Split Text component to chunk data.",src:n(49823).A+"",width:"4000",height:"2766"})}),"\n",(0,r.jsxs)(t.p,{children:["The component accepts ",(0,r.jsx)(t.code,{children:"Message"}),", ",(0,r.jsx)(t.code,{children:"Data"}),", or ",(0,r.jsx)(t.code,{children:"DataFrame"}),", and then outputs either ",(0,r.jsx)(t.strong,{children:"Chunks"})," or ",(0,r.jsx)(t.strong,{children:"DataFrame"}),".\nThe ",(0,r.jsx)(t.strong,{children:"Chunks"})," output returns a list of ",(0,r.jsx)(t.a,{href:"/data-types#data",children:(0,r.jsx)(t.code,{children:"Data"})})," objects containing individual text chunks.\nThe ",(0,r.jsx)(t.strong,{children:"DataFrame"})," output returns the list of chunks as a structured ",(0,r.jsx)(t.a,{href:"/data-types#dataframe",children:(0,r.jsx)(t.code,{children:"DataFrame"})})," with additional ",(0,r.jsx)(t.code,{children:"text"})," and ",(0,r.jsx)(t.code,{children:"metadata"})," columns."]}),"\n",(0,r.jsx)(t.h3,{id:"split-text-parameters",children:"Split Text parameters"}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Split Text"})," component's parameters control how the text is split into chunks, specifically the ",(0,r.jsx)(t.code,{children:"chunk_size"}),", ",(0,r.jsx)(t.code,{children:"chunk_overlap"}),", and ",(0,r.jsx)(t.code,{children:"separator"})," parameters."]}),"\n",(0,r.jsxs)(t.p,{children:["To test the chunking behavior, add a ",(0,r.jsx)(t.strong,{children:"Text Input"})," or ",(0,r.jsx)(t.strong,{children:"File"})," component with some sample data to chunk, click ",(0,r.jsx)(i.A,{name:"Play","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Run component"})," on the ",(0,r.jsx)(t.strong,{children:"Split Text"})," component, and then click ",(0,r.jsx)(i.A,{name:"TextSearch","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Inspect output"})," to view the list of chunks and their metadata. The ",(0,r.jsx)(t.strong,{children:"text"})," column contains the actual text chunks created from your chunking settings.\nIf the chunks aren't split as you expect, adjust the parameters, rerun the component, and then inspect the new output."]}),"\n",(0,r.jsx)(d.Ay,{}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Name"}),(0,r.jsx)(t.th,{children:"Display Name"}),(0,r.jsx)(t.th,{children:"Info"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"data_inputs"}),(0,r.jsx)(t.td,{children:"Input"}),(0,r.jsxs)(t.td,{children:["Input parameter. The data to split. Input must be in ",(0,r.jsx)(t.code,{children:"Message"}),", ",(0,r.jsx)(t.code,{children:"Data"}),", or ",(0,r.jsx)(t.code,{children:"DataFrame"})," format."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"chunk_overlap"}),(0,r.jsx)(t.td,{children:"Chunk Overlap"}),(0,r.jsxs)(t.td,{children:["Input parameter. The number of characters to overlap between chunks. This helps maintain context across chunks. When a separator is encountered, the overlap is applied at the point of the separator so that the subsequent chunk contains the last ",(0,r.jsx)(t.em,{children:"n"})," characters of the preceding chunk. Default: ",(0,r.jsx)(t.code,{children:"200"}),"."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"chunk_size"}),(0,r.jsx)(t.td,{children:"Chunk Size"}),(0,r.jsxs)(t.td,{children:["Input parameter. The target length for each chunk after splitting. The data is first split by separator, and then chunks smaller than the ",(0,r.jsx)(t.code,{children:"chunk_size"})," are merged up to this limit. However, if the initial separator split produces any chunks larger than the ",(0,r.jsx)(t.code,{children:"chunk_size"}),", those chunks are neither further subdivided nor combined with any smaller chunks; these chunks will be output as-is even though they exceed the ",(0,r.jsx)(t.code,{children:"chunk_size"}),". Default: ",(0,r.jsx)(t.code,{children:"1000"}),". See ",(0,r.jsx)(t.a,{href:"#chunk-size",children:"Tokenization errors due to chunk size"})," for important considerations."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"separator"}),(0,r.jsx)(t.td,{children:"Separator"}),(0,r.jsxs)(t.td,{children:["Input parameter. A string defining a character to split on, such as ",(0,r.jsx)(t.code,{children:"\\n"})," to split on new line characters, ",(0,r.jsx)(t.code,{children:"\\n\\n"})," to split at paragraph breaks, or ",(0,r.jsx)(t.code,{children:"},"})," to split at the end of JSON objects. You can directly provide the separator string, or pass a separator string from another component as ",(0,r.jsx)(t.code,{children:"Message"})," input."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"text_key"}),(0,r.jsx)(t.td,{children:"Text Key"}),(0,r.jsxs)(t.td,{children:["Input parameter. The key to use for the text column that is extracted from the input and then split. Default: ",(0,r.jsx)(t.code,{children:"text"}),"."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"keep_separator"}),(0,r.jsx)(t.td,{children:"Keep Separator"}),(0,r.jsxs)(t.td,{children:["Input parameter. Select how to handle separators in output chunks. If ",(0,r.jsx)(t.code,{children:"False"}),", separators are omitted from output chunks. Options include ",(0,r.jsx)(t.code,{children:"False"})," (remove separators), ",(0,r.jsx)(t.code,{children:"True"})," (keep separators in chunks without preference for placement), ",(0,r.jsx)(t.code,{children:"Start"})," (place separators at the beginning of chunks), or ",(0,r.jsx)(t.code,{children:"End"})," (place separators at the end of chunks). Default: ",(0,r.jsx)(t.code,{children:"False"}),"."]})]})]})]}),"\n",(0,r.jsx)(t.h3,{id:"chunk-size",children:"Tokenization errors due to chunk size"}),"\n",(0,r.jsxs)(t.p,{children:["When using ",(0,r.jsx)(t.strong,{children:"Split Text"})," with embedding models (especially NVIDIA models like ",(0,r.jsx)(t.code,{children:"nvidia/nv-embed-v1"}),"), you may need to use smaller chunk sizes (",(0,r.jsx)(t.code,{children:"500"})," or less) even though the model supports larger token limits.\nThe ",(0,r.jsx)(t.strong,{children:"Split Text"})," component doesn't always enforce the exact chunk size you set, and individual chunks may exceed your specified limit.\nIf you encounter tokenization errors, modify your text splitting strategy by reducing the chunk size, changing the overlap length, or using a more common separator.\nThen, test your configuration by running the flow and inspecting the component's output."]}),"\n",(0,r.jsx)(t.h3,{id:"other-text-splitters",children:"Other text splitters"}),"\n",(0,r.jsxs)(t.p,{children:["See ",(0,r.jsx)(t.a,{href:"/bundles-langchain#text-splitters",children:"LangChain text splitter components"}),"."]}),"\n",(0,r.jsx)(t.h2,{id:"structured-output",children:"Structured Output"}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Structured Output"})," component uses an LLM to transform any input into structured data (",(0,r.jsx)(t.code,{children:"Data"})," or ",(0,r.jsx)(t.code,{children:"DataFrame"}),") using natural language formatting instructions and an output schema definition.\nFor example, you can extract specific details from documents, like email messages or scientific papers."]}),"\n",(0,r.jsx)(t.h3,{id:"use-the-structured-output-component-in-a-flow",children:"Use the Structured Output component in a flow"}),"\n",(0,r.jsxs)(t.p,{children:["To use the ",(0,r.jsx)(t.strong,{children:"Structured Output"})," component in a flow, do the following:"]}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Provide an ",(0,r.jsx)(t.strong,{children:"Input Message"}),", which is the source material from which you want to extract structured data.\nThis can come from practically any component, but it is typically a ",(0,r.jsx)(t.strong,{children:"Chat Input"}),", ",(0,r.jsx)(t.strong,{children:"File"}),", or other component that provides some unstructured or semi-structured input."]}),"\n",(0,r.jsx)(t.admonition,{type:"tip",children:(0,r.jsxs)(t.p,{children:["Not all source material has to become structured output.\nThe power of the ",(0,r.jsx)(t.strong,{children:"Structured Output"})," component is that you can specify the information you want to extract, even if that data isn't explicitly labeled or an exact keyword match.\nThen, the LLM can use your instructions to analyze the source material, extract the relevant data, and format it according to your specifications.\nAny irrelevant source material isn't included in the structured output."]})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Define ",(0,r.jsx)(t.strong,{children:"Format Instructions"})," and an ",(0,r.jsx)(t.strong,{children:"Output Schema"})," to specify the data to extract from the source material and how to structure it in the final ",(0,r.jsx)(t.code,{children:"Data"})," or ",(0,r.jsx)(t.code,{children:"DataFrame"})," output."]}),"\n",(0,r.jsx)(t.p,{children:"The instructions are a prompt that tell the LLM what data to extract, how to format it, how to handle exceptions, and any other instructions relevant to preparing the structured data."}),"\n",(0,r.jsxs)(t.p,{children:["The schema is a table that defines the fields (keys) and data types to organize the data extracted by the LLM into a structured ",(0,r.jsx)(t.code,{children:"Data"})," or ",(0,r.jsx)(t.code,{children:"DataFrame"})," object.\nFor more information, see ",(0,r.jsx)(t.a,{href:"#output-schema-options",children:"Output Schema options"})]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Attach a ",(0,r.jsx)(t.a,{href:"/components-models",children:"language model component"})," that is set to emit ",(0,r.jsx)(t.a,{href:"/data-types#languagemodel",children:(0,r.jsx)(t.code,{children:"LanguageModel"})})," output."]}),"\n",(0,r.jsxs)(t.p,{children:["The LLM uses the ",(0,r.jsx)(t.strong,{children:"Input Message"})," and ",(0,r.jsx)(t.strong,{children:"Format Instructions"})," from the ",(0,r.jsx)(t.strong,{children:"Structured Output"})," component to extract specific pieces of data from the input text.\nThe output schema is applied to the model's response to produce the final ",(0,r.jsx)(t.code,{children:"Data"})," or ",(0,r.jsx)(t.code,{children:"DataFrame"})," structured object."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Optional: Typically, the structured output is passed to downstream components that use the extracted data for other processes, such as the ",(0,r.jsx)(t.strong,{children:"Parser"})," or ",(0,r.jsx)(t.strong,{children:"Data Operations"})," components."]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"A basic flow with Structured Output, Language Model, Type Convert, and Chat Input and Output components.",src:n(82798).A+"",width:"4000",height:"1724"})}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Structured Output example: Financial Report Parser template"}),(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Financial Report Parser"})," template provides an example of how the ",(0,r.jsx)(t.strong,{children:"Structured Output"})," component can be used to extract structured data from unstructured text."]}),(0,r.jsxs)(t.p,{children:["The template's ",(0,r.jsx)(t.strong,{children:"Structured Output"})," component has the following configuration:"]}),(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Input Message"})," comes from a ",(0,r.jsx)(t.strong,{children:"Chat Input"})," component that is preloaded with quotes from sample financial reports"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Format Instructions"})," are as follows:"]}),"\n",(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"You are an AI that extracts structured JSON objects from unstructured text.",props:{}}]},{tokens:[{content:"Use a predefined schema with expected types (str, int, float, bool, dict).",props:{}}]},{tokens:[{content:"Extract ALL relevant instances that match the schema - if multiple patterns exist, capture them all.",props:{}}]},{tokens:[{content:"Fill missing or ambiguous values with defaults: null for missing values.",props:{}}]},{tokens:[{content:"Remove exact duplicates but keep variations that have different field values.",props:{}}]},{tokens:[{content:"Always return valid JSON in the expected format, never throw errors.",props:{}}]},{tokens:[{content:"If multiple objects can be extracted, return them all in the structured format.",props:{}}]}],lang:"text"},annotations:[]}]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Output Schema"})," includes keys for ",(0,r.jsx)(t.code,{children:"EBITDA"}),", ",(0,r.jsx)(t.code,{children:"NET_INCOME"}),", and ",(0,r.jsx)(t.code,{children:"GROSS_PROFIT"}),"."]}),"\n"]}),"\n"]}),(0,r.jsxs)(t.p,{children:["The structured ",(0,r.jsx)(t.code,{children:"Data"})," object is passed to a ",(0,r.jsx)(t.strong,{children:"Parser"})," component that produces a text string by mapping the schema keys to variables in the parsing template:"]}),(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"EBITDA: {EBITDA} , Net Income: {NET_INCOME} , GROSS_PROFIT: {GROSS_PROFIT}",props:{}}]}],lang:"text"},annotations:[]}]}),(0,r.jsxs)(t.p,{children:["When printed to the ",(0,r.jsx)(t.strong,{children:"Playground"}),", the resulting ",(0,r.jsx)(t.code,{children:"Message"})," replaces the variables with the actual values extracted by the ",(0,r.jsx)(t.strong,{children:"Structured Output"})," component. For example:"]}),(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"EBITDA: 900 million , Net Income: 500 million , GROSS_PROFIT: 1.2 billion",props:{}}]}],lang:"text"},annotations:[]}]})]}),"\n",(0,r.jsx)(t.h3,{id:"structured-output-parameters",children:"Structured Output parameters"}),"\n",(0,r.jsx)(d.Ay,{}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Name"}),(0,r.jsx)(t.th,{children:"Type"}),(0,r.jsx)(t.th,{children:"Description"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsxs)(t.td,{children:["Language Model (",(0,r.jsx)(t.code,{children:"llm"}),")"]}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"LanguageModel"})}),(0,r.jsxs)(t.td,{children:["Input parameter. The ",(0,r.jsx)(t.a,{href:"/data-types#languagemodel",children:(0,r.jsx)(t.code,{children:"LanguageModel"})})," output from a ",(0,r.jsx)(t.strong,{children:"Language Model"})," component that defines the LLM to use to analyze, extract, and prepare the structured output."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsxs)(t.td,{children:["Input Message (",(0,r.jsx)(t.code,{children:"input_value"}),")"]}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsx)(t.td,{children:"Input parameter. The input message containing source material for extraction."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsxs)(t.td,{children:["Format Instructions (",(0,r.jsx)(t.code,{children:"system_prompt"}),")"]}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsx)(t.td,{children:"Input parameter. The instructions to the language model for extracting and formatting the output."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsxs)(t.td,{children:["Schema Name (",(0,r.jsx)(t.code,{children:"schema_name"}),")"]}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsxs)(t.td,{children:["Input parameter. An optional title for the ",(0,r.jsx)(t.strong,{children:"Output Schema"}),"."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsxs)(t.td,{children:["Output Schema (",(0,r.jsx)(t.code,{children:"output_schema"}),")"]}),(0,r.jsx)(t.td,{children:"Table"}),(0,r.jsxs)(t.td,{children:["Input parameter. A table describing the schema of the desired structured output, ultimately determining the content of the ",(0,r.jsx)(t.code,{children:"Data"})," or ",(0,r.jsx)(t.code,{children:"DataFrame"})," output. See ",(0,r.jsx)(t.a,{href:"#output-schema-options",children:"Output Schema options"}),"."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsxs)(t.td,{children:["Structured Output (",(0,r.jsx)(t.code,{children:"structured_output"}),")"]}),(0,r.jsxs)(t.td,{children:[(0,r.jsx)(t.code,{children:"Data"})," or ",(0,r.jsx)(t.code,{children:"DataFrame"})]}),(0,r.jsxs)(t.td,{children:["Output parameter. The final structured output produced by the component. Near the component's output port, you can select the output data type as either ",(0,r.jsx)(t.strong,{children:"Structured Output Data"})," or ",(0,r.jsx)(t.strong,{children:"Structured Output DataFrame"}),". The specific content and structure of the output depends on the input parameters."]})]})]})]}),"\n",(0,r.jsx)(t.h4,{id:"output-schema-options",children:"Output Schema options"}),"\n",(0,r.jsxs)(t.p,{children:["After the LLM extracts the relevant data from the ",(0,r.jsx)(t.strong,{children:"Input Message"})," and ",(0,r.jsx)(t.strong,{children:"Format Instructions"}),", the data is organized according to the ",(0,r.jsx)(t.strong,{children:"Output Schema"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["The schema is a table that defines the fields (keys) and data types for the final ",(0,r.jsx)(t.code,{children:"Data"})," or ",(0,r.jsx)(t.code,{children:"DataFrame"})," output from the ",(0,r.jsx)(t.strong,{children:"Structured Output"})," component."]}),"\n",(0,r.jsxs)(t.p,{children:["The default schema is a single ",(0,r.jsx)(t.code,{children:"field"})," string."]}),"\n",(0,r.jsxs)(t.p,{children:["To add a key to the schema, click ",(0,r.jsx)(i.A,{name:"Plus","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Add a new row"}),", and then edit each column to define the schema:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Name"}),": The name of the output field. Typically a specific key for which you want to extract a value."]}),"\n",(0,r.jsxs)(t.p,{children:["You can reference these keys as variables in downstream components, such as a ",(0,r.jsx)(t.strong,{children:"Parser"})," component's template.\nFor example, the schema key ",(0,r.jsx)(t.code,{children:"NET_INCOME"})," could be referenced by the variable ",(0,r.jsx)(t.code,{children:"{NET_INCOME}"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Description"}),": An optional metadata description of the field's contents and purpose."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Type"}),": The data type of the value stored in the field.\nSupported types are ",(0,r.jsx)(t.code,{children:"str"})," (default), ",(0,r.jsx)(t.code,{children:"int"}),", ",(0,r.jsx)(t.code,{children:"float"}),", ",(0,r.jsx)(t.code,{children:"bool"}),", and ",(0,r.jsx)(t.code,{children:"dict"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"As List"}),": Enable this setting if you want the field to contain a list of values rather than a single value."]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.p,{children:["For simple schemas, you might only extract a few ",(0,r.jsx)(t.code,{children:"string"})," or ",(0,r.jsx)(t.code,{children:"int"})," fields.\nFor more complex schemas with lists and dictionaries, it might help to refer to the ",(0,r.jsx)(t.code,{children:"Data"})," and ",(0,r.jsx)(t.code,{children:"DataFrame"})," structures and attributes, as described in ",(0,r.jsx)(t.a,{href:"/data-types",children:"Langflow data types"}),".\nYou can also emit a rough ",(0,r.jsx)(t.code,{children:"Data"})," or ",(0,r.jsx)(t.code,{children:"DataFrame"}),", and then use downstream components for further refinement, such as a ",(0,r.jsx)(t.strong,{children:"Data Operations"})," component."]}),"\n",(0,r.jsx)(t.h2,{id:"type-convert",children:"Type Convert"}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Type Convert"})," component converts data from one type to another.\nIt supports ",(0,r.jsx)(t.code,{children:"Data"}),", ",(0,r.jsx)(t.code,{children:"DataFrame"}),", and ",(0,r.jsx)(t.code,{children:"Message"})," data types."]}),"\n",(0,r.jsxs)(c.A,{children:[(0,r.jsxs)(l.A,{value:"data",label:"Data",default:!0,children:[(0,r.jsxs)(t.p,{children:["A ",(0,r.jsx)(t.code,{children:"Data"})," object is a structured object that contains a primary ",(0,r.jsx)(t.code,{children:"text"})," key and other key-value pairs:"]}),(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:'"data"',props:{style:{color:"#A5D6FF"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "text"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"User Profile"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "name"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"Charlie Lastname"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "age"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"28",props:{style:{color:"#79C0FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "email"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"charlie.lastname@example.com"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"},",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]}),(0,r.jsxs)(t.p,{children:["The larger context associated with a component's ",(0,r.jsx)(t.code,{children:"data"})," dictionary also identifies which key is the primary ",(0,r.jsx)(t.code,{children:"text_key"}),", and it can provide an optional default value if the primary key isn't specified.\nFor example:"]}),(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"{",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "text_key"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"text"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "data"',props:{style:{color:"#7EE787"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "text"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"User Profile"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "name"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"Charlie Lastname"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "age"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"28",props:{style:{color:"#79C0FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "email"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"charlie.lastname@example.com"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" },",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "default_value"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'""',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"}",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]})]}),(0,r.jsxs)(l.A,{value:"dataframe",label:"DataFrame",children:[(0,r.jsxs)(t.p,{children:["A ",(0,r.jsx)(t.code,{children:"DataFrame"})," is an array that represents a tabular data structure with rows and columns."]}),(0,r.jsxs)(t.p,{children:["It consists of a list (array) of dictionary objects, where each dictionary represents a row.\nEach key in the dictionaries corresponds to a column name.\nFor example, the following ",(0,r.jsx)(t.code,{children:"DataFrame"})," contains two rows with columns for ",(0,r.jsx)(t.code,{children:"name"}),", ",(0,r.jsx)(t.code,{children:"age"}),", and ",(0,r.jsx)(t.code,{children:"email"}),":"]}),(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"[",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "name"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"Charlie Lastname"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "age"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"28",props:{style:{color:"#79C0FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "email"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"charlie.lastname@example.com"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" },",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "name"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"Bobby Othername"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "age"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"25",props:{style:{color:"#79C0FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "email"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"bobby.othername@example.com"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" }",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"]",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]})]}),(0,r.jsx)(l.A,{value:"message",label:"Message",children:(0,r.jsxs)(t.p,{children:["A ",(0,r.jsx)(t.code,{children:"Message"})," is primarily for passing a ",(0,r.jsx)(t.code,{children:"text"})," string, such as",(0,r.jsx)(t.code,{children:'"Name: Charlie Lastname, Age: 28, Email: charlie.lastname@example.com"'}),".\nHowever, the entire ",(0,r.jsx)(t.code,{children:"Message"})," object can include metadata about the message, particularly when used as chat input or output."]})})]}),"\n",(0,r.jsxs)(t.p,{children:["For more information, see ",(0,r.jsx)(t.a,{href:"/data-types",children:"Langflow data types"}),"."]}),"\n",(0,r.jsx)(t.h3,{id:"use-the-type-convert-component-in-a-flow",children:"Use the Type Convert component in a flow"}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Type Convert"})," component is typically used to transform data into a format required by a downstream component.\nFor example, if a component outputs a ",(0,r.jsx)(t.code,{children:"Message"}),", but the following component requires ",(0,r.jsx)(t.code,{children:"Data"}),", then you can use the ",(0,r.jsx)(t.strong,{children:"Type Convert"})," component to reformat the ",(0,r.jsx)(t.code,{children:"Message"})," as ",(0,r.jsx)(t.code,{children:"Data"})," before passing it to the downstream component."]}),"\n",(0,r.jsxs)(t.p,{children:["The following example uses the ",(0,r.jsx)(t.strong,{children:"Type Convert"})," component to convert the ",(0,r.jsx)(t.code,{children:"DataFrame"})," output from a ",(0,r.jsx)(t.strong,{children:"Web Search"})," component into ",(0,r.jsx)(t.code,{children:"Message"})," data that is passed as text input for an LLM:"]}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Create a flow based on the ",(0,r.jsx)(t.strong,{children:"Basic prompting"})," template."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Add a ",(0,r.jsx)(t.strong,{children:"Web Search"})," component to the flow, and then enter a search query, such as ",(0,r.jsx)(t.code,{children:"environmental news"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In the ",(0,r.jsx)(t.strong,{children:"Prompt Template"})," component, replace the contents of the ",(0,r.jsx)(t.strong,{children:"Template"})," field with the following text:"]}),"\n",(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"Answer the user's question using the {context}",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsxs)(t.p,{children:["The curly braces define a ",(0,r.jsx)(t.a,{href:"/components-prompts#define-variables-in-prompts",children:"prompt variable"})," that becomes an input field on the ",(0,r.jsx)(t.strong,{children:"Prompt Template"})," component.\nIn this example, you will use the ",(0,r.jsx)(t.strong,{children:"context"})," field to pass the search results into the template, as explained in the next steps."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Add a ",(0,r.jsx)(t.strong,{children:"Type Convert"})," component to the flow, and then set the ",(0,r.jsx)(t.strong,{children:"Output Type"})," to ",(0,r.jsx)(t.strong,{children:"Message"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["Because the ",(0,r.jsx)(t.strong,{children:"Web Search"})," component's ",(0,r.jsx)(t.code,{children:"DataFrame"})," output is incompatible with the ",(0,r.jsx)(t.strong,{children:"context"})," variable's ",(0,r.jsx)(t.code,{children:"Message"})," input, you must use the ",(0,r.jsx)(t.strong,{children:"Type Convert"})," component to change the ",(0,r.jsx)(t.code,{children:"DataFrame"})," to a ",(0,r.jsx)(t.code,{children:"Message"})," in order to pass the search results to the ",(0,r.jsx)(t.strong,{children:"Prompt Template"})," component."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Connect the additional components to the rest of the flow:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["Connect the ",(0,r.jsx)(t.strong,{children:"Web Search"})," component's output to the ",(0,r.jsx)(t.strong,{children:"Type Convert"})," component's input."]}),"\n",(0,r.jsxs)(t.li,{children:["Connect the ",(0,r.jsx)(t.strong,{children:"Type Convert"})," component's output to the ",(0,r.jsx)(t.strong,{children:"Prompt Template"})," component's ",(0,r.jsx)(t.strong,{children:"context"})," input."]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"Convert web search output to text input",src:n(42547).A+"",width:"4000",height:"1826"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In the ",(0,r.jsx)(t.strong,{children:"Language Model"})," component, add your OpenAI API key."]}),"\n",(0,r.jsxs)(t.p,{children:["If you want to use a different provider or model, edit the ",(0,r.jsx)(t.strong,{children:"Model Provider"}),", ",(0,r.jsx)(t.strong,{children:"Model Name"}),", and ",(0,r.jsx)(t.strong,{children:"API Key"})," fields accordingly."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Click ",(0,r.jsx)(t.strong,{children:"Playground"}),", and then ask something relevant to your search query, such as ",(0,r.jsx)(t.code,{children:"latest news"})," or ",(0,r.jsx)(t.code,{children:"what's the latest research on the environment?"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Result"}),(0,r.jsx)(t.p,{children:"The LLM uses the search results context, your chat message, and it's built-in training data to respond to your question.\nFor example:"}),(0,r.jsx)(j.Code,{codeConfig:g,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"Here are some of the latest news articles related to the environment:",props:{}}]},{tokens:[{content:"Ozone Pollution and Global Warming: A recent study highlights that ozone pollution is a significant global environmental concern, threatening human health and crop production while exacerbating global warming. Read more",props:{}}]},{tokens:[{content:"...",props:{}}]}],lang:"text"},annotations:[]}]})]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.h3,{id:"type-convert-parameters",children:"Type Convert parameters"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Name"}),(0,r.jsx)(t.th,{children:"Display Name"}),(0,r.jsx)(t.th,{children:"Info"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"input_data"}),(0,r.jsx)(t.td,{children:"Input Data"}),(0,r.jsxs)(t.td,{children:["Input parameter. The data to convert. Accepts ",(0,r.jsx)(t.code,{children:"Data"}),", ",(0,r.jsx)(t.code,{children:"DataFrame"}),", or ",(0,r.jsx)(t.code,{children:"Message"})," input."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"output_type"}),(0,r.jsx)(t.td,{children:"Output Type"}),(0,r.jsxs)(t.td,{children:["Input parameter. The desired output type, as one of ",(0,r.jsx)(t.strong,{children:"Data"}),", ",(0,r.jsx)(t.strong,{children:"DataFrame"})," or ",(0,r.jsx)(t.strong,{children:"Message"}),"."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"output"}),(0,r.jsx)(t.td,{children:"Output"}),(0,r.jsxs)(t.td,{children:["Output parameter. The converted data in the specified format. The output port changes depending on the selected ",(0,r.jsx)(t.strong,{children:"Output Type"}),"."]})]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"legacy-processing-components",children:"Legacy Processing components"}),"\n","\n",(0,r.jsx)(p.Ay,{}),"\n",(0,r.jsx)(t.p,{children:"The following Processing components are in legacy status:"}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Alter Metadata"}),(0,r.jsxs)(t.p,{children:["Replace this legacy component with the ",(0,r.jsxs)(t.a,{href:"#data-operations",children:[(0,r.jsx)(t.strong,{children:"Data Operations"})," component"]}),"."]}),(0,r.jsxs)(t.p,{children:["This component modifies metadata of input objects. It can add new metadata, update existing metadata, and remove specified metadata fields. The component works with both ",(0,r.jsx)(t.code,{children:"Message"})," and ",(0,r.jsx)(t.code,{children:"Data"})," objects, and can also create a new ",(0,r.jsx)(t.code,{children:"Data"})," object from user-provided text."]}),(0,r.jsx)(t.p,{children:"It accepts the following parameters:"}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Name"}),(0,r.jsx)(t.th,{children:"Display Name"}),(0,r.jsx)(t.th,{children:"Info"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"input_value"}),(0,r.jsx)(t.td,{children:"Input"}),(0,r.jsx)(t.td,{children:"Input parameter. Objects to which Metadata should be added."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"text_in"}),(0,r.jsx)(t.td,{children:"User Text"}),(0,r.jsxs)(t.td,{children:["Input parameter. Text input; the value is contained in the 'text' attribute of the ",(0,r.jsx)(t.code,{children:"Data"})," object. Empty text entries are ignored."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"metadata"}),(0,r.jsx)(t.td,{children:"Metadata"}),(0,r.jsx)(t.td,{children:"Input parameter. Metadata to add to each object."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"remove_fields"}),(0,r.jsx)(t.td,{children:"Fields to Remove"}),(0,r.jsx)(t.td,{children:"Input parameter. Metadata fields to remove."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"data"}),(0,r.jsx)(t.td,{children:"Data"}),(0,r.jsx)(t.td,{children:"Output parameter. List of Input objects, each with added metadata."})]})]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Combine Data"}),(0,r.jsxs)(t.p,{children:["Replace this legacy component with the ",(0,r.jsxs)(t.a,{href:"#data-operations",children:[(0,r.jsx)(t.strong,{children:"Data Operations"})," component"]})," or the ",(0,r.jsxs)(t.a,{href:"/components-logic#loop",children:[(0,r.jsx)(t.strong,{children:"Loop"})," component"]}),"."]}),(0,r.jsxs)(t.p,{children:["This component combines multiple data sources into a single unified ",(0,r.jsx)(t.code,{children:"Data"})," object."]}),(0,r.jsxs)(t.p,{children:["The component iterates through a list of ",(0,r.jsx)(t.code,{children:"Data"})," objects, merging them into a single ",(0,r.jsx)(t.code,{children:"Data"})," object (",(0,r.jsx)(t.code,{children:"merged_data"}),").\nIf the input list is empty, it returns an empty data object.\nIf there's only one input data object, it returns that object unchanged."]}),(0,r.jsx)(t.p,{children:"The merging process uses the addition operator to combine data objects."})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Combine Text"}),(0,r.jsxs)(t.p,{children:["Replace this legacy component with the ",(0,r.jsxs)(t.a,{href:"#data-operations",children:[(0,r.jsx)(t.strong,{children:"Data Operations"})," component"]}),"."]}),(0,r.jsxs)(t.p,{children:["This component concatenates two text inputs into a single text chunk using a specified delimiter, outputting a ",(0,r.jsx)(t.code,{children:"Message"})," object with the combined text."]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Create Data"}),(0,r.jsxs)(t.p,{children:["Replace this legacy component with the ",(0,r.jsxs)(t.a,{href:"#data-operations",children:[(0,r.jsx)(t.strong,{children:"Data Operations"})," component"]}),"."]}),(0,r.jsxs)(t.p,{children:["This component dynamically creates a ",(0,r.jsx)(t.code,{children:"Data"})," object with a specified number of fields and a text key."]}),(0,r.jsx)(t.p,{children:"It accepts the following parameters:"}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Name"}),(0,r.jsx)(t.th,{children:"Display Name"}),(0,r.jsx)(t.th,{children:"Info"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"number_of_fields"}),(0,r.jsx)(t.td,{children:"Number of Fields"}),(0,r.jsx)(t.td,{children:"Input parameter. The number of fields to be added to the record."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"text_key"}),(0,r.jsx)(t.td,{children:"Text Key"}),(0,r.jsx)(t.td,{children:"Input parameter. Key that identifies the field to be used as the text content."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"text_key_validator"}),(0,r.jsx)(t.td,{children:"Text Key Validator"}),(0,r.jsxs)(t.td,{children:["Input parameter. If enabled, checks if the given ",(0,r.jsx)(t.code,{children:"Text Key"})," is present in the given ",(0,r.jsx)(t.code,{children:"Data"}),"."]})]})]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Extract Key"}),(0,r.jsxs)(t.p,{children:["Replace this legacy component with the ",(0,r.jsxs)(t.a,{href:"#data-operations",children:[(0,r.jsx)(t.strong,{children:"Data Operations"})," component"]}),"."]}),(0,r.jsxs)(t.p,{children:["This component extracts a specific key from a ",(0,r.jsx)(t.code,{children:"Data"})," object and returns the value associated with that key."]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Data to DataFrame/Data to Message"}),(0,r.jsxs)(t.p,{children:["Replace these legacy components with newer Processing components, such as the ",(0,r.jsxs)(t.a,{href:"#data-operations",children:[(0,r.jsx)(t.strong,{children:"Data Operations"})," component"]})," and ",(0,r.jsxs)(t.a,{href:"#type-convert",children:[(0,r.jsx)(t.strong,{children:"Type Convert"})," component"]}),"."]}),(0,r.jsxs)(t.p,{children:["These components converted one or more ",(0,r.jsx)(t.code,{children:"Data"})," objects into a ",(0,r.jsx)(t.code,{children:"DataFrame"})," or ",(0,r.jsx)(t.code,{children:"Message"})," object."]}),(0,r.jsxs)(t.p,{children:["For the ",(0,r.jsx)(t.strong,{children:"Data to DataFrame"})," component, each ",(0,r.jsx)(t.code,{children:"Data"})," object corresponds to one row in the resulting ",(0,r.jsx)(t.code,{children:"DataFrame"}),".\nFields from the ",(0,r.jsx)(t.code,{children:".data"})," attribute become columns, and the ",(0,r.jsx)(t.code,{children:".text"})," field (if present) is placed in a ",(0,r.jsx)(t.code,{children:"text"})," column."]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Filter Data"}),(0,r.jsxs)(t.p,{children:["Replace this legacy component with the ",(0,r.jsxs)(t.a,{href:"#data-operations",children:[(0,r.jsx)(t.strong,{children:"Data Operations"})," component"]}),"."]}),(0,r.jsxs)(t.p,{children:["This component filters a ",(0,r.jsx)(t.code,{children:"Data"})," object based on a list of keys (",(0,r.jsx)(t.code,{children:"filter_criteria"}),"), returning a new ",(0,r.jsx)(t.code,{children:"Data"})," object (",(0,r.jsx)(t.code,{children:"filtered_data"}),") that contains only the key-value pairs that match the filter criteria."]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Filter Values"}),(0,r.jsxs)(t.p,{children:["Replace this legacy component with the ",(0,r.jsxs)(t.a,{href:"#data-operations",children:[(0,r.jsx)(t.strong,{children:"Data Operations"})," component"]}),"."]}),(0,r.jsx)(t.p,{children:"The Filter values component filters a list of data items based on a specified key, filter value, and comparison operator."}),(0,r.jsx)(t.p,{children:"It accepts the following parameters:"}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Name"}),(0,r.jsx)(t.th,{children:"Display Name"}),(0,r.jsx)(t.th,{children:"Info"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"input_data"}),(0,r.jsx)(t.td,{children:"Input data"}),(0,r.jsx)(t.td,{children:"Input parameter. The list of data items to filter."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"filter_key"}),(0,r.jsx)(t.td,{children:"Filter Key"}),(0,r.jsx)(t.td,{children:"Input parameter. The key to filter on."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"filter_value"}),(0,r.jsx)(t.td,{children:"Filter Value"}),(0,r.jsx)(t.td,{children:"Input parameter. The value to filter by."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"operator"}),(0,r.jsx)(t.td,{children:"Comparison Operator"}),(0,r.jsx)(t.td,{children:"Input parameter. The operator to apply for comparing the values."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"filtered_data"}),(0,r.jsx)(t.td,{children:"Filtered data"}),(0,r.jsx)(t.td,{children:"Output parameter. The resulting list of filtered data items."})]})]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"JSON Cleaner"}),(0,r.jsxs)(t.p,{children:["Replace this legacy component with the ",(0,r.jsxs)(t.a,{href:"#parser",children:[(0,r.jsx)(t.strong,{children:"Parser"})," component"]}),"."]}),(0,r.jsx)(t.p,{children:"This component cleans JSON strings to ensure they are fully compliant with the JSON specification."}),(0,r.jsx)(t.p,{children:"It accepts the following parameters:"}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Name"}),(0,r.jsx)(t.th,{children:"Display Name"}),(0,r.jsx)(t.th,{children:"Info"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"json_str"}),(0,r.jsx)(t.td,{children:"JSON String"}),(0,r.jsx)(t.td,{children:"Input parameter. The JSON string to be cleaned. This can be a raw, potentially malformed JSON string produced by language models or other sources that may not fully comply with JSON specifications."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"remove_control_chars"}),(0,r.jsx)(t.td,{children:"Remove Control Characters"}),(0,r.jsxs)(t.td,{children:["Input parameter. If set to ",(0,r.jsx)(t.code,{children:"True"}),", this option removes control characters (ASCII characters 0-31 and 127) from the JSON string. This can help eliminate invisible characters that might cause parsing issues or make the JSON invalid."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"normalize_unicode"}),(0,r.jsx)(t.td,{children:"Normalize Unicode"}),(0,r.jsx)(t.td,{children:"Input parameter. When enabled, this option normalizes Unicode characters in the JSON string to their canonical composition form (NFC). This ensures consistent representation of Unicode characters across different systems and prevents potential issues with character encoding."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"validate_json"}),(0,r.jsx)(t.td,{children:"Validate JSON"}),(0,r.jsxs)(t.td,{children:["Input parameter. If set to ",(0,r.jsx)(t.code,{children:"True"}),", this option attempts to parse the JSON string to ensure it is well-formed before applying the final repair operation. It raises a ValueError if the JSON is invalid, allowing for early detection of major structural issues in the JSON."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"output"}),(0,r.jsx)(t.td,{children:"Cleaned JSON String"}),(0,r.jsx)(t.td,{children:"Output parameter. The resulting cleaned, repaired, and validated JSON string that fully complies with the JSON specification."})]})]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Message to Data"}),(0,r.jsxs)(t.p,{children:["Replace this legacy component with the ",(0,r.jsxs)(t.a,{href:"#type-convert",children:[(0,r.jsx)(t.strong,{children:"Type Convert"})," component"]}),"."]}),(0,r.jsxs)(t.p,{children:["This component converts ",(0,r.jsx)(t.code,{children:"Message"})," objects to ",(0,r.jsx)(t.code,{children:"Data"})," objects."]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parse DataFrame"}),(0,r.jsxs)(t.p,{children:["Replace this legacy component with the ",(0,r.jsxs)(t.a,{href:"#dataframe-operations",children:[(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," component"]})," or ",(0,r.jsxs)(t.a,{href:"#parser",children:[(0,r.jsx)(t.strong,{children:"Parser"})," component"]}),"."]}),(0,r.jsxs)(t.p,{children:["This component converts ",(0,r.jsx)(t.code,{children:"DataFrame"})," objects into plain text using templates."]}),(0,r.jsx)(t.p,{children:"It accepts the following parameters:"}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Name"}),(0,r.jsx)(t.th,{children:"Display Name"}),(0,r.jsx)(t.th,{children:"Info"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"df"}),(0,r.jsx)(t.td,{children:"DataFrame"}),(0,r.jsx)(t.td,{children:"Input parameter. The DataFrame to convert to text rows."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"template"}),(0,r.jsx)(t.td,{children:"Template"}),(0,r.jsxs)(t.td,{children:["Input parameter. Template for formatting (use ",(0,r.jsx)(t.code,{children:"{column_name}"})," placeholders)."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"sep"}),(0,r.jsx)(t.td,{children:"Separator"}),(0,r.jsx)(t.td,{children:"Input parameter. String to join rows in output."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"text"}),(0,r.jsx)(t.td,{children:"Text"}),(0,r.jsx)(t.td,{children:"Output parameter. All rows combined into single text."})]})]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parse JSON"}),(0,r.jsxs)(t.p,{children:["Replace this legacy component with the ",(0,r.jsxs)(t.a,{href:"#parser",children:[(0,r.jsx)(t.strong,{children:"Parser"})," component"]}),"."]}),(0,r.jsxs)(t.p,{children:["This component converts and extracts JSON fields in ",(0,r.jsx)(t.code,{children:"Message"})," and ",(0,r.jsx)(t.code,{children:"Data"})," objects using JQ queries, then returns ",(0,r.jsx)(t.code,{children:"filtered_data"}),", which is a list of ",(0,r.jsx)(t.code,{children:"Data"})," objects."]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Regex Extractor"}),(0,r.jsxs)(t.p,{children:["Replace this legacy component with the ",(0,r.jsxs)(t.a,{href:"#parser",children:[(0,r.jsx)(t.strong,{children:"Parser"})," component"]}),"."]}),(0,r.jsx)(t.p,{children:"This component extracts patterns in text using regular expressions. It can be used to find and extract specific patterns or information in text."})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Select Data"}),(0,r.jsxs)(t.p,{children:["Replace this legacy component with the ",(0,r.jsxs)(t.a,{href:"#data-operations",children:[(0,r.jsx)(t.strong,{children:"Data Operations"})," component"]}),"."]}),(0,r.jsxs)(t.p,{children:["This component selects a single ",(0,r.jsx)(t.code,{children:"Data"})," object from a list."]}),(0,r.jsx)(t.p,{children:"It accepts the following parameters:"}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Name"}),(0,r.jsx)(t.th,{children:"Display Name"}),(0,r.jsx)(t.th,{children:"Info"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"data_list"}),(0,r.jsx)(t.td,{children:"Data List"}),(0,r.jsx)(t.td,{children:"Input parameter. List of data to select from"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"data_index"}),(0,r.jsx)(t.td,{children:"Data Index"}),(0,r.jsx)(t.td,{children:"Input parameter. Index of the data to select"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"selected_data"}),(0,r.jsx)(t.td,{children:"Selected Data"}),(0,r.jsxs)(t.td,{children:["Output parameter. The selected ",(0,r.jsx)(t.code,{children:"Data"})," object."]})]})]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Update Data"}),(0,r.jsxs)(t.p,{children:["Replace this legacy component with the ",(0,r.jsxs)(t.a,{href:"#data-operations",children:[(0,r.jsx)(t.strong,{children:"Data Operations"})," component"]}),"."]}),(0,r.jsx)(t.p,{children:"This component dynamically updates or appends data with specified fields."}),(0,r.jsx)(t.p,{children:"It accepts the following parameters:"}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Name"}),(0,r.jsx)(t.th,{children:"Display Name"}),(0,r.jsx)(t.th,{children:"Info"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"old_data"}),(0,r.jsx)(t.td,{children:"Data"}),(0,r.jsx)(t.td,{children:"Input parameter. The records to update."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"number_of_fields"}),(0,r.jsx)(t.td,{children:"Number of Fields"}),(0,r.jsx)(t.td,{children:"Input parameter. The number of fields to add. The maximum is 15."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"text_key"}),(0,r.jsx)(t.td,{children:"Text Key"}),(0,r.jsx)(t.td,{children:"Input parameter. The key for text content."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"text_key_validator"}),(0,r.jsx)(t.td,{children:"Text Key Validator"}),(0,r.jsx)(t.td,{children:"Input parameter. Validates the text key presence."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"data"}),(0,r.jsx)(t.td,{children:"Data"}),(0,r.jsx)(t.td,{children:"Output parameter. The updated Data objects."})]})]})]})]})]})}function b(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(y,{...e})}):y(e)}function D(e,t){throw new Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}},42547:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/component-type-convert-and-web-search-1eef7b9a7c1a243f4a08d9717728d0e1.png"},46445:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/component-data-operations-select-key-80bade862d29f2851b01ee26413d495f.png"},49823:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/component-split-text-fec2b1abb28e0852c8a172bbeb164b2c.png"},66539:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/component-lambda-filter-76cd345c52fa41a59dcfac0205dc3068.png"},72736:(e,t,n)=>{n.d(t,{Ay:()=>i,RM:()=>o});var s=n(74848),r=n(28453);const o=[];function a(e){const t={code:"code",p:"p",...(0,r.R)(),...e.components};return(0,s.jsxs)(t.p,{children:["If your template includes literal text and variables, you can use double curly braces to escape literal curly braces in the template and prevent interpretation of that text as a variable.\nFor example: ",(0,s.jsx)(t.code,{children:"This is a template with {{literal text in curly braces}} and a {variable}"}),"."]})}function i(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}},82798:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/component-structured-output-23458b0d29eed6d092b557c7aaf6ab2c.png"},88103:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/component-batch-run-19c94fbb0646b2731b37013b84dff1f6.png"},96218:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/component-parser-1d1d72593f02991e5b14b6b1c112a744.png"},99e3:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/component-python-interpreter-1ef9e7dec643a216fd5e83c2139d09c9.png"}}]); \ No newline at end of file diff --git a/assets/js/9f55b2fc.6e957e44.js b/assets/js/9f55b2fc.b425bc83.js similarity index 51% rename from assets/js/9f55b2fc.6e957e44.js rename to assets/js/9f55b2fc.b425bc83.js index 63e78236b8..f6740c2074 100644 --- a/assets/js/9f55b2fc.6e957e44.js +++ b/assets/js/9f55b2fc.b425bc83.js @@ -1 +1 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[9033],{15240:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>p,frontMatter:()=>d,metadata:()=>a,toc:()=>h});const a=JSON.parse('{"id":"Components/bundles-sambanova","title":"SambaNova","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-sambanova.mdx","sourceDirName":"Components","slug":"/bundles-sambanova","permalink":"/bundles-sambanova","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"SambaNova","slug":"/bundles-sambanova"},"sidebar":"docs","previous":{"title":"Redis","permalink":"/bundles-redis"},"next":{"title":"SearchApi","permalink":"/bundles-searchapi"}}');var s=t(74848),r=t(28453),o=t(17886),i=t(31929);const d={title:"SambaNova",slug:"/bundles-sambanova"},l=void 0,c={},h=[{value:"SambaNova text generation",id:"sambanova-text-generation",level:2},{value:"SambaNova text generation parameters",id:"sambanova-text-generation-parameters",level:3},...i.RM];function m(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:[(0,s.jsx)(o.A,{name:"Blocks","aria-hidden":"true"})," ",(0,s.jsx)(n.a,{href:"/components-bundle-components",children:(0,s.jsx)(n.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,s.jsxs)(n.p,{children:["This page describes the components that are available in the ",(0,s.jsx)(n.strong,{children:"SambaNova"})," bundle."]}),"\n",(0,s.jsxs)(n.p,{children:["For more information about SambaNova features and functionality used by SambaNova components, see the ",(0,s.jsx)(n.a,{href:"https://cloud.sambanova.ai/",children:"SambaNova Cloud documentation"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"sambanova-text-generation",children:"SambaNova text generation"}),"\n",(0,s.jsx)(n.p,{children:"This component generates text using SambaNova LLMs."}),"\n",(0,s.jsxs)(n.p,{children:["It can output either a ",(0,s.jsx)(n.strong,{children:"Model Response"})," (",(0,s.jsx)(n.a,{href:"/data-types#message",children:(0,s.jsx)(n.code,{children:"Message"})}),") or a ",(0,s.jsx)(n.strong,{children:"Language Model"})," (",(0,s.jsx)(n.a,{href:"/data-types#languagemodel",children:(0,s.jsx)(n.code,{children:"LanguageModel"})}),")."]}),"\n",(0,s.jsxs)(n.p,{children:["Use the ",(0,s.jsx)(n.strong,{children:"Language Model"})," output when you want to use a SambaNova model as the LLM for another LLM-driven component, such as an ",(0,s.jsx)(n.strong,{children:"Agent"})," or ",(0,s.jsx)(n.strong,{children:"Smart Transform"})," component."]}),"\n",(0,s.jsxs)(n.p,{children:["For more information, see ",(0,s.jsx)(n.a,{href:"/components-models",children:"Language model components"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"sambanova-text-generation-parameters",children:"SambaNova text generation parameters"}),"\n",(0,s.jsx)(i.Ay,{}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Name"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"sambanova_url"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsxs)(n.td,{children:["Input parameter. Base URL path for API requests. Default: ",(0,s.jsx)(n.code,{children:"https://api.sambanova.ai/v1/chat/completions"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"sambanova_api_key"}),(0,s.jsx)(n.td,{children:"SecretString"}),(0,s.jsx)(n.td,{children:"Input parameter. Your SambaNova API Key."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"model_name"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The name of the SambaNova model to use. Options include various Llama models."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"max_tokens"}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsx)(n.td,{children:"Input parameter. The maximum number of tokens to generate. Set to 0 for unlimited tokens."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"temperature"}),(0,s.jsx)(n.td,{children:"Float"}),(0,s.jsx)(n.td,{children:"Input parameter. Controls randomness in the output. Range: [0.0, 1.0]. Default: 0.07."})]})]})]})]})}function p(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(m,{...e})}):m(e)}},17886:(e,n,t)=>{t.d(n,{A:()=>r});t(96540);var a=t(64058),s=t(74848);function r({name:e,...n}){const t=a[e];return t?(0,s.jsx)(t,{...n}):null}},31929:(e,n,t)=>{t.d(n,{Ay:()=>d,RM:()=>o});var a=t(74848),s=t(28453),r=t(17886);const o=[];function i(e){const n={a:"a",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,a.jsxs)(n.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,a.jsx)(r.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,a.jsx)(n.strong,{children:"Controls"})," in the ",(0,a.jsx)(n.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function d(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(i,{...e})}):i(e)}}}]); \ No newline at end of file +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[9033],{15240:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>p,frontMatter:()=>d,metadata:()=>a,toc:()=>h});const a=JSON.parse('{"id":"Components/bundles-sambanova","title":"SambaNova","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-sambanova.mdx","sourceDirName":"Components","slug":"/bundles-sambanova","permalink":"/bundles-sambanova","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"SambaNova","slug":"/bundles-sambanova"},"sidebar":"docs","previous":{"title":"Redis","permalink":"/bundles-redis"},"next":{"title":"SearchApi","permalink":"/bundles-searchapi"}}');var s=t(74848),r=t(28453),o=t(17886),i=t(31929);const d={title:"SambaNova",slug:"/bundles-sambanova"},l=void 0,c={},h=[{value:"SambaNova text generation",id:"sambanova-text-generation",level:2},{value:"SambaNova text generation parameters",id:"sambanova-text-generation-parameters",level:3},...i.RM];function m(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:[(0,s.jsx)(o.A,{name:"Blocks","aria-hidden":"true"})," ",(0,s.jsx)(n.a,{href:"/components-bundle-components",children:(0,s.jsx)(n.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,s.jsxs)(n.p,{children:["This page describes the components that are available in the ",(0,s.jsx)(n.strong,{children:"SambaNova"})," bundle."]}),"\n",(0,s.jsxs)(n.p,{children:["For more information about SambaNova features and functionality used by SambaNova components, see the ",(0,s.jsx)(n.a,{href:"https://cloud.sambanova.ai/",children:"SambaNova Cloud documentation"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"sambanova-text-generation",children:"SambaNova text generation"}),"\n",(0,s.jsx)(n.p,{children:"This component generates text using SambaNova LLMs."}),"\n",(0,s.jsxs)(n.p,{children:["It can output either a ",(0,s.jsx)(n.strong,{children:"Model Response"})," (",(0,s.jsx)(n.a,{href:"/data-types#message",children:(0,s.jsx)(n.code,{children:"Message"})}),") or a ",(0,s.jsx)(n.strong,{children:"Language Model"})," (",(0,s.jsx)(n.a,{href:"/data-types#languagemodel",children:(0,s.jsx)(n.code,{children:"LanguageModel"})}),")."]}),"\n",(0,s.jsxs)(n.p,{children:["Use the ",(0,s.jsx)(n.strong,{children:"Language Model"})," output when you want to use a SambaNova model as the LLM for another LLM-driven component, such as an ",(0,s.jsx)(n.strong,{children:"Agent"})," or ",(0,s.jsx)(n.strong,{children:"Smart Function"})," component."]}),"\n",(0,s.jsxs)(n.p,{children:["For more information, see ",(0,s.jsx)(n.a,{href:"/components-models",children:"Language model components"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"sambanova-text-generation-parameters",children:"SambaNova text generation parameters"}),"\n",(0,s.jsx)(i.Ay,{}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Name"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"sambanova_url"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsxs)(n.td,{children:["Input parameter. Base URL path for API requests. Default: ",(0,s.jsx)(n.code,{children:"https://api.sambanova.ai/v1/chat/completions"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"sambanova_api_key"}),(0,s.jsx)(n.td,{children:"SecretString"}),(0,s.jsx)(n.td,{children:"Input parameter. Your SambaNova API Key."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"model_name"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The name of the SambaNova model to use. Options include various Llama models."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"max_tokens"}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsx)(n.td,{children:"Input parameter. The maximum number of tokens to generate. Set to 0 for unlimited tokens."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"temperature"}),(0,s.jsx)(n.td,{children:"Float"}),(0,s.jsx)(n.td,{children:"Input parameter. Controls randomness in the output. Range: [0.0, 1.0]. Default: 0.07."})]})]})]})]})}function p(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(m,{...e})}):m(e)}},17886:(e,n,t)=>{t.d(n,{A:()=>r});t(96540);var a=t(64058),s=t(74848);function r({name:e,...n}){const t=a[e];return t?(0,s.jsx)(t,{...n}):null}},31929:(e,n,t)=>{t.d(n,{Ay:()=>d,RM:()=>o});var a=t(74848),s=t(28453),r=t(17886);const o=[];function i(e){const n={a:"a",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,a.jsxs)(n.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,a.jsx)(r.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,a.jsx)(n.strong,{children:"Controls"})," in the ",(0,a.jsx)(n.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function d(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(i,{...e})}):i(e)}}}]); \ No newline at end of file diff --git a/assets/js/a99a45c9.0b0bb081.js b/assets/js/a99a45c9.0b0bb081.js new file mode 100644 index 0000000000..34acbc5496 --- /dev/null +++ b/assets/js/a99a45c9.0b0bb081.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[38],{17886:(e,n,t)=>{t.d(n,{A:()=>d});t(96540);var r=t(64058),s=t(74848);function d({name:e,...n}){const t=r[e];return t?(0,s.jsx)(t,{...n}):null}},31929:(e,n,t)=>{t.d(n,{Ay:()=>o,RM:()=>i});var r=t(74848),s=t(28453),d=t(17886);const i=[];function l(e){const n={a:"a",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,r.jsxs)(n.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,r.jsx)(d.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,r.jsx)(n.strong,{children:"Controls"})," in the ",(0,r.jsx)(n.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function o(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},43559:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>h,contentTitle:()=>a,default:()=>x,frontMatter:()=>o,metadata:()=>r,toc:()=>c});const r=JSON.parse('{"id":"Components/bundles-openai","title":"OpenAI","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-openai.mdx","sourceDirName":"Components","slug":"/bundles-openai","permalink":"/bundles-openai","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"OpenAI","slug":"/bundles-openai"},"sidebar":"docs","previous":{"title":"Ollama","permalink":"/bundles-ollama"},"next":{"title":"OpenRouter","permalink":"/bundles-openrouter"}}');var s=t(74848),d=t(28453),i=t(17886),l=t(31929);const o={title:"OpenAI",slug:"/bundles-openai"},a=void 0,h={},c=[{value:"OpenAI text generation",id:"openai-text-generation",level:2},{value:"OpenAI text generation parameters",id:"openai-text-generation-parameters",level:3},...l.RM,{value:"OpenAI Embeddings",id:"openai-embeddings",level:2},{value:"OpenAI Embeddings parameters",id:"openai-embeddings-parameters",level:3},...l.RM,{value:"See also",id:"see-also",level:2}];function p(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,d.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:[(0,s.jsx)(i.A,{name:"Blocks","aria-hidden":"true"})," ",(0,s.jsx)(n.a,{href:"/components-bundle-components",children:(0,s.jsx)(n.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,s.jsxs)(n.p,{children:["This page describes the components that are available in the ",(0,s.jsx)(n.strong,{children:"OpenAI"})," bundle."]}),"\n",(0,s.jsxs)(n.p,{children:["For more information about OpenAI features and functionality used by OpenAI components, see the ",(0,s.jsx)(n.a,{href:"https://platform.openai.com/docs/overview",children:"OpenAI documentation"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"openai-text-generation",children:"OpenAI text generation"}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.strong,{children:"OpenAI"})," component generates text using ",(0,s.jsx)(n.a,{href:"https://platform.openai.com/docs/models",children:"OpenAI's language models"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["It provides access to the same OpenAI models that are available in the core ",(0,s.jsx)(n.strong,{children:"Language Model"})," component, but the ",(0,s.jsx)(n.strong,{children:"OpenAI"})," component provides additional parameters for customizing the request to the OpenAI API."]}),"\n",(0,s.jsxs)(n.p,{children:["It can output either a ",(0,s.jsx)(n.strong,{children:"Model Response"})," (",(0,s.jsx)(n.a,{href:"/data-types#message",children:(0,s.jsx)(n.code,{children:"Message"})}),") or a ",(0,s.jsx)(n.strong,{children:"Language Model"})," (",(0,s.jsx)(n.a,{href:"/data-types#languagemodel",children:(0,s.jsx)(n.code,{children:"LanguageModel"})}),")."]}),"\n",(0,s.jsxs)(n.p,{children:["Use the ",(0,s.jsx)(n.strong,{children:"Language Model"})," output when you want to use a specific OpenAI model configuration as the LLM for another LLM-driven component, such as an ",(0,s.jsx)(n.strong,{children:"Agent"})," or ",(0,s.jsx)(n.strong,{children:"Smart Function"})," component."]}),"\n",(0,s.jsxs)(n.p,{children:["For more information, see ",(0,s.jsx)(n.a,{href:"/components-models",children:"Language model components"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"openai-text-generation-parameters",children:"OpenAI text generation parameters"}),"\n",(0,s.jsx)(l.Ay,{}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Name"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"api_key"}),(0,s.jsx)(n.td,{children:"SecretString"}),(0,s.jsx)(n.td,{children:"Input parameter. Your OpenAI API Key."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"model"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:'Input parameter. The name of the OpenAI model to use. Options include "gpt-3.5-turbo" and "gpt-4".'})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"max_tokens"}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsx)(n.td,{children:"Input parameter. The maximum number of tokens to generate. Set to 0 for unlimited tokens."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"temperature"}),(0,s.jsx)(n.td,{children:"Float"}),(0,s.jsx)(n.td,{children:"Input parameter. Controls randomness in the output. Range: [0.0, 1.0]. Default: 0.7."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"top_p"}),(0,s.jsx)(n.td,{children:"Float"}),(0,s.jsx)(n.td,{children:"Input parameter. Controls the nucleus sampling. Range: [0.0, 1.0]. Default: 1.0."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"frequency_penalty"}),(0,s.jsx)(n.td,{children:"Float"}),(0,s.jsx)(n.td,{children:"Input parameter. Controls the frequency penalty. Range: [0.0, 2.0]. Default: 0.0."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"presence_penalty"}),(0,s.jsx)(n.td,{children:"Float"}),(0,s.jsx)(n.td,{children:"Input parameter. Controls the presence penalty. Range: [0.0, 2.0]. Default: 0.0."})]})]})]}),"\n",(0,s.jsx)(n.h2,{id:"openai-embeddings",children:"OpenAI Embeddings"}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.strong,{children:"OpenAI Embeddings"})," component uses ",(0,s.jsx)(n.a,{href:"https://platform.openai.com/docs/guides/embeddings",children:"OpenAI embedding models"})," for embedding generation."]}),"\n",(0,s.jsxs)(n.p,{children:["It provides access to the same OpenAI models that are available in the core ",(0,s.jsx)(n.strong,{children:"Embedding Model"})," component, but the ",(0,s.jsx)(n.strong,{children:"OpenAI Embeddings"})," component provides additional parameters for customizing the request to the OpenAI embedding API."]}),"\n",(0,s.jsxs)(n.p,{children:["For more information about using embedding model components in flows, see ",(0,s.jsx)(n.a,{href:"/components-embedding-models",children:"Embedding model components"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"openai-embeddings-parameters",children:"OpenAI Embeddings parameters"}),"\n",(0,s.jsx)(l.Ay,{}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Name"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"OpenAI API Key"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The API key to use for accessing the OpenAI API."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Default Headers"}),(0,s.jsx)(n.td,{children:"Dict"}),(0,s.jsx)(n.td,{children:"Input parameter. The default headers for the HTTP requests."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Default Query"}),(0,s.jsx)(n.td,{children:"NestedDict"}),(0,s.jsx)(n.td,{children:"Input parameter. The default query parameters for the HTTP requests."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Allowed Special"}),(0,s.jsx)(n.td,{children:"List"}),(0,s.jsxs)(n.td,{children:["Input parameter. The special tokens allowed for processing. Default: ",(0,s.jsx)(n.code,{children:"[]"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Disallowed Special"}),(0,s.jsx)(n.td,{children:"List"}),(0,s.jsxs)(n.td,{children:["Input parameter. The special tokens disallowed for processing. Default: ",(0,s.jsx)(n.code,{children:'["all"]'}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Chunk Size"}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsxs)(n.td,{children:["Input parameter. The chunk size for processing. Default: ",(0,s.jsx)(n.code,{children:"1000"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Client"}),(0,s.jsx)(n.td,{children:"Any"}),(0,s.jsx)(n.td,{children:"Input parameter. The HTTP client for making requests."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Deployment"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsxs)(n.td,{children:["Input parameter. The deployment name for the model. Default: ",(0,s.jsx)(n.code,{children:"text-embedding-3-small"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Embedding Context Length"}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsxs)(n.td,{children:["Input parameter. The length of embedding context. Default: ",(0,s.jsx)(n.code,{children:"8191"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Max Retries"}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsxs)(n.td,{children:["Input parameter. The maximum number of retries for failed requests. Default: ",(0,s.jsx)(n.code,{children:"6"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Model"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsxs)(n.td,{children:["Input parameter. The name of the model to use. Default: ",(0,s.jsx)(n.code,{children:"text-embedding-3-small"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Model Kwargs"}),(0,s.jsx)(n.td,{children:"NestedDict"}),(0,s.jsx)(n.td,{children:"Input parameter. Additional keyword arguments for the model."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"OpenAI API Base"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The base URL of the OpenAI API."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"OpenAI API Type"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The type of the OpenAI API."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"OpenAI API Version"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The version of the OpenAI API."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"OpenAI Organization"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The organization associated with the API key."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"OpenAI Proxy"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The proxy server for the requests."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Request Timeout"}),(0,s.jsx)(n.td,{children:"Float"}),(0,s.jsx)(n.td,{children:"Input parameter. The timeout for the HTTP requests."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Show Progress Bar"}),(0,s.jsx)(n.td,{children:"Boolean"}),(0,s.jsxs)(n.td,{children:["Input parameter. Whether to show a progress bar for processing. Default: ",(0,s.jsx)(n.code,{children:"false"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Skip Empty"}),(0,s.jsx)(n.td,{children:"Boolean"}),(0,s.jsxs)(n.td,{children:["Input parameter. Whether to skip empty inputs. Default: ",(0,s.jsx)(n.code,{children:"false"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"TikToken Enable"}),(0,s.jsx)(n.td,{children:"Boolean"}),(0,s.jsxs)(n.td,{children:["Input parameter. Whether to enable TikToken. Default: ",(0,s.jsx)(n.code,{children:"true"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"TikToken Model Name"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The name of the TikToken model."})]})]})]}),"\n",(0,s.jsx)(n.h2,{id:"see-also",children:"See also"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsxs)(n.a,{href:"/components-agents",children:[(0,s.jsx)(n.strong,{children:"Agent"})," component"]})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsxs)(n.a,{href:"/bundles-langchain#openai-tools-agent",children:["LangChain ",(0,s.jsx)(n.strong,{children:"OpenAI Tools Agent"})," component"]})}),"\n"]})]})}function x(e={}){const{wrapper:n}={...(0,d.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(p,{...e})}):p(e)}}}]); \ No newline at end of file diff --git a/assets/js/a99a45c9.493e8d1a.js b/assets/js/a99a45c9.493e8d1a.js deleted file mode 100644 index c53e7894a1..0000000000 --- a/assets/js/a99a45c9.493e8d1a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[38],{17886:(e,n,t)=>{t.d(n,{A:()=>d});t(96540);var r=t(64058),s=t(74848);function d({name:e,...n}){const t=r[e];return t?(0,s.jsx)(t,{...n}):null}},31929:(e,n,t)=>{t.d(n,{Ay:()=>o,RM:()=>i});var r=t(74848),s=t(28453),d=t(17886);const i=[];function l(e){const n={a:"a",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,r.jsxs)(n.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,r.jsx)(d.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,r.jsx)(n.strong,{children:"Controls"})," in the ",(0,r.jsx)(n.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function o(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},43559:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>h,contentTitle:()=>a,default:()=>x,frontMatter:()=>o,metadata:()=>r,toc:()=>c});const r=JSON.parse('{"id":"Components/bundles-openai","title":"OpenAI","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-openai.mdx","sourceDirName":"Components","slug":"/bundles-openai","permalink":"/bundles-openai","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"OpenAI","slug":"/bundles-openai"},"sidebar":"docs","previous":{"title":"Ollama","permalink":"/bundles-ollama"},"next":{"title":"OpenRouter","permalink":"/bundles-openrouter"}}');var s=t(74848),d=t(28453),i=t(17886),l=t(31929);const o={title:"OpenAI",slug:"/bundles-openai"},a=void 0,h={},c=[{value:"OpenAI text generation",id:"openai-text-generation",level:2},{value:"OpenAI text generation parameters",id:"openai-text-generation-parameters",level:3},...l.RM,{value:"OpenAI Embeddings",id:"openai-embeddings",level:2},{value:"OpenAI Embeddings parameters",id:"openai-embeddings-parameters",level:3},...l.RM,{value:"See also",id:"see-also",level:2}];function p(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,d.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:[(0,s.jsx)(i.A,{name:"Blocks","aria-hidden":"true"})," ",(0,s.jsx)(n.a,{href:"/components-bundle-components",children:(0,s.jsx)(n.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,s.jsxs)(n.p,{children:["This page describes the components that are available in the ",(0,s.jsx)(n.strong,{children:"OpenAI"})," bundle."]}),"\n",(0,s.jsxs)(n.p,{children:["For more information about OpenAI features and functionality used by OpenAI components, see the ",(0,s.jsx)(n.a,{href:"https://platform.openai.com/docs/overview",children:"OpenAI documentation"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"openai-text-generation",children:"OpenAI text generation"}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.strong,{children:"OpenAI"})," component generates text using ",(0,s.jsx)(n.a,{href:"https://platform.openai.com/docs/models",children:"OpenAI's language models"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["It provides access to the same OpenAI models that are available in the core ",(0,s.jsx)(n.strong,{children:"Language Model"})," component, but the ",(0,s.jsx)(n.strong,{children:"OpenAI"})," component provides additional parameters for customizing the request to the OpenAI API."]}),"\n",(0,s.jsxs)(n.p,{children:["It can output either a ",(0,s.jsx)(n.strong,{children:"Model Response"})," (",(0,s.jsx)(n.a,{href:"/data-types#message",children:(0,s.jsx)(n.code,{children:"Message"})}),") or a ",(0,s.jsx)(n.strong,{children:"Language Model"})," (",(0,s.jsx)(n.a,{href:"/data-types#languagemodel",children:(0,s.jsx)(n.code,{children:"LanguageModel"})}),")."]}),"\n",(0,s.jsxs)(n.p,{children:["Use the ",(0,s.jsx)(n.strong,{children:"Language Model"})," output when you want to use a specific OpenAI model configuration as the LLM for another LLM-driven component, such as an ",(0,s.jsx)(n.strong,{children:"Agent"})," or ",(0,s.jsx)(n.strong,{children:"Smart Transform"})," component."]}),"\n",(0,s.jsxs)(n.p,{children:["For more information, see ",(0,s.jsx)(n.a,{href:"/components-models",children:"Language model components"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"openai-text-generation-parameters",children:"OpenAI text generation parameters"}),"\n",(0,s.jsx)(l.Ay,{}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Name"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"api_key"}),(0,s.jsx)(n.td,{children:"SecretString"}),(0,s.jsx)(n.td,{children:"Input parameter. Your OpenAI API Key."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"model"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:'Input parameter. The name of the OpenAI model to use. Options include "gpt-3.5-turbo" and "gpt-4".'})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"max_tokens"}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsx)(n.td,{children:"Input parameter. The maximum number of tokens to generate. Set to 0 for unlimited tokens."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"temperature"}),(0,s.jsx)(n.td,{children:"Float"}),(0,s.jsx)(n.td,{children:"Input parameter. Controls randomness in the output. Range: [0.0, 1.0]. Default: 0.7."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"top_p"}),(0,s.jsx)(n.td,{children:"Float"}),(0,s.jsx)(n.td,{children:"Input parameter. Controls the nucleus sampling. Range: [0.0, 1.0]. Default: 1.0."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"frequency_penalty"}),(0,s.jsx)(n.td,{children:"Float"}),(0,s.jsx)(n.td,{children:"Input parameter. Controls the frequency penalty. Range: [0.0, 2.0]. Default: 0.0."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"presence_penalty"}),(0,s.jsx)(n.td,{children:"Float"}),(0,s.jsx)(n.td,{children:"Input parameter. Controls the presence penalty. Range: [0.0, 2.0]. Default: 0.0."})]})]})]}),"\n",(0,s.jsx)(n.h2,{id:"openai-embeddings",children:"OpenAI Embeddings"}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.strong,{children:"OpenAI Embeddings"})," component uses ",(0,s.jsx)(n.a,{href:"https://platform.openai.com/docs/guides/embeddings",children:"OpenAI embedding models"})," for embedding generation."]}),"\n",(0,s.jsxs)(n.p,{children:["It provides access to the same OpenAI models that are available in the core ",(0,s.jsx)(n.strong,{children:"Embedding Model"})," component, but the ",(0,s.jsx)(n.strong,{children:"OpenAI Embeddings"})," component provides additional parameters for customizing the request to the OpenAI embedding API."]}),"\n",(0,s.jsxs)(n.p,{children:["For more information about using embedding model components in flows, see ",(0,s.jsx)(n.a,{href:"/components-embedding-models",children:"Embedding model components"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"openai-embeddings-parameters",children:"OpenAI Embeddings parameters"}),"\n",(0,s.jsx)(l.Ay,{}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Name"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"OpenAI API Key"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The API key to use for accessing the OpenAI API."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Default Headers"}),(0,s.jsx)(n.td,{children:"Dict"}),(0,s.jsx)(n.td,{children:"Input parameter. The default headers for the HTTP requests."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Default Query"}),(0,s.jsx)(n.td,{children:"NestedDict"}),(0,s.jsx)(n.td,{children:"Input parameter. The default query parameters for the HTTP requests."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Allowed Special"}),(0,s.jsx)(n.td,{children:"List"}),(0,s.jsxs)(n.td,{children:["Input parameter. The special tokens allowed for processing. Default: ",(0,s.jsx)(n.code,{children:"[]"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Disallowed Special"}),(0,s.jsx)(n.td,{children:"List"}),(0,s.jsxs)(n.td,{children:["Input parameter. The special tokens disallowed for processing. Default: ",(0,s.jsx)(n.code,{children:'["all"]'}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Chunk Size"}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsxs)(n.td,{children:["Input parameter. The chunk size for processing. Default: ",(0,s.jsx)(n.code,{children:"1000"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Client"}),(0,s.jsx)(n.td,{children:"Any"}),(0,s.jsx)(n.td,{children:"Input parameter. The HTTP client for making requests."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Deployment"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsxs)(n.td,{children:["Input parameter. The deployment name for the model. Default: ",(0,s.jsx)(n.code,{children:"text-embedding-3-small"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Embedding Context Length"}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsxs)(n.td,{children:["Input parameter. The length of embedding context. Default: ",(0,s.jsx)(n.code,{children:"8191"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Max Retries"}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsxs)(n.td,{children:["Input parameter. The maximum number of retries for failed requests. Default: ",(0,s.jsx)(n.code,{children:"6"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Model"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsxs)(n.td,{children:["Input parameter. The name of the model to use. Default: ",(0,s.jsx)(n.code,{children:"text-embedding-3-small"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Model Kwargs"}),(0,s.jsx)(n.td,{children:"NestedDict"}),(0,s.jsx)(n.td,{children:"Input parameter. Additional keyword arguments for the model."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"OpenAI API Base"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The base URL of the OpenAI API."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"OpenAI API Type"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The type of the OpenAI API."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"OpenAI API Version"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The version of the OpenAI API."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"OpenAI Organization"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The organization associated with the API key."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"OpenAI Proxy"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The proxy server for the requests."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Request Timeout"}),(0,s.jsx)(n.td,{children:"Float"}),(0,s.jsx)(n.td,{children:"Input parameter. The timeout for the HTTP requests."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Show Progress Bar"}),(0,s.jsx)(n.td,{children:"Boolean"}),(0,s.jsxs)(n.td,{children:["Input parameter. Whether to show a progress bar for processing. Default: ",(0,s.jsx)(n.code,{children:"false"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Skip Empty"}),(0,s.jsx)(n.td,{children:"Boolean"}),(0,s.jsxs)(n.td,{children:["Input parameter. Whether to skip empty inputs. Default: ",(0,s.jsx)(n.code,{children:"false"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"TikToken Enable"}),(0,s.jsx)(n.td,{children:"Boolean"}),(0,s.jsxs)(n.td,{children:["Input parameter. Whether to enable TikToken. Default: ",(0,s.jsx)(n.code,{children:"true"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"TikToken Model Name"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The name of the TikToken model."})]})]})]}),"\n",(0,s.jsx)(n.h2,{id:"see-also",children:"See also"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsxs)(n.a,{href:"/components-agents",children:[(0,s.jsx)(n.strong,{children:"Agent"})," component"]})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsxs)(n.a,{href:"/bundles-langchain#openai-tools-agent",children:["LangChain ",(0,s.jsx)(n.strong,{children:"OpenAI Tools Agent"})," component"]})}),"\n"]})]})}function x(e={}){const{wrapper:n}={...(0,d.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(p,{...e})}):p(e)}}}]); \ No newline at end of file diff --git a/assets/js/ad42ff54.618b9154.js b/assets/js/ad42ff54.618b9154.js new file mode 100644 index 0000000000..e2f7f6f10f --- /dev/null +++ b/assets/js/ad42ff54.618b9154.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[5757],{11663:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>u,frontMatter:()=>d,metadata:()=>s,toc:()=>h});const s=JSON.parse('{"id":"Components/bundles-novita","title":"Novita","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-novita.mdx","sourceDirName":"Components","slug":"/bundles-novita","permalink":"/bundles-novita","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Novita","slug":"/bundles-novita"},"sidebar":"docs","previous":{"title":"Notion","permalink":"/bundles-notion"},"next":{"title":"NVIDIA","permalink":"/bundles-nvidia"}}');var r=t(74848),o=t(28453),a=t(17886),i=t(31929);const d={title:"Novita",slug:"/bundles-novita"},l=void 0,c={},h=[{value:"Novita AI",id:"novita-ai",level:2},{value:"Novita AI parameters",id:"novita-ai-parameters",level:3},...i.RM];function p(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,o.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:[(0,r.jsx)(a.A,{name:"Blocks","aria-hidden":"true"})," ",(0,r.jsx)(n.a,{href:"/components-bundle-components",children:(0,r.jsx)(n.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,r.jsxs)(n.p,{children:["This page describes the components that are available in the ",(0,r.jsx)(n.strong,{children:"Novita"})," bundle."]}),"\n",(0,r.jsx)(n.h2,{id:"novita-ai",children:"Novita AI"}),"\n",(0,r.jsxs)(n.p,{children:["This component generates text using ",(0,r.jsx)(n.a,{href:"https://novita.ai/docs/guides/llm-api",children:"Novita's language models"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["It can output either a ",(0,r.jsx)(n.strong,{children:"Model Response"})," (",(0,r.jsx)(n.a,{href:"/data-types#message",children:(0,r.jsx)(n.code,{children:"Message"})}),") or a ",(0,r.jsx)(n.strong,{children:"Language Model"})," (",(0,r.jsx)(n.a,{href:"/data-types#languagemodel",children:(0,r.jsx)(n.code,{children:"LanguageModel"})}),")."]}),"\n",(0,r.jsxs)(n.p,{children:["Use the ",(0,r.jsx)(n.strong,{children:"Language Model"})," output when you want to use a Novita model as the LLM for another LLM-driven component, such as a ",(0,r.jsx)(n.strong,{children:"Language Model"})," or ",(0,r.jsx)(n.strong,{children:"Smart Function"})," component."]}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see ",(0,r.jsx)(n.a,{href:"/components-models",children:"Language model components"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"novita-ai-parameters",children:"Novita AI parameters"}),"\n",(0,r.jsx)(i.Ay,{}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Name"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"api_key"}),(0,r.jsx)(n.td,{children:"SecretString"}),(0,r.jsx)(n.td,{children:"Input parameter. Your Novita AI API Key."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"Input parameter. The id of the Novita AI model to use."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"max_tokens"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsx)(n.td,{children:"Input parameter. The maximum number of tokens to generate. Set to 0 for unlimited tokens."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"temperature"}),(0,r.jsx)(n.td,{children:"Float"}),(0,r.jsx)(n.td,{children:"Input parameter. Controls randomness in the output. Range: [0.0, 1.0]. Default: 0.7."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"top_p"}),(0,r.jsx)(n.td,{children:"Float"}),(0,r.jsx)(n.td,{children:"Input parameter. Controls the nucleus sampling. Range: [0.0, 1.0]. Default: 1.0."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"frequency_penalty"}),(0,r.jsx)(n.td,{children:"Float"}),(0,r.jsx)(n.td,{children:"Input parameter. Controls the frequency penalty. Range: [0.0, 2.0]. Default: 0.0."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"presence_penalty"}),(0,r.jsx)(n.td,{children:"Float"}),(0,r.jsx)(n.td,{children:"Input parameter. Controls the presence penalty. Range: [0.0, 2.0]. Default: 0.0."})]})]})]})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},17886:(e,n,t)=>{t.d(n,{A:()=>o});t(96540);var s=t(64058),r=t(74848);function o({name:e,...n}){const t=s[e];return t?(0,r.jsx)(t,{...n}):null}},31929:(e,n,t)=>{t.d(n,{Ay:()=>d,RM:()=>a});var s=t(74848),r=t(28453),o=t(17886);const a=[];function i(e){const n={a:"a",p:"p",strong:"strong",...(0,r.R)(),...e.components};return(0,s.jsxs)(n.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,s.jsx)(o.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Controls"})," in the ",(0,s.jsx)(n.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function d(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(i,{...e})}):i(e)}}}]); \ No newline at end of file diff --git a/assets/js/ad42ff54.6343a8b4.js b/assets/js/ad42ff54.6343a8b4.js deleted file mode 100644 index 113b279aca..0000000000 --- a/assets/js/ad42ff54.6343a8b4.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[5757],{11663:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>u,frontMatter:()=>d,metadata:()=>s,toc:()=>h});const s=JSON.parse('{"id":"Components/bundles-novita","title":"Novita","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-novita.mdx","sourceDirName":"Components","slug":"/bundles-novita","permalink":"/bundles-novita","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Novita","slug":"/bundles-novita"},"sidebar":"docs","previous":{"title":"Notion","permalink":"/bundles-notion"},"next":{"title":"NVIDIA","permalink":"/bundles-nvidia"}}');var r=t(74848),o=t(28453),a=t(17886),i=t(31929);const d={title:"Novita",slug:"/bundles-novita"},l=void 0,c={},h=[{value:"Novita AI",id:"novita-ai",level:2},{value:"Novita AI parameters",id:"novita-ai-parameters",level:3},...i.RM];function p(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,o.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:[(0,r.jsx)(a.A,{name:"Blocks","aria-hidden":"true"})," ",(0,r.jsx)(n.a,{href:"/components-bundle-components",children:(0,r.jsx)(n.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,r.jsxs)(n.p,{children:["This page describes the components that are available in the ",(0,r.jsx)(n.strong,{children:"Novita"})," bundle."]}),"\n",(0,r.jsx)(n.h2,{id:"novita-ai",children:"Novita AI"}),"\n",(0,r.jsxs)(n.p,{children:["This component generates text using ",(0,r.jsx)(n.a,{href:"https://novita.ai/docs/guides/llm-api",children:"Novita's language models"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["It can output either a ",(0,r.jsx)(n.strong,{children:"Model Response"})," (",(0,r.jsx)(n.a,{href:"/data-types#message",children:(0,r.jsx)(n.code,{children:"Message"})}),") or a ",(0,r.jsx)(n.strong,{children:"Language Model"})," (",(0,r.jsx)(n.a,{href:"/data-types#languagemodel",children:(0,r.jsx)(n.code,{children:"LanguageModel"})}),")."]}),"\n",(0,r.jsxs)(n.p,{children:["Use the ",(0,r.jsx)(n.strong,{children:"Language Model"})," output when you want to use a Novita model as the LLM for another LLM-driven component, such as a ",(0,r.jsx)(n.strong,{children:"Language Model"})," or ",(0,r.jsx)(n.strong,{children:"Smart Transform"})," component."]}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see ",(0,r.jsx)(n.a,{href:"/components-models",children:"Language model components"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"novita-ai-parameters",children:"Novita AI parameters"}),"\n",(0,r.jsx)(i.Ay,{}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Name"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"api_key"}),(0,r.jsx)(n.td,{children:"SecretString"}),(0,r.jsx)(n.td,{children:"Input parameter. Your Novita AI API Key."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"Input parameter. The id of the Novita AI model to use."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"max_tokens"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsx)(n.td,{children:"Input parameter. The maximum number of tokens to generate. Set to 0 for unlimited tokens."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"temperature"}),(0,r.jsx)(n.td,{children:"Float"}),(0,r.jsx)(n.td,{children:"Input parameter. Controls randomness in the output. Range: [0.0, 1.0]. Default: 0.7."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"top_p"}),(0,r.jsx)(n.td,{children:"Float"}),(0,r.jsx)(n.td,{children:"Input parameter. Controls the nucleus sampling. Range: [0.0, 1.0]. Default: 1.0."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"frequency_penalty"}),(0,r.jsx)(n.td,{children:"Float"}),(0,r.jsx)(n.td,{children:"Input parameter. Controls the frequency penalty. Range: [0.0, 2.0]. Default: 0.0."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"presence_penalty"}),(0,r.jsx)(n.td,{children:"Float"}),(0,r.jsx)(n.td,{children:"Input parameter. Controls the presence penalty. Range: [0.0, 2.0]. Default: 0.0."})]})]})]})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},17886:(e,n,t)=>{t.d(n,{A:()=>o});t(96540);var s=t(64058),r=t(74848);function o({name:e,...n}){const t=s[e];return t?(0,r.jsx)(t,{...n}):null}},31929:(e,n,t)=>{t.d(n,{Ay:()=>d,RM:()=>a});var s=t(74848),r=t(28453),o=t(17886);const a=[];function i(e){const n={a:"a",p:"p",strong:"strong",...(0,r.R)(),...e.components};return(0,s.jsxs)(n.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,s.jsx)(o.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Controls"})," in the ",(0,s.jsx)(n.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function d(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(i,{...e})}):i(e)}}}]); \ No newline at end of file diff --git a/assets/js/baacc2a1.2b7e1d37.js b/assets/js/baacc2a1.a0d9ec5c.js similarity index 83% rename from assets/js/baacc2a1.2b7e1d37.js rename to assets/js/baacc2a1.a0d9ec5c.js index ef9e636135..ea758554a9 100644 --- a/assets/js/baacc2a1.2b7e1d37.js +++ b/assets/js/baacc2a1.a0d9ec5c.js @@ -1 +1 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[4573],{17886:(n,e,s)=>{s.d(e,{A:()=>o});s(96540);var t=s(64058),a=s(74848);function o({name:n,...e}){const s=t[n];return s?(0,a.jsx)(s,{...e}):null}},66922:(n,e,s)=>{s.r(e),s.d(e,{assets:()=>l,contentTitle:()=>d,default:()=>h,frontMatter:()=>r,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"Components/bundles-baidu","title":"Baidu","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-baidu.mdx","sourceDirName":"Components","slug":"/bundles-baidu","permalink":"/bundles-baidu","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Baidu","slug":"/bundles-baidu"},"sidebar":"docs","previous":{"title":"Azure","permalink":"/bundles-azure"},"next":{"title":"Bing","permalink":"/bundles-bing"}}');var a=s(74848),o=s(28453),i=s(17886);const r={title:"Baidu",slug:"/bundles-baidu"},d=void 0,l={},c=[{value:"Qianfan",id:"qianfan",level:2}];function u(n){const e={a:"a",code:"code",h2:"h2",p:"p",strong:"strong",...(0,o.R)(),...n.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(e.p,{children:[(0,a.jsx)(i.A,{name:"Blocks","aria-hidden":"true"})," ",(0,a.jsx)(e.a,{href:"/components-bundle-components",children:(0,a.jsx)(e.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,a.jsxs)(e.p,{children:["This page describes the components that are available in the ",(0,a.jsx)(e.strong,{children:"Baidu"})," bundle."]}),"\n",(0,a.jsx)(e.h2,{id:"qianfan",children:"Qianfan"}),"\n",(0,a.jsxs)(e.p,{children:["The ",(0,a.jsx)(e.strong,{children:"Qianfan"})," component generates text using Qianfan's language models."]}),"\n",(0,a.jsxs)(e.p,{children:["It can output either a ",(0,a.jsx)(e.strong,{children:"Model Response"})," (",(0,a.jsx)(e.a,{href:"/data-types#message",children:(0,a.jsx)(e.code,{children:"Message"})}),") or a ",(0,a.jsx)(e.strong,{children:"Language Model"})," (",(0,a.jsx)(e.a,{href:"/data-types#languagemodel",children:(0,a.jsx)(e.code,{children:"LanguageModel"})}),")."]}),"\n",(0,a.jsxs)(e.p,{children:["Use the ",(0,a.jsx)(e.strong,{children:"Language Model"})," output when you want to use a Qianfan model as the LLM for another LLM-driven component, such as an ",(0,a.jsx)(e.strong,{children:"Agent"})," or ",(0,a.jsx)(e.strong,{children:"Smart Transform"})," component."]}),"\n",(0,a.jsxs)(e.p,{children:["For more information, see ",(0,a.jsx)(e.a,{href:"/components-models",children:"Language model components"})," and the ",(0,a.jsx)(e.a,{href:"https://github.com/baidubce/bce-qianfan-sdk",children:"Qianfan documentation"}),"."]})]})}function h(n={}){const{wrapper:e}={...(0,o.R)(),...n.components};return e?(0,a.jsx)(e,{...n,children:(0,a.jsx)(u,{...n})}):u(n)}}}]); \ No newline at end of file +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[4573],{17886:(n,e,s)=>{s.d(e,{A:()=>o});s(96540);var t=s(64058),a=s(74848);function o({name:n,...e}){const s=t[n];return s?(0,a.jsx)(s,{...e}):null}},66922:(n,e,s)=>{s.r(e),s.d(e,{assets:()=>l,contentTitle:()=>d,default:()=>h,frontMatter:()=>r,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"Components/bundles-baidu","title":"Baidu","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-baidu.mdx","sourceDirName":"Components","slug":"/bundles-baidu","permalink":"/bundles-baidu","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Baidu","slug":"/bundles-baidu"},"sidebar":"docs","previous":{"title":"Azure","permalink":"/bundles-azure"},"next":{"title":"Bing","permalink":"/bundles-bing"}}');var a=s(74848),o=s(28453),i=s(17886);const r={title:"Baidu",slug:"/bundles-baidu"},d=void 0,l={},c=[{value:"Qianfan",id:"qianfan",level:2}];function u(n){const e={a:"a",code:"code",h2:"h2",p:"p",strong:"strong",...(0,o.R)(),...n.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(e.p,{children:[(0,a.jsx)(i.A,{name:"Blocks","aria-hidden":"true"})," ",(0,a.jsx)(e.a,{href:"/components-bundle-components",children:(0,a.jsx)(e.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,a.jsxs)(e.p,{children:["This page describes the components that are available in the ",(0,a.jsx)(e.strong,{children:"Baidu"})," bundle."]}),"\n",(0,a.jsx)(e.h2,{id:"qianfan",children:"Qianfan"}),"\n",(0,a.jsxs)(e.p,{children:["The ",(0,a.jsx)(e.strong,{children:"Qianfan"})," component generates text using Qianfan's language models."]}),"\n",(0,a.jsxs)(e.p,{children:["It can output either a ",(0,a.jsx)(e.strong,{children:"Model Response"})," (",(0,a.jsx)(e.a,{href:"/data-types#message",children:(0,a.jsx)(e.code,{children:"Message"})}),") or a ",(0,a.jsx)(e.strong,{children:"Language Model"})," (",(0,a.jsx)(e.a,{href:"/data-types#languagemodel",children:(0,a.jsx)(e.code,{children:"LanguageModel"})}),")."]}),"\n",(0,a.jsxs)(e.p,{children:["Use the ",(0,a.jsx)(e.strong,{children:"Language Model"})," output when you want to use a Qianfan model as the LLM for another LLM-driven component, such as an ",(0,a.jsx)(e.strong,{children:"Agent"})," or ",(0,a.jsx)(e.strong,{children:"Smart Function"})," component."]}),"\n",(0,a.jsxs)(e.p,{children:["For more information, see ",(0,a.jsx)(e.a,{href:"/components-models",children:"Language model components"})," and the ",(0,a.jsx)(e.a,{href:"https://github.com/baidubce/bce-qianfan-sdk",children:"Qianfan documentation"}),"."]})]})}function h(n={}){const{wrapper:e}={...(0,o.R)(),...n.components};return e?(0,a.jsx)(e,{...n,children:(0,a.jsx)(u,{...n})}):u(n)}}}]); \ No newline at end of file diff --git a/assets/js/c76bd485.c762a60d.js b/assets/js/c76bd485.c762a60d.js deleted file mode 100644 index ba3f338320..0000000000 --- a/assets/js/c76bd485.c762a60d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[3468],{17886:(e,t,n)=>{n.d(t,{A:()=>i});n(96540);var r=n(64058),s=n(74848);function i({name:e,...t}){const n=r[e];return n?(0,s.jsx)(n,{...t}):null}},31929:(e,t,n)=>{n.d(t,{Ay:()=>l,RM:()=>d});var r=n(74848),s=n(28453),i=n(17886);const d=[];function a(e){const t={a:"a",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,r.jsxs)(t.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,r.jsx)(i.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Controls"})," in the ",(0,r.jsx)(t.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function l(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},60782:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>x,frontMatter:()=>l,metadata:()=>r,toc:()=>h});const r=JSON.parse('{"id":"Components/bundles-mistralai","title":"MistralAI","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-mistralai.mdx","sourceDirName":"Components","slug":"/bundles-mistralai","permalink":"/bundles-mistralai","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"MistralAI","slug":"/bundles-mistralai"},"sidebar":"docs","previous":{"title":"Milvus","permalink":"/bundles-milvus"},"next":{"title":"MongoDB","permalink":"/bundles-mongodb"}}');var s=n(74848),i=n(28453),d=n(17886),a=n(31929);const l={title:"MistralAI",slug:"/bundles-mistralai"},o=void 0,c={},h=[{value:"MistralAI text generation",id:"mistralai-text-generation",level:2},{value:"MistralAI text generation parameters",id:"mistralai-text-generation-parameters",level:3},...a.RM,{value:"MistralAI Embeddings",id:"mistralai-embeddings",level:2},{value:"MistralAI Embeddings parameters",id:"mistralai-embeddings-parameters",level:3},...a.RM];function m(e){const t={a:"a",code:"code",h2:"h2",h3:"h3",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(t.p,{children:[(0,s.jsx)(d.A,{name:"Blocks","aria-hidden":"true"})," ",(0,s.jsx)(t.a,{href:"/components-bundle-components",children:(0,s.jsx)(t.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,s.jsxs)(t.p,{children:["This page describes the components that are available in the ",(0,s.jsx)(t.strong,{children:"MistralAI"})," bundle."]}),"\n",(0,s.jsxs)(t.p,{children:["For more information about MistralAI features and functionality used by MistralAI components, see the ",(0,s.jsx)(t.a,{href:"https://docs.mistral.ai",children:"MistralAI documentation"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"mistralai-text-generation",children:"MistralAI text generation"}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.strong,{children:"MistralAI"})," component generates text using MistralAI LLMs."]}),"\n",(0,s.jsxs)(t.p,{children:["It can output either a ",(0,s.jsx)(t.strong,{children:"Model Response"})," (",(0,s.jsx)(t.a,{href:"/data-types#message",children:(0,s.jsx)(t.code,{children:"Message"})}),") or a ",(0,s.jsx)(t.strong,{children:"Language Model"})," (",(0,s.jsx)(t.a,{href:"/data-types#languagemodel",children:(0,s.jsx)(t.code,{children:"LanguageModel"})}),")."]}),"\n",(0,s.jsxs)(t.p,{children:["Use the ",(0,s.jsx)(t.strong,{children:"Language Model"})," output when you want to use a MistralAI model as the LLM for another LLM-driven component, such as an ",(0,s.jsx)(t.strong,{children:"Agent"})," or ",(0,s.jsx)(t.strong,{children:"Smart Transform"})," component."]}),"\n",(0,s.jsxs)(t.p,{children:["For more information, see ",(0,s.jsx)(t.a,{href:"/components-models",children:"Language model components"}),"."]}),"\n",(0,s.jsx)(t.h3,{id:"mistralai-text-generation-parameters",children:"MistralAI text generation parameters"}),"\n",(0,s.jsx)(a.Ay,{}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"Name"}),(0,s.jsx)(t.th,{children:"Type"}),(0,s.jsx)(t.th,{children:"Description"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"max_tokens"}),(0,s.jsx)(t.td,{children:"Integer"}),(0,s.jsx)(t.td,{children:"Input parameter. The maximum number of tokens to generate. Set to 0 for unlimited tokens."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"model_name"}),(0,s.jsx)(t.td,{children:"String"}),(0,s.jsxs)(t.td,{children:["Input parameter. The name of the Mistral AI model to use. Options include ",(0,s.jsx)(t.code,{children:"open-mixtral-8x7b"}),", ",(0,s.jsx)(t.code,{children:"open-mixtral-8x22b"}),", ",(0,s.jsx)(t.code,{children:"mistral-small-latest"}),", ",(0,s.jsx)(t.code,{children:"mistral-medium-latest"}),", ",(0,s.jsx)(t.code,{children:"mistral-large-latest"}),", and ",(0,s.jsx)(t.code,{children:"codestral-latest"}),". Default: ",(0,s.jsx)(t.code,{children:"codestral-latest"}),"."]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"mistral_api_base"}),(0,s.jsx)(t.td,{children:"String"}),(0,s.jsxs)(t.td,{children:["Input parameter. The base URL of the Mistral API. Defaults to ",(0,s.jsx)(t.code,{children:"https://api.mistral.ai/v1"}),"."]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"api_key"}),(0,s.jsx)(t.td,{children:"SecretString"}),(0,s.jsx)(t.td,{children:"Input parameter. The Mistral API Key to use for authentication."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"temperature"}),(0,s.jsx)(t.td,{children:"Float"}),(0,s.jsx)(t.td,{children:"Input parameter. Controls randomness in the output. Default: 0.5."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"max_retries"}),(0,s.jsx)(t.td,{children:"Integer"}),(0,s.jsx)(t.td,{children:"Input parameter. Maximum number of retries for API calls. Default: 5."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"timeout"}),(0,s.jsx)(t.td,{children:"Integer"}),(0,s.jsx)(t.td,{children:"Input parameter. Timeout for API calls in seconds. Default: 60."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"max_concurrent_requests"}),(0,s.jsx)(t.td,{children:"Integer"}),(0,s.jsx)(t.td,{children:"Input parameter. Maximum number of concurrent API requests. Default: 3."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"top_p"}),(0,s.jsx)(t.td,{children:"Float"}),(0,s.jsx)(t.td,{children:"Input parameter. Nucleus sampling parameter. Default: 1."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"random_seed"}),(0,s.jsx)(t.td,{children:"Integer"}),(0,s.jsx)(t.td,{children:"Input parameter. Seed for random number generation. Default: 1."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"safe_mode"}),(0,s.jsx)(t.td,{children:"Boolean"}),(0,s.jsx)(t.td,{children:"Input parameter. Enables safe mode for content generation."})]})]})]}),"\n",(0,s.jsx)(t.h2,{id:"mistralai-embeddings",children:"MistralAI Embeddings"}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.strong,{children:"MistralAI Embeddings"})," component generates embeddings using MistralAI models."]}),"\n",(0,s.jsxs)(t.p,{children:["For more information about using embedding model components in flows, see ",(0,s.jsx)(t.a,{href:"/components-embedding-models",children:"Embedding model components"}),"."]}),"\n",(0,s.jsx)(t.h3,{id:"mistralai-embeddings-parameters",children:"MistralAI Embeddings parameters"}),"\n",(0,s.jsx)(a.Ay,{}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"Name"}),(0,s.jsx)(t.th,{children:"Type"}),(0,s.jsx)(t.th,{children:"Description"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"model"}),(0,s.jsx)(t.td,{children:"String"}),(0,s.jsx)(t.td,{children:'Input parameter. The MistralAI model to use. Default: "mistral-embed".'})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"mistral_api_key"}),(0,s.jsx)(t.td,{children:"SecretString"}),(0,s.jsx)(t.td,{children:"Input parameter. The API key for authenticating with MistralAI."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"max_concurrent_requests"}),(0,s.jsx)(t.td,{children:"Integer"}),(0,s.jsx)(t.td,{children:"Input parameter. The maximum number of concurrent API requests. Default: 64."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"max_retries"}),(0,s.jsx)(t.td,{children:"Integer"}),(0,s.jsx)(t.td,{children:"Input parameter. The maximum number of retry attempts for failed requests. Default: 5."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"timeout"}),(0,s.jsx)(t.td,{children:"Integer"}),(0,s.jsx)(t.td,{children:"Input parameter. The request timeout in seconds. Default: 120."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"endpoint"}),(0,s.jsx)(t.td,{children:"String"}),(0,s.jsxs)(t.td,{children:["Input parameter. The custom API endpoint URL. Default: ",(0,s.jsx)(t.code,{children:"https://api.mistral.ai/v1/"}),"."]})]})]})]})]})}function x(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(m,{...e})}):m(e)}}}]); \ No newline at end of file diff --git a/assets/js/c76bd485.ca115d4b.js b/assets/js/c76bd485.ca115d4b.js new file mode 100644 index 0000000000..c01e4cbddc --- /dev/null +++ b/assets/js/c76bd485.ca115d4b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[3468],{17886:(e,t,n)=>{n.d(t,{A:()=>i});n(96540);var r=n(64058),s=n(74848);function i({name:e,...t}){const n=r[e];return n?(0,s.jsx)(n,{...t}):null}},31929:(e,t,n)=>{n.d(t,{Ay:()=>l,RM:()=>d});var r=n(74848),s=n(28453),i=n(17886);const d=[];function a(e){const t={a:"a",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,r.jsxs)(t.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,r.jsx)(i.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Controls"})," in the ",(0,r.jsx)(t.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function l(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},60782:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>x,frontMatter:()=>l,metadata:()=>r,toc:()=>h});const r=JSON.parse('{"id":"Components/bundles-mistralai","title":"MistralAI","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-mistralai.mdx","sourceDirName":"Components","slug":"/bundles-mistralai","permalink":"/bundles-mistralai","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"MistralAI","slug":"/bundles-mistralai"},"sidebar":"docs","previous":{"title":"Milvus","permalink":"/bundles-milvus"},"next":{"title":"MongoDB","permalink":"/bundles-mongodb"}}');var s=n(74848),i=n(28453),d=n(17886),a=n(31929);const l={title:"MistralAI",slug:"/bundles-mistralai"},o=void 0,c={},h=[{value:"MistralAI text generation",id:"mistralai-text-generation",level:2},{value:"MistralAI text generation parameters",id:"mistralai-text-generation-parameters",level:3},...a.RM,{value:"MistralAI Embeddings",id:"mistralai-embeddings",level:2},{value:"MistralAI Embeddings parameters",id:"mistralai-embeddings-parameters",level:3},...a.RM];function m(e){const t={a:"a",code:"code",h2:"h2",h3:"h3",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(t.p,{children:[(0,s.jsx)(d.A,{name:"Blocks","aria-hidden":"true"})," ",(0,s.jsx)(t.a,{href:"/components-bundle-components",children:(0,s.jsx)(t.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,s.jsxs)(t.p,{children:["This page describes the components that are available in the ",(0,s.jsx)(t.strong,{children:"MistralAI"})," bundle."]}),"\n",(0,s.jsxs)(t.p,{children:["For more information about MistralAI features and functionality used by MistralAI components, see the ",(0,s.jsx)(t.a,{href:"https://docs.mistral.ai",children:"MistralAI documentation"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"mistralai-text-generation",children:"MistralAI text generation"}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.strong,{children:"MistralAI"})," component generates text using MistralAI LLMs."]}),"\n",(0,s.jsxs)(t.p,{children:["It can output either a ",(0,s.jsx)(t.strong,{children:"Model Response"})," (",(0,s.jsx)(t.a,{href:"/data-types#message",children:(0,s.jsx)(t.code,{children:"Message"})}),") or a ",(0,s.jsx)(t.strong,{children:"Language Model"})," (",(0,s.jsx)(t.a,{href:"/data-types#languagemodel",children:(0,s.jsx)(t.code,{children:"LanguageModel"})}),")."]}),"\n",(0,s.jsxs)(t.p,{children:["Use the ",(0,s.jsx)(t.strong,{children:"Language Model"})," output when you want to use a MistralAI model as the LLM for another LLM-driven component, such as an ",(0,s.jsx)(t.strong,{children:"Agent"})," or ",(0,s.jsx)(t.strong,{children:"Smart Function"})," component."]}),"\n",(0,s.jsxs)(t.p,{children:["For more information, see ",(0,s.jsx)(t.a,{href:"/components-models",children:"Language model components"}),"."]}),"\n",(0,s.jsx)(t.h3,{id:"mistralai-text-generation-parameters",children:"MistralAI text generation parameters"}),"\n",(0,s.jsx)(a.Ay,{}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"Name"}),(0,s.jsx)(t.th,{children:"Type"}),(0,s.jsx)(t.th,{children:"Description"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"max_tokens"}),(0,s.jsx)(t.td,{children:"Integer"}),(0,s.jsx)(t.td,{children:"Input parameter. The maximum number of tokens to generate. Set to 0 for unlimited tokens."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"model_name"}),(0,s.jsx)(t.td,{children:"String"}),(0,s.jsxs)(t.td,{children:["Input parameter. The name of the Mistral AI model to use. Options include ",(0,s.jsx)(t.code,{children:"open-mixtral-8x7b"}),", ",(0,s.jsx)(t.code,{children:"open-mixtral-8x22b"}),", ",(0,s.jsx)(t.code,{children:"mistral-small-latest"}),", ",(0,s.jsx)(t.code,{children:"mistral-medium-latest"}),", ",(0,s.jsx)(t.code,{children:"mistral-large-latest"}),", and ",(0,s.jsx)(t.code,{children:"codestral-latest"}),". Default: ",(0,s.jsx)(t.code,{children:"codestral-latest"}),"."]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"mistral_api_base"}),(0,s.jsx)(t.td,{children:"String"}),(0,s.jsxs)(t.td,{children:["Input parameter. The base URL of the Mistral API. Defaults to ",(0,s.jsx)(t.code,{children:"https://api.mistral.ai/v1"}),"."]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"api_key"}),(0,s.jsx)(t.td,{children:"SecretString"}),(0,s.jsx)(t.td,{children:"Input parameter. The Mistral API Key to use for authentication."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"temperature"}),(0,s.jsx)(t.td,{children:"Float"}),(0,s.jsx)(t.td,{children:"Input parameter. Controls randomness in the output. Default: 0.5."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"max_retries"}),(0,s.jsx)(t.td,{children:"Integer"}),(0,s.jsx)(t.td,{children:"Input parameter. Maximum number of retries for API calls. Default: 5."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"timeout"}),(0,s.jsx)(t.td,{children:"Integer"}),(0,s.jsx)(t.td,{children:"Input parameter. Timeout for API calls in seconds. Default: 60."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"max_concurrent_requests"}),(0,s.jsx)(t.td,{children:"Integer"}),(0,s.jsx)(t.td,{children:"Input parameter. Maximum number of concurrent API requests. Default: 3."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"top_p"}),(0,s.jsx)(t.td,{children:"Float"}),(0,s.jsx)(t.td,{children:"Input parameter. Nucleus sampling parameter. Default: 1."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"random_seed"}),(0,s.jsx)(t.td,{children:"Integer"}),(0,s.jsx)(t.td,{children:"Input parameter. Seed for random number generation. Default: 1."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"safe_mode"}),(0,s.jsx)(t.td,{children:"Boolean"}),(0,s.jsx)(t.td,{children:"Input parameter. Enables safe mode for content generation."})]})]})]}),"\n",(0,s.jsx)(t.h2,{id:"mistralai-embeddings",children:"MistralAI Embeddings"}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.strong,{children:"MistralAI Embeddings"})," component generates embeddings using MistralAI models."]}),"\n",(0,s.jsxs)(t.p,{children:["For more information about using embedding model components in flows, see ",(0,s.jsx)(t.a,{href:"/components-embedding-models",children:"Embedding model components"}),"."]}),"\n",(0,s.jsx)(t.h3,{id:"mistralai-embeddings-parameters",children:"MistralAI Embeddings parameters"}),"\n",(0,s.jsx)(a.Ay,{}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"Name"}),(0,s.jsx)(t.th,{children:"Type"}),(0,s.jsx)(t.th,{children:"Description"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"model"}),(0,s.jsx)(t.td,{children:"String"}),(0,s.jsx)(t.td,{children:'Input parameter. The MistralAI model to use. Default: "mistral-embed".'})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"mistral_api_key"}),(0,s.jsx)(t.td,{children:"SecretString"}),(0,s.jsx)(t.td,{children:"Input parameter. The API key for authenticating with MistralAI."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"max_concurrent_requests"}),(0,s.jsx)(t.td,{children:"Integer"}),(0,s.jsx)(t.td,{children:"Input parameter. The maximum number of concurrent API requests. Default: 64."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"max_retries"}),(0,s.jsx)(t.td,{children:"Integer"}),(0,s.jsx)(t.td,{children:"Input parameter. The maximum number of retry attempts for failed requests. Default: 5."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"timeout"}),(0,s.jsx)(t.td,{children:"Integer"}),(0,s.jsx)(t.td,{children:"Input parameter. The request timeout in seconds. Default: 120."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"endpoint"}),(0,s.jsx)(t.td,{children:"String"}),(0,s.jsxs)(t.td,{children:["Input parameter. The custom API endpoint URL. Default: ",(0,s.jsx)(t.code,{children:"https://api.mistral.ai/v1/"}),"."]})]})]})]})]})}function x(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(m,{...e})}):m(e)}}}]); \ No newline at end of file diff --git a/assets/js/c78349fc.06b90779.js b/assets/js/c78349fc.06b90779.js deleted file mode 100644 index fa9c46bb65..0000000000 --- a/assets/js/c78349fc.06b90779.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[1446],{9684:(e,t,o)=>{o.r(t),o.d(t,{CH:()=>u,assets:()=>h,chCodeConfig:()=>m,contentTitle:()=>p,default:()=>g,frontMatter:()=>d,metadata:()=>n,toc:()=>y});const n=JSON.parse('{"id":"Develop/data-types","title":"Langflow data types","description":"Langflow components are designed to accept and produce specific types of inputs and outputs.","source":"@site/docs/Develop/data-types.mdx","sourceDirName":"Develop","slug":"/data-types","permalink":"/data-types","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Langflow data types","slug":"/data-types"},"sidebar":"docs","previous":{"title":"Telemetry","permalink":"/contributing-telemetry"},"next":{"title":"Use voice mode","permalink":"/concepts-voice-mode"}}');var s=o(74848),r=o(28453),c=o(24754),a=o(11470),l=o(19365),i=o(17886);const d={title:"Langflow data types",slug:"/data-types"},p=void 0,h={},u={annotations:c.hk,Code:c.Cy},m={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},y=[{value:"Data",id:"data",level:2},{value:"Schema and attributes",id:"schema-and-attributes",level:3},{value:"DataFrame",id:"dataframe",level:2},{value:"Schema and attributes",id:"schema-and-attributes-1",level:3},{value:"DataFrame structure",id:"dataframe-structure",level:3},{value:"Embeddings",id:"embeddings",level:2},{value:"LanguageModel",id:"languagemodel",level:2},{value:"Memory",id:"memory",level:2},{value:"Message",id:"message",level:2},{value:"Schema, structure, and attributes",id:"schema-structure-and-attributes",level:3},{value:"Message data in Input and Output components",id:"message-data-in-input-and-output-components",level:3},{value:"Tool",id:"tool",level:2},{value:"Unknown or multiple types",id:"unknown-or-multiple-types",level:2},{value:"View data types in flows",id:"view-data-types-in-flows",level:2},{value:"See also",id:"see-also",level:2}];function x(e){const t={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components},{Details:o}=t;return u||j("CH",!1),u.Code||j("CH.Code",!0),o||j("Details",!0),(0,s.jsxs)(s.Fragment,{children:[(0,s.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","\n",(0,s.jsx)(t.p,{children:"Langflow components are designed to accept and produce specific types of inputs and outputs.\nInput and output data types define the structure and flow of information between components.\nUnderstanding these structures helps you build applications that provide valid input and correctly anticipate the output format."}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.a,{href:"/concepts-components#component-ports",children:"Component ports"})," represent the data types that each component can send and receive.\nSome data types are self-evident from the fields they are attached to; for example, a ",(0,s.jsx)(t.strong,{children:"System Message"})," field accepts ",(0,s.jsx)(t.a,{href:"#message",children:"message data"}),".\n",(0,s.jsx)(t.a,{href:"/concepts-components#port-colors",children:"Port colors"})," also indicate the port's data type.\nFor example ",(0,s.jsx)(t.strong,{children:"Data"})," ports, represented by ",(0,s.jsx)(i.A,{name:"Circle",size:"16","aria-label":"Red data port",style:{color:"#dc2626",fill:"#dc2626"}}),", either accept or emit ",(0,s.jsx)(t.a,{href:"#data",children:"structured data objects"}),"."]}),"\n",(0,s.jsx)(t.p,{children:"When building flows, connect output ports to input ports of the same type (color) to transfer that type of data between two components."}),"\n",(0,s.jsx)(t.admonition,{type:"tip",children:(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:["In the ",(0,s.jsx)(t.a,{href:"/concepts-overview#workspace",children:"workspace"}),", hover over a port to see connection details for that port.\nClick a port to ",(0,s.jsx)(i.A,{name:"Search","aria-hidden":"true"})," ",(0,s.jsx)(t.strong,{children:"Search"})," for compatible components."]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:["If two components have incompatible data types, you can use a processing component like the ",(0,s.jsxs)(t.a,{href:"/components-processing#type-convert",children:[(0,s.jsx)(t.strong,{children:"Type Convert"})," component"]})," to convert the data between components."]}),"\n"]}),"\n"]})}),"\n",(0,s.jsx)(t.h2,{id:"data",children:"Data"}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Data"})," ports ",(0,s.jsx)(i.A,{name:"Circle",size:"16","aria-label":"Red data port",style:{color:"#dc2626",fill:"#dc2626"}})," accept or produce the ",(0,s.jsx)(t.code,{children:"Data"})," type, which is a structured data object, like a JSON payload that you might send to an API.\nThis data type is used to pass key-value pairs between components, such as user profiles, settings, or other structured information."]}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.code,{children:"Data"})," objects include a primary text field, indicated by a ",(0,s.jsx)(t.code,{children:"text_key"}),", and additional metadata."]}),"\n",(0,s.jsx)(t.h3,{id:"schema-and-attributes",children:"Schema and attributes"}),"\n",(0,s.jsxs)(t.p,{children:["The schema is defined in ",(0,s.jsx)(t.a,{href:"https://github.com/langflow-ai/langflow/blob/main/src/backend/base/langflow/schema/data.py",children:(0,s.jsx)(t.code,{children:"data.py"})}),"."]}),"\n",(0,s.jsx)(t.p,{children:"The following attributes are available:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.code,{children:"data"}),": A ",(0,s.jsx)(t.code,{children:"Data"})," object stores key-value pairs within the ",(0,s.jsx)(t.code,{children:".data"})," attribute. This is the ",(0,s.jsx)(t.code,{children:"Data"})," object's core dictionary. Each key is a field name, and the values can be any supported data type."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.code,{children:"text_key"}),": The key in ",(0,s.jsx)(t.code,{children:"data"})," that is considered the primary text value."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.code,{children:"default_value"}),": Fallback if ",(0,s.jsx)(t.code,{children:"text_key"})," is missing. The default ",(0,s.jsx)(t.code,{children:"text_key"})," is ",(0,s.jsx)(t.code,{children:'"text"'}),"."]}),"\n"]}),"\n",(0,s.jsx)(u.Code,{codeConfig:m,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"data_obj ",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:" Data(",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" text_key",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"text"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" data",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"{",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "text"',props:{style:{color:"#A5D6FF"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"Hello world"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "name"',props:{style:{color:"#A5D6FF"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"Charlie"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "age"',props:{style:{color:"#A5D6FF"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"28",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" },",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" default_value",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'""',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:")",props:{style:{color:"#C9D1D9"}}}]}],lang:"python"},annotations:[]}]}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.code,{children:"Data"})," objects can be serialized to JSON, created from JSON, or created from other dictionary data.\nHowever, the resulting ",(0,s.jsx)(t.code,{children:"Data"})," object is a structured object with validation and methods, not a plain dictionary.\nFor example, when serialized into JSON, the previous Python example becomes the following JSON object:"]}),"\n",(0,s.jsx)(u.Code,{codeConfig:m,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"{",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "text_key"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"text"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "data"',props:{style:{color:"#7EE787"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "text"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"Hello world"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "name"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"Charlie"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "age"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"28",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" },",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "default_value"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'""',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"}",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]}),"\n",(0,s.jsx)(t.h2,{id:"dataframe",children:"DataFrame"}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"DataFrame"})," ports ",(0,s.jsx)(i.A,{name:"Circle",size:"16","aria-label":"Pink dataframe port",style:{color:"#ec4899",fill:"#ec4899"}})," accept or produce ",(0,s.jsx)(t.a,{href:"https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html",children:"pandas DataFrames"}),", which are similar to the tabular CSV data."]}),"\n",(0,s.jsxs)(t.p,{children:["Use the ",(0,s.jsx)(t.code,{children:"DataFrame"})," type to work with data containing multiple rows or records."]}),"\n",(0,s.jsx)(t.h3,{id:"schema-and-attributes-1",children:"Schema and attributes"}),"\n",(0,s.jsxs)(t.p,{children:["The schema is defined in ",(0,s.jsx)(t.a,{href:"https://github.com/langflow-ai/langflow/blob/main/src/backend/base/langflow/schema/dataframe.py",children:(0,s.jsx)(t.code,{children:"dataframe.py"})}),"."]}),"\n",(0,s.jsx)(t.p,{children:"The following attributes are available:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Full pandas compatibility"}),": All pandas DataFrame methods and functionality are supported"]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Langflow integration"}),": Accepts lists of ",(0,s.jsxs)(t.a,{href:"#data",children:[(0,s.jsx)(t.code,{children:"Data"})," objects"]}),", dictionaries, or existing DataFrames."]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Convenience methods"}),":"]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.code,{children:"to_data_list()"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.code,{children:"add_row()"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.code,{children:"add_rows()"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.code,{children:"to_lc_documents()"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.code,{children:"to_data()"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.code,{children:"to_message()"})}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Text key support"}),": Maintains ",(0,s.jsx)(t.code,{children:"text_key"})," and ",(0,s.jsx)(t.code,{children:"default_value"})," attributes for ",(0,s.jsxs)(t.a,{href:"#data",children:[(0,s.jsx)(t.code,{children:"Data"})," object"]})," compatibility."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(t.h3,{id:"dataframe-structure",children:"DataFrame structure"}),"\n",(0,s.jsx)(t.p,{children:"A DataFrame has a tabular data structure with rows and columns.\nKeys are columns, and each object in the array is a row."}),"\n",(0,s.jsx)(u.Code,{codeConfig:m,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"[",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "name"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"Charlie Lastname"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "age"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"28",props:{style:{color:"#79C0FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "email"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"charlie.lastname@example.com"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" },",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "name"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"Alexandra Example"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "age"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"34",props:{style:{color:"#79C0FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "email"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"alexandra@example.com"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" }",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"]",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]}),"\n",(0,s.jsx)(t.p,{children:"When represented as tabular data, the preceding DataFrame object is structured as follows:"}),"\n",(0,s.jsx)(u.Code,{codeConfig:m,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"| name | age | email |",props:{}}]},{tokens:[{content:"|------|-----|-------|",props:{}}]},{tokens:[{content:"| Charlie Lastname | 28 | charlie.lastname@example.com |",props:{}}]},{tokens:[{content:"| Alexandra Example | 34 | alexandra@example.com |",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,s.jsx)(t.h2,{id:"embeddings",children:"Embeddings"}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Embeddings"})," ports ",(0,s.jsx)(i.A,{name:"Circle",size:"16","aria-label":"Emerald embeddings port",style:{color:"#10b981",fill:"#10b981"}})," emit or ingest vector embeddings to support functions like similarity search."]}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.code,{children:"Embeddings"})," data type is used specifically by components that either produce or consume vector embeddings, such as the ",(0,s.jsx)(t.a,{href:"/components-embedding-models",children:"embedding model components"})," and vector store components."]}),"\n",(0,s.jsxs)(t.p,{children:["For example, embedding model components output ",(0,s.jsx)(t.code,{children:"Embeddings"})," data that you can connect to an ",(0,s.jsx)(t.strong,{children:"Embedding"})," input port on a vector store component."]}),"\n",(0,s.jsxs)(t.p,{children:["For information about the underlying Python classes that produce ",(0,s.jsx)(t.code,{children:"Embeddings"}),", see the ",(0,s.jsx)(t.a,{href:"https://docs.langchain.com/oss/python/integrations/text_embedding",children:"LangChain Embedding models documentation"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"languagemodel",children:"LanguageModel"}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.code,{children:"LanguageModel"})," type is a specific data type that can be produced by language model components and accepted by components that use an LLM."]}),"\n",(0,s.jsxs)(t.p,{children:["When you change a language model component's output type from ",(0,s.jsx)(t.strong,{children:"Model Response"})," to ",(0,s.jsx)(t.strong,{children:"Language Model"}),", the component's output port changes from a ",(0,s.jsx)(t.strong,{children:"Message"})," port to a ",(0,s.jsx)(t.strong,{children:"Language Model"})," port ",(0,s.jsx)(i.A,{name:"Circle",size:"16","aria-label":"Fuchsia language model port",style:{color:"#c026d3",fill:"#c026d3"}}),".\nThen, you connect the outgoing ",(0,s.jsx)(t.strong,{children:"Language Model"})," port to a ",(0,s.jsx)(t.strong,{children:"Language Model"})," input port on a compatible component, such as a ",(0,s.jsx)(t.strong,{children:"Smart Transform"})," component."]}),"\n",(0,s.jsxs)(t.p,{children:["For more information about using these components in flows and toggling ",(0,s.jsx)(t.code,{children:"LanguageModel"})," output, see ",(0,s.jsx)(t.a,{href:"/components-models#language-model-output-types",children:"Language model components"}),"."]}),"\n",(0,s.jsxs)(o,{children:[(0,s.jsx)("summary",{children:"LanguageModel is an instance of LangChain ChatModel"}),(0,s.jsxs)(t.p,{children:["Because Langflow is built on LangChain, ",(0,s.jsx)(t.code,{children:"LanguageModel"})," is actually an instance of a ",(0,s.jsx)(t.a,{href:"https://docs.langchain.com/oss/python/integrations/chat",children:"LangChain chat model"})," that uses the configuration parameters set in the originating component."]}),(0,s.jsxs)(t.p,{children:["Often, components produce an instance of an integrated chat model that is designed to support the specific model provider, such as ",(0,s.jsx)(t.a,{href:"https://docs.langchain.com/oss/python/integrations/chat/openai",children:(0,s.jsx)(t.code,{children:"ChatOpenAI"})})," or ",(0,s.jsx)(t.a,{href:"https://docs.langchain.com/oss/python/integrations/chat/anthropic",children:(0,s.jsx)(t.code,{children:"ChatAnthropic"})}),"."]}),(0,s.jsxs)(t.p,{children:["You can inspect the ",(0,s.jsx)(t.a,{href:"/concepts-components#component-code",children:"component code"})," to see the specific ",(0,s.jsx)(t.code,{children:"Chat"})," instance it produces."]})]}),"\n",(0,s.jsx)(t.h2,{id:"memory",children:"Memory"}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Memory"})," ports ",(0,s.jsx)(i.A,{name:"Circle",size:"16","aria-label":"Orange memory port",style:{color:"#f97316",fill:"#f97316"}})," are used to integrate a ",(0,s.jsx)(t.strong,{children:"Message History"})," component with external chat memory storage."]}),"\n",(0,s.jsxs)(t.p,{children:["For more information, see the ",(0,s.jsxs)(t.a,{href:"/components-helpers#message-history",children:[(0,s.jsx)(t.strong,{children:"Message History"})," component"]}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"message",children:"Message"}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Message"})," ports ",(0,s.jsx)(i.A,{name:"Circle",size:"16","aria-label":"Indigo message port",style:{color:"#4f46e5",fill:"#4f46e5"}})," accept or produce ",(0,s.jsx)(t.code,{children:"Message"})," data, which extends the ",(0,s.jsxs)(t.a,{href:"#data",children:[(0,s.jsx)(t.code,{children:"Data"})," type"]})," with additional fields and methods for text input typically used in chat flows."]}),"\n",(0,s.jsx)(t.p,{children:"This data type is used by many components."}),"\n",(0,s.jsxs)(t.admonition,{type:"tip",children:[(0,s.jsxs)(t.p,{children:["Components that accept or produce ",(0,s.jsx)(t.code,{children:"Message"})," data may not include all attributes in the incoming or outgoing ",(0,s.jsx)(t.code,{children:"Message"})," data.\nAs long as the data is compatible with the ",(0,s.jsx)(t.code,{children:"Message"})," schema, it can be valid."]}),(0,s.jsx)(t.p,{children:"When building flows, focus on the fields shown on each component in the workspace, rather than the data types passed between components.\nThe details of a particular data type are often only relevant when you are debugging a flow or component that isn't producing the expected output."}),(0,s.jsxs)(t.p,{children:["For example, a ",(0,s.jsx)(t.strong,{children:"Chat Input"})," component only requires the content of the ",(0,s.jsx)(t.strong,{children:"Input Text"})," (",(0,s.jsx)(t.code,{children:"input_value"}),") field.\nThe component then constructs a complete ",(0,s.jsx)(t.code,{children:"Message"})," object before passing the data to other components in the flow."]})]}),"\n",(0,s.jsx)(t.h3,{id:"schema-structure-and-attributes",children:"Schema, structure, and attributes"}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.code,{children:"Message"})," schema is defined in ",(0,s.jsx)(t.a,{href:"https://github.com/langflow-ai/langflow/blob/main/src/backend/base/langflow/schema/message.py",children:(0,s.jsx)(t.code,{children:"message.py"})}),".\nSome ",(0,s.jsx)(t.code,{children:"Message"})," attributes have their own schema definitions, such as ",(0,s.jsx)(t.a,{href:"https://github.com/langflow-ai/langflow/blob/main/src/backend/base/langflow/schema/content_block.py",children:(0,s.jsx)(t.code,{children:"content_block.py"})}),"."]}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.code,{children:"Message"})," data is structured as a JSON object.\nFor example:"]}),"\n",(0,s.jsx)(u.Code,{codeConfig:m,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"{",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "text"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"Name: Charlie Lastname, Age: 28, Email: charlie.lastname@example.com"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "sender"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"User"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "sender_name"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"Charlie Lastname"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "session_id"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"some-session-id"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "timestamp"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"2024-06-01T12:00:00Z"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "files"',props:{style:{color:"#7EE787"}}},{content:": [],",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "content_blocks"',props:{style:{color:"#7EE787"}}},{content:": [],",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "category"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"message"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"}",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]}),"\n",(0,s.jsxs)(t.p,{children:["The attributes included in a specific ",(0,s.jsx)(t.code,{children:"Message"})," object depend on the context, including the component type, flow activity, and whether the message is a query or response.\nSome common attributes include the following:"]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.code,{children:"text"}),": The main message content."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.code,{children:"sender"}),": Identifies the originator of a chat message as either ",(0,s.jsx)(t.code,{children:"User"})," or ",(0,s.jsx)(t.code,{children:"Language Model"}),"."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.code,{children:"sender_name"}),": The display name for the sender. Defaults to ",(0,s.jsx)(t.code,{children:"User"})," or ",(0,s.jsx)(t.code,{children:"Language Model"}),"."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.code,{children:"session_id"}),": The chat ",(0,s.jsx)(t.a,{href:"/session-id",children:"session identifier"}),"."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.code,{children:"flow_id"}),": The ID of the flow that the message is associated with. ",(0,s.jsx)(t.code,{children:"flow_id"})," and ",(0,s.jsx)(t.code,{children:"session_id"})," are the same if the flow doesn't use custom session IDs."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.code,{children:"timestamp"}),": The UTC timestamp that the message was sent."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.code,{children:"files"}),": A list of file paths or images included with the message"]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.code,{children:"content_blocks"}),": Container for rich content input, such as text, media, or code. Also contains error message information if the LLM can't process the input."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.code,{children:"category"}),": ",(0,s.jsx)(t.code,{children:'"message"'}),", ",(0,s.jsx)(t.code,{children:'"error"'}),", ",(0,s.jsx)(t.code,{children:'"warning"'}),", or ",(0,s.jsx)(t.code,{children:'"info"'}),"."]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:"Not all attributes are required, and some components accept message-compatible input, such as raw text input.\nThe strictness depends on the component."}),"\n",(0,s.jsx)(t.h3,{id:"message-data-in-input-and-output-components",children:"Message data in Input and Output components"}),"\n",(0,s.jsxs)(t.p,{children:["In flows with ",(0,s.jsxs)(t.a,{href:"/components-io#chat-io",children:[(0,s.jsx)(t.strong,{children:"Chat Input and Output"})," components"]}),", ",(0,s.jsx)(t.code,{children:"Message"})," data provides a consistent structure for chat interactions, and it is ideal for chatbots, conversational analysis, and other use cases based on a dialogue with an LLM or agent.\nIn these flows, the ",(0,s.jsx)(t.strong,{children:"Playground"})," chat interface prints only the ",(0,s.jsx)(t.code,{children:"Message"})," attributes that are relevant to the conversation, such as ",(0,s.jsx)(t.code,{children:"text"}),", ",(0,s.jsx)(t.code,{children:"files"}),", and error messages from ",(0,s.jsx)(t.code,{children:"content_blocks"}),".\nTo see all ",(0,s.jsx)(t.code,{children:"Message"})," attributes, inspect the message logs in the ",(0,s.jsx)(t.strong,{children:"Playground"}),"."]}),"\n",(0,s.jsxs)(t.p,{children:["In flows with ",(0,s.jsxs)(t.a,{href:"/components-io#text-io",children:[(0,s.jsx)(t.strong,{children:"Text Input and Output"})," components"]}),", ",(0,s.jsx)(t.code,{children:"Message"})," data is used to pass simple text strings without the chat-related metadata.\nThese components handle ",(0,s.jsx)(t.code,{children:"Message"})," data as independent text strings, not as part of an ongoing conversation.\nFor this reason, a flow with only ",(0,s.jsx)(t.strong,{children:"Text Input and Output"})," components isn't compatible with the ",(0,s.jsx)(t.strong,{children:"Playground"}),".\nFor more information, see ",(0,s.jsx)(t.a,{href:"/components-io",children:"Input and output components"}),"."]}),"\n",(0,s.jsxs)(t.p,{children:["When using the Langflow API, the response includes the ",(0,s.jsx)(t.code,{children:"Message"})," object along with other response data from the flow run.\nLangflow API responses can be extremely verbose, so your applications must include code to extract relevant data from the response to return to the user.\nFor an example, see the ",(0,s.jsx)(t.a,{href:"/get-started-quickstart",children:"Langflow quickstart"}),"."]}),"\n",(0,s.jsxs)(t.p,{children:["Additionally, input sent to the input port of input/output components does ",(0,s.jsx)(t.em,{children:"not"})," need to be a complete ",(0,s.jsx)(t.code,{children:"Message"})," object because the component constructs the ",(0,s.jsx)(t.code,{children:"Message"})," object that is then passed to other components in the flow or returned as flow output.\nIn fact, some components shouldn't receive a complete ",(0,s.jsx)(t.code,{children:"Message"})," object because some attributes, like ",(0,s.jsx)(t.code,{children:"timestamp"})," should be added by the component for accuracy."]}),"\n",(0,s.jsx)(t.h2,{id:"tool",children:"Tool"}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Tool"})," ports ",(0,s.jsx)(i.A,{name:"Circle",size:"16","aria-label":"Cyan tool port",style:{color:"#06b6d4",fill:"#06b6d4"}})," connect tools to an ",(0,s.jsx)(t.strong,{children:"Agent"})," component."]}),"\n",(0,s.jsxs)(t.p,{children:["Tools can be other components where you enabled ",(0,s.jsx)(t.strong,{children:"Tool Mode"}),", they can be the dedicated ",(0,s.jsx)(t.strong,{children:"MCP Tools"})," component, or they can be other components that only support ",(0,s.jsx)(t.strong,{children:"Tool Mode"}),".\nMultiple tools can be connected to the same ",(0,s.jsx)(t.strong,{children:"Agent"})," component at the same port."]}),"\n",(0,s.jsxs)(t.p,{children:["Functionally, ",(0,s.jsx)(t.code,{children:"Tool"})," data is a LangChain ",(0,s.jsx)(t.code,{children:"StructuredTool"})," object that can be used in agent flows."]}),"\n",(0,s.jsxs)(t.p,{children:["For more information, see ",(0,s.jsx)(t.a,{href:"/agents-tools",children:"Configure tools for agents"})," and ",(0,s.jsx)(t.a,{href:"/mcp-client",children:"Use Langflow as an MCP client"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"unknown-or-multiple-types",children:"Unknown or multiple types"}),"\n",(0,s.jsxs)(t.p,{children:["If a port can accept or produce multiple data types, it is represented by the gray port icon ",(0,s.jsx)(i.A,{name:"Circle",size:"16","aria-label":"Gray unknown port",style:{color:"#9CA3AF",fill:"#9CA3AF"}}),"."]}),"\n",(0,s.jsx)(t.p,{children:"Hover over the port to see the accepted or produced data types."}),"\n",(0,s.jsx)(t.h2,{id:"view-data-types-in-flows",children:"View data types in flows"}),"\n",(0,s.jsxs)(t.p,{children:["In Langflow, you can use ",(0,s.jsx)(i.A,{name:"TextSearch","aria-hidden":"true"})," ",(0,s.jsx)(t.strong,{children:"Inspect output"})," to view the output of individual components.\nThis can help you learn about the different data type and debug problems with invalid or malformed inputs and output."]}),"\n",(0,s.jsxs)(t.p,{children:["The following example shows how to inspect the output of a ",(0,s.jsxs)(t.a,{href:"/components-processing#type-convert",children:[(0,s.jsx)(t.strong,{children:"Type Convert"})," component"]}),", which can convert data from one type to another:"]}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:["Create a flow, and then connect a ",(0,s.jsx)(t.strong,{children:"Chat Input"})," component to a ",(0,s.jsx)(t.strong,{children:"Type Convert"})," component."]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:["In the ",(0,s.jsx)(t.strong,{children:"Chat Input"})," component, enter some text for the type converter to process."]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:["On the ",(0,s.jsx)(t.strong,{children:"Type Convert"})," component, click ",(0,s.jsx)(i.A,{name:"Play","aria-hidden":"true"})," ",(0,s.jsx)(t.strong,{children:"Run component"}),", and then click ",(0,s.jsx)(i.A,{name:"TextSearch","aria-hidden":"true"})," ",(0,s.jsx)(t.strong,{children:"Inspect output"}),"."]}),"\n",(0,s.jsxs)(t.p,{children:["The default output is ",(0,s.jsx)(t.code,{children:"Message"})," data, which is the same as the input coming from the ",(0,s.jsx)(t.strong,{children:"Chat Input"})," component.\nTo see the ",(0,s.jsx)(t.code,{children:"Message"})," data converted to ",(0,s.jsx)(t.code,{children:"Data"})," or ",(0,s.jsx)(t.code,{children:"DataFrame"}),", change the ",(0,s.jsx)(t.strong,{children:"Output Type"})," on the ",(0,s.jsx)(t.strong,{children:"Type Convert"})," component, and then rerun the component."]}),"\n",(0,s.jsxs)(a.A,{children:[(0,s.jsx)(l.A,{value:"Message",label:"Message",default:!0,children:(0,s.jsx)(u.Code,{codeConfig:m,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"Input text",props:{}}]}],lang:"text"},annotations:[]}]})}),(0,s.jsx)(l.A,{value:"Data",label:"Data",children:(0,s.jsx)(u.Code,{codeConfig:m,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"{",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "timestamp"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"2025-07-15 20:56:20 UTC"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "sender"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"User"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "sender_name"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"User"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "session_id"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"a0c7e888-4fd6-4242-b8c8-e761ad690aeb"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "text"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'""',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "files"',props:{style:{color:"#7EE787"}}},{content:": [],",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "error"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"false",props:{style:{color:"#79C0FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "edit"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"false",props:{style:{color:"#79C0FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "properties"',props:{style:{color:"#7EE787"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "text_color"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'""',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "background_color"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'""',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "edited"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"false",props:{style:{color:"#79C0FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "source"',props:{style:{color:"#7EE787"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "id"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"null",props:{style:{color:"#79C0FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "display_name"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"null",props:{style:{color:"#79C0FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "source"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"null",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" },",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "icon"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'""',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "allow_markdown"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"false",props:{style:{color:"#79C0FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "positive_feedback"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"null",props:{style:{color:"#79C0FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "state"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"complete"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "targets"',props:{style:{color:"#7EE787"}}},{content:": []",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" },",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "category"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"message"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "content_blocks"',props:{style:{color:"#7EE787"}}},{content:": [],",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "id"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"9da72da2-efbb-4ccd-90ad-b32429b0418e"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "flow_id"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"a0c7e888-4fd6-4242-b8c8-e761ad690aeb"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "duration"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"null",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:"}",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]})}),(0,s.jsx)(l.A,{value:"DataFrame",label:"DataFrame",children:(0,s.jsx)(u.Code,{codeConfig:m,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"| Field | Value |",props:{}}]},{tokens:[{content:"|-------|-------|",props:{}}]},{tokens:[{content:"| timestamp | 2025-07-15 20:56:11 UTC |",props:{}}]},{tokens:[{content:"| sender | User |",props:{}}]},{tokens:[{content:"| sender_name | User |",props:{}}]},{tokens:[{content:"| session_id | a0c7e888-4fd6-4242-b8c8-e761ad690aeb |",props:{}}]},{tokens:[{content:"| text | (empty) |",props:{}}]},{tokens:[{content:"| files | [] |",props:{}}]},{tokens:[{content:"| error | False |",props:{}}]},{tokens:[{content:"| edit | False |",props:{}}]},{tokens:[{content:"| properties | text_color: '', background_color: '', edited: False, source: {id: None, display_name: None, source: None}, icon: '', allow_markdown: False, positive_feedback: None, state: 'complete', targets: [] |",props:{}}]},{tokens:[{content:"| category | message |",props:{}}]},{tokens:[{content:"| content_blocks | [] |",props:{}}]},{tokens:[{content:"| id | 341686eb-7a39-4b80-a90a-d8bf267815ef |",props:{}}]},{tokens:[{content:"| flow_id | a0c7e888-4fd6-4242-b8c8-e761ad690aeb |",props:{}}]},{tokens:[{content:"| duration | (empty) |",props:{}}]}],lang:"text"},annotations:[]}]})})]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"see-also",children:"See also"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"/components-processing",children:"Processing components"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"/components-custom-components",children:"Custom components"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://docs.pydantic.dev/latest/api/base_model/",children:"Pydantic Models"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html",children:"pandas.DataFrame"})}),"\n"]})]})}function g(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(x,{...e})}):x(e)}function j(e,t){throw new Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}},11470:(e,t,o)=>{o.d(t,{A:()=>C});var n=o(96540),s=o(18215),r=o(23104),c=o(56347),a=o(205),l=o(57485),i=o(31682),d=o(70679);function p(e){return n.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,n.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)})?.filter(Boolean)??[]}function h(e){const{values:t,children:o}=e;return(0,n.useMemo)(()=>{const e=t??function(e){return p(e).map(({props:{value:e,label:t,attributes:o,default:n}})=>({value:e,label:t,attributes:o,default:n}))}(o);return function(e){const t=(0,i.XI)(e,(e,t)=>e.value===t.value);if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map(e=>e.value).join(", ")}" found in . Every value needs to be unique.`)}(e),e},[t,o])}function u({value:e,tabValues:t}){return t.some(t=>t.value===e)}function m({queryString:e=!1,groupId:t}){const o=(0,c.W6)(),s=function({queryString:e=!1,groupId:t}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:e,groupId:t});return[(0,l.aZ)(s),(0,n.useCallback)(e=>{if(!s)return;const t=new URLSearchParams(o.location.search);t.set(s,e),o.replace({...o.location,search:t.toString()})},[s,o])]}function y(e){const{defaultValue:t,queryString:o=!1,groupId:s}=e,r=h(e),[c,l]=(0,n.useState)(()=>function({defaultValue:e,tabValues:t}){if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(e){if(!u({value:e,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${t.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const o=t.find(e=>e.default)??t[0];if(!o)throw new Error("Unexpected error: 0 tabValues");return o.value}({defaultValue:t,tabValues:r})),[i,p]=m({queryString:o,groupId:s}),[y,x]=function({groupId:e}){const t=function(e){return e?`docusaurus.tab.${e}`:null}(e),[o,s]=(0,d.Dv)(t);return[o,(0,n.useCallback)(e=>{t&&s.set(e)},[t,s])]}({groupId:s}),g=(()=>{const e=i??y;return u({value:e,tabValues:r})?e:null})();(0,a.A)(()=>{g&&l(g)},[g]);return{selectedValue:c,selectValue:(0,n.useCallback)(e=>{if(!u({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),p(e),x(e)},[p,x,r]),tabValues:r}}var x=o(92303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=o(74848);function f({className:e,block:t,selectedValue:o,selectValue:n,tabValues:c}){const a=[],{blockElementScrollPositionUntilNextRender:l}=(0,r.a_)(),i=e=>{const t=e.currentTarget,s=a.indexOf(t),r=c[s].value;r!==o&&(l(t),n(r))},d=e=>{let t=null;switch(e.key){case"Enter":i(e);break;case"ArrowRight":{const o=a.indexOf(e.currentTarget)+1;t=a[o]??a[0];break}case"ArrowLeft":{const o=a.indexOf(e.currentTarget)-1;t=a[o]??a[a.length-1];break}}t?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":t},e),children:c.map(({value:e,label:t,attributes:n})=>(0,j.jsx)("li",{role:"tab",tabIndex:o===e?0:-1,"aria-selected":o===e,ref:e=>{a.push(e)},onKeyDown:d,onClick:i,...n,className:(0,s.A)("tabs__item",g.tabItem,n?.className,{"tabs__item--active":o===e}),children:t??e},e))})}function D({lazy:e,children:t,selectedValue:o}){const r=(Array.isArray(t)?t:[t]).filter(Boolean);if(e){const e=r.find(e=>e.props.value===o);return e?(0,n.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:r.map((e,t)=>(0,n.cloneElement)(e,{key:t,hidden:e.props.value!==o}))})}function b(e){const t=y(e);return(0,j.jsxs)("div",{className:(0,s.A)("tabs-container",g.tabList),children:[(0,j.jsx)(f,{...t,...e}),(0,j.jsx)(D,{...t,...e})]})}function C(e){const t=(0,x.A)();return(0,j.jsx)(b,{...e,children:p(e.children)},String(t))}},17886:(e,t,o)=>{o.d(t,{A:()=>r});o(96540);var n=o(64058),s=o(74848);function r({name:e,...t}){const o=n[e];return o?(0,s.jsx)(o,{...t}):null}},19365:(e,t,o)=>{o.d(t,{A:()=>c});o(96540);var n=o(18215);const s={tabItem:"tabItem_Ymn6"};var r=o(74848);function c({children:e,hidden:t,className:o}){return(0,r.jsx)("div",{role:"tabpanel",className:(0,n.A)(s.tabItem,o),hidden:t,children:e})}}}]); \ No newline at end of file diff --git a/assets/js/c78349fc.b635b41b.js b/assets/js/c78349fc.b635b41b.js new file mode 100644 index 0000000000..0001e2a769 --- /dev/null +++ b/assets/js/c78349fc.b635b41b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[1446],{9684:(e,t,o)=>{o.r(t),o.d(t,{CH:()=>u,assets:()=>h,chCodeConfig:()=>m,contentTitle:()=>p,default:()=>g,frontMatter:()=>d,metadata:()=>n,toc:()=>y});const n=JSON.parse('{"id":"Develop/data-types","title":"Langflow data types","description":"Langflow components are designed to accept and produce specific types of inputs and outputs.","source":"@site/docs/Develop/data-types.mdx","sourceDirName":"Develop","slug":"/data-types","permalink":"/data-types","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Langflow data types","slug":"/data-types"},"sidebar":"docs","previous":{"title":"Telemetry","permalink":"/contributing-telemetry"},"next":{"title":"Use voice mode","permalink":"/concepts-voice-mode"}}');var s=o(74848),r=o(28453),c=o(24754),a=o(11470),l=o(19365),i=o(17886);const d={title:"Langflow data types",slug:"/data-types"},p=void 0,h={},u={annotations:c.hk,Code:c.Cy},m={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},y=[{value:"Data",id:"data",level:2},{value:"Schema and attributes",id:"schema-and-attributes",level:3},{value:"DataFrame",id:"dataframe",level:2},{value:"Schema and attributes",id:"schema-and-attributes-1",level:3},{value:"DataFrame structure",id:"dataframe-structure",level:3},{value:"Embeddings",id:"embeddings",level:2},{value:"LanguageModel",id:"languagemodel",level:2},{value:"Memory",id:"memory",level:2},{value:"Message",id:"message",level:2},{value:"Schema, structure, and attributes",id:"schema-structure-and-attributes",level:3},{value:"Message data in Input and Output components",id:"message-data-in-input-and-output-components",level:3},{value:"Tool",id:"tool",level:2},{value:"Unknown or multiple types",id:"unknown-or-multiple-types",level:2},{value:"View data types in flows",id:"view-data-types-in-flows",level:2},{value:"See also",id:"see-also",level:2}];function x(e){const t={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components},{Details:o}=t;return u||j("CH",!1),u.Code||j("CH.Code",!0),o||j("Details",!0),(0,s.jsxs)(s.Fragment,{children:[(0,s.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","\n",(0,s.jsx)(t.p,{children:"Langflow components are designed to accept and produce specific types of inputs and outputs.\nInput and output data types define the structure and flow of information between components.\nUnderstanding these structures helps you build applications that provide valid input and correctly anticipate the output format."}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.a,{href:"/concepts-components#component-ports",children:"Component ports"})," represent the data types that each component can send and receive.\nSome data types are self-evident from the fields they are attached to; for example, a ",(0,s.jsx)(t.strong,{children:"System Message"})," field accepts ",(0,s.jsx)(t.a,{href:"#message",children:"message data"}),".\n",(0,s.jsx)(t.a,{href:"/concepts-components#port-colors",children:"Port colors"})," also indicate the port's data type.\nFor example ",(0,s.jsx)(t.strong,{children:"Data"})," ports, represented by ",(0,s.jsx)(i.A,{name:"Circle",size:"16","aria-label":"Red data port",style:{color:"#dc2626",fill:"#dc2626"}}),", either accept or emit ",(0,s.jsx)(t.a,{href:"#data",children:"structured data objects"}),"."]}),"\n",(0,s.jsx)(t.p,{children:"When building flows, connect output ports to input ports of the same type (color) to transfer that type of data between two components."}),"\n",(0,s.jsx)(t.admonition,{type:"tip",children:(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:["In the ",(0,s.jsx)(t.a,{href:"/concepts-overview#workspace",children:"workspace"}),", hover over a port to see connection details for that port.\nClick a port to ",(0,s.jsx)(i.A,{name:"Search","aria-hidden":"true"})," ",(0,s.jsx)(t.strong,{children:"Search"})," for compatible components."]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:["If two components have incompatible data types, you can use a processing component like the ",(0,s.jsxs)(t.a,{href:"/components-processing#type-convert",children:[(0,s.jsx)(t.strong,{children:"Type Convert"})," component"]})," to convert the data between components."]}),"\n"]}),"\n"]})}),"\n",(0,s.jsx)(t.h2,{id:"data",children:"Data"}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Data"})," ports ",(0,s.jsx)(i.A,{name:"Circle",size:"16","aria-label":"Red data port",style:{color:"#dc2626",fill:"#dc2626"}})," accept or produce the ",(0,s.jsx)(t.code,{children:"Data"})," type, which is a structured data object, like a JSON payload that you might send to an API.\nThis data type is used to pass key-value pairs between components, such as user profiles, settings, or other structured information."]}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.code,{children:"Data"})," objects include a primary text field, indicated by a ",(0,s.jsx)(t.code,{children:"text_key"}),", and additional metadata."]}),"\n",(0,s.jsx)(t.h3,{id:"schema-and-attributes",children:"Schema and attributes"}),"\n",(0,s.jsxs)(t.p,{children:["The schema is defined in ",(0,s.jsx)(t.a,{href:"https://github.com/langflow-ai/langflow/blob/main/src/backend/base/langflow/schema/data.py",children:(0,s.jsx)(t.code,{children:"data.py"})}),"."]}),"\n",(0,s.jsx)(t.p,{children:"The following attributes are available:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.code,{children:"data"}),": A ",(0,s.jsx)(t.code,{children:"Data"})," object stores key-value pairs within the ",(0,s.jsx)(t.code,{children:".data"})," attribute. This is the ",(0,s.jsx)(t.code,{children:"Data"})," object's core dictionary. Each key is a field name, and the values can be any supported data type."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.code,{children:"text_key"}),": The key in ",(0,s.jsx)(t.code,{children:"data"})," that is considered the primary text value."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.code,{children:"default_value"}),": Fallback if ",(0,s.jsx)(t.code,{children:"text_key"})," is missing. The default ",(0,s.jsx)(t.code,{children:"text_key"})," is ",(0,s.jsx)(t.code,{children:'"text"'}),"."]}),"\n"]}),"\n",(0,s.jsx)(u.Code,{codeConfig:m,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"data_obj ",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:" Data(",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" text_key",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"text"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" data",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"{",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "text"',props:{style:{color:"#A5D6FF"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"Hello world"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "name"',props:{style:{color:"#A5D6FF"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"Charlie"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "age"',props:{style:{color:"#A5D6FF"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"28",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" },",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" default_value",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'""',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:")",props:{style:{color:"#C9D1D9"}}}]}],lang:"python"},annotations:[]}]}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.code,{children:"Data"})," objects can be serialized to JSON, created from JSON, or created from other dictionary data.\nHowever, the resulting ",(0,s.jsx)(t.code,{children:"Data"})," object is a structured object with validation and methods, not a plain dictionary.\nFor example, when serialized into JSON, the previous Python example becomes the following JSON object:"]}),"\n",(0,s.jsx)(u.Code,{codeConfig:m,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"{",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "text_key"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"text"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "data"',props:{style:{color:"#7EE787"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "text"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"Hello world"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "name"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"Charlie"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "age"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"28",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" },",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "default_value"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'""',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"}",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]}),"\n",(0,s.jsx)(t.h2,{id:"dataframe",children:"DataFrame"}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"DataFrame"})," ports ",(0,s.jsx)(i.A,{name:"Circle",size:"16","aria-label":"Pink dataframe port",style:{color:"#ec4899",fill:"#ec4899"}})," accept or produce ",(0,s.jsx)(t.a,{href:"https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html",children:"pandas DataFrames"}),", which are similar to the tabular CSV data."]}),"\n",(0,s.jsxs)(t.p,{children:["Use the ",(0,s.jsx)(t.code,{children:"DataFrame"})," type to work with data containing multiple rows or records."]}),"\n",(0,s.jsx)(t.h3,{id:"schema-and-attributes-1",children:"Schema and attributes"}),"\n",(0,s.jsxs)(t.p,{children:["The schema is defined in ",(0,s.jsx)(t.a,{href:"https://github.com/langflow-ai/langflow/blob/main/src/backend/base/langflow/schema/dataframe.py",children:(0,s.jsx)(t.code,{children:"dataframe.py"})}),"."]}),"\n",(0,s.jsx)(t.p,{children:"The following attributes are available:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Full pandas compatibility"}),": All pandas DataFrame methods and functionality are supported"]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Langflow integration"}),": Accepts lists of ",(0,s.jsxs)(t.a,{href:"#data",children:[(0,s.jsx)(t.code,{children:"Data"})," objects"]}),", dictionaries, or existing DataFrames."]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Convenience methods"}),":"]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.code,{children:"to_data_list()"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.code,{children:"add_row()"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.code,{children:"add_rows()"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.code,{children:"to_lc_documents()"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.code,{children:"to_data()"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.code,{children:"to_message()"})}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Text key support"}),": Maintains ",(0,s.jsx)(t.code,{children:"text_key"})," and ",(0,s.jsx)(t.code,{children:"default_value"})," attributes for ",(0,s.jsxs)(t.a,{href:"#data",children:[(0,s.jsx)(t.code,{children:"Data"})," object"]})," compatibility."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(t.h3,{id:"dataframe-structure",children:"DataFrame structure"}),"\n",(0,s.jsx)(t.p,{children:"A DataFrame has a tabular data structure with rows and columns.\nKeys are columns, and each object in the array is a row."}),"\n",(0,s.jsx)(u.Code,{codeConfig:m,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"[",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "name"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"Charlie Lastname"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "age"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"28",props:{style:{color:"#79C0FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "email"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"charlie.lastname@example.com"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" },",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "name"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"Alexandra Example"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "age"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"34",props:{style:{color:"#79C0FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "email"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"alexandra@example.com"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" }",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"]",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]}),"\n",(0,s.jsx)(t.p,{children:"When represented as tabular data, the preceding DataFrame object is structured as follows:"}),"\n",(0,s.jsx)(u.Code,{codeConfig:m,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"| name | age | email |",props:{}}]},{tokens:[{content:"|------|-----|-------|",props:{}}]},{tokens:[{content:"| Charlie Lastname | 28 | charlie.lastname@example.com |",props:{}}]},{tokens:[{content:"| Alexandra Example | 34 | alexandra@example.com |",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,s.jsx)(t.h2,{id:"embeddings",children:"Embeddings"}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Embeddings"})," ports ",(0,s.jsx)(i.A,{name:"Circle",size:"16","aria-label":"Emerald embeddings port",style:{color:"#10b981",fill:"#10b981"}})," emit or ingest vector embeddings to support functions like similarity search."]}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.code,{children:"Embeddings"})," data type is used specifically by components that either produce or consume vector embeddings, such as the ",(0,s.jsx)(t.a,{href:"/components-embedding-models",children:"embedding model components"})," and vector store components."]}),"\n",(0,s.jsxs)(t.p,{children:["For example, embedding model components output ",(0,s.jsx)(t.code,{children:"Embeddings"})," data that you can connect to an ",(0,s.jsx)(t.strong,{children:"Embedding"})," input port on a vector store component."]}),"\n",(0,s.jsxs)(t.p,{children:["For information about the underlying Python classes that produce ",(0,s.jsx)(t.code,{children:"Embeddings"}),", see the ",(0,s.jsx)(t.a,{href:"https://docs.langchain.com/oss/python/integrations/text_embedding",children:"LangChain Embedding models documentation"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"languagemodel",children:"LanguageModel"}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.code,{children:"LanguageModel"})," type is a specific data type that can be produced by language model components and accepted by components that use an LLM."]}),"\n",(0,s.jsxs)(t.p,{children:["When you change a language model component's output type from ",(0,s.jsx)(t.strong,{children:"Model Response"})," to ",(0,s.jsx)(t.strong,{children:"Language Model"}),", the component's output port changes from a ",(0,s.jsx)(t.strong,{children:"Message"})," port to a ",(0,s.jsx)(t.strong,{children:"Language Model"})," port ",(0,s.jsx)(i.A,{name:"Circle",size:"16","aria-label":"Fuchsia language model port",style:{color:"#c026d3",fill:"#c026d3"}}),".\nThen, you connect the outgoing ",(0,s.jsx)(t.strong,{children:"Language Model"})," port to a ",(0,s.jsx)(t.strong,{children:"Language Model"})," input port on a compatible component, such as a ",(0,s.jsx)(t.strong,{children:"Smart Function"})," component."]}),"\n",(0,s.jsxs)(t.p,{children:["For more information about using these components in flows and toggling ",(0,s.jsx)(t.code,{children:"LanguageModel"})," output, see ",(0,s.jsx)(t.a,{href:"/components-models#language-model-output-types",children:"Language model components"}),"."]}),"\n",(0,s.jsxs)(o,{children:[(0,s.jsx)("summary",{children:"LanguageModel is an instance of LangChain ChatModel"}),(0,s.jsxs)(t.p,{children:["Because Langflow is built on LangChain, ",(0,s.jsx)(t.code,{children:"LanguageModel"})," is actually an instance of a ",(0,s.jsx)(t.a,{href:"https://docs.langchain.com/oss/python/integrations/chat",children:"LangChain chat model"})," that uses the configuration parameters set in the originating component."]}),(0,s.jsxs)(t.p,{children:["Often, components produce an instance of an integrated chat model that is designed to support the specific model provider, such as ",(0,s.jsx)(t.a,{href:"https://docs.langchain.com/oss/python/integrations/chat/openai",children:(0,s.jsx)(t.code,{children:"ChatOpenAI"})})," or ",(0,s.jsx)(t.a,{href:"https://docs.langchain.com/oss/python/integrations/chat/anthropic",children:(0,s.jsx)(t.code,{children:"ChatAnthropic"})}),"."]}),(0,s.jsxs)(t.p,{children:["You can inspect the ",(0,s.jsx)(t.a,{href:"/concepts-components#component-code",children:"component code"})," to see the specific ",(0,s.jsx)(t.code,{children:"Chat"})," instance it produces."]})]}),"\n",(0,s.jsx)(t.h2,{id:"memory",children:"Memory"}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Memory"})," ports ",(0,s.jsx)(i.A,{name:"Circle",size:"16","aria-label":"Orange memory port",style:{color:"#f97316",fill:"#f97316"}})," are used to integrate a ",(0,s.jsx)(t.strong,{children:"Message History"})," component with external chat memory storage."]}),"\n",(0,s.jsxs)(t.p,{children:["For more information, see the ",(0,s.jsxs)(t.a,{href:"/components-helpers#message-history",children:[(0,s.jsx)(t.strong,{children:"Message History"})," component"]}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"message",children:"Message"}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Message"})," ports ",(0,s.jsx)(i.A,{name:"Circle",size:"16","aria-label":"Indigo message port",style:{color:"#4f46e5",fill:"#4f46e5"}})," accept or produce ",(0,s.jsx)(t.code,{children:"Message"})," data, which extends the ",(0,s.jsxs)(t.a,{href:"#data",children:[(0,s.jsx)(t.code,{children:"Data"})," type"]})," with additional fields and methods for text input typically used in chat flows."]}),"\n",(0,s.jsx)(t.p,{children:"This data type is used by many components."}),"\n",(0,s.jsxs)(t.admonition,{type:"tip",children:[(0,s.jsxs)(t.p,{children:["Components that accept or produce ",(0,s.jsx)(t.code,{children:"Message"})," data may not include all attributes in the incoming or outgoing ",(0,s.jsx)(t.code,{children:"Message"})," data.\nAs long as the data is compatible with the ",(0,s.jsx)(t.code,{children:"Message"})," schema, it can be valid."]}),(0,s.jsx)(t.p,{children:"When building flows, focus on the fields shown on each component in the workspace, rather than the data types passed between components.\nThe details of a particular data type are often only relevant when you are debugging a flow or component that isn't producing the expected output."}),(0,s.jsxs)(t.p,{children:["For example, a ",(0,s.jsx)(t.strong,{children:"Chat Input"})," component only requires the content of the ",(0,s.jsx)(t.strong,{children:"Input Text"})," (",(0,s.jsx)(t.code,{children:"input_value"}),") field.\nThe component then constructs a complete ",(0,s.jsx)(t.code,{children:"Message"})," object before passing the data to other components in the flow."]})]}),"\n",(0,s.jsx)(t.h3,{id:"schema-structure-and-attributes",children:"Schema, structure, and attributes"}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.code,{children:"Message"})," schema is defined in ",(0,s.jsx)(t.a,{href:"https://github.com/langflow-ai/langflow/blob/main/src/backend/base/langflow/schema/message.py",children:(0,s.jsx)(t.code,{children:"message.py"})}),".\nSome ",(0,s.jsx)(t.code,{children:"Message"})," attributes have their own schema definitions, such as ",(0,s.jsx)(t.a,{href:"https://github.com/langflow-ai/langflow/blob/main/src/backend/base/langflow/schema/content_block.py",children:(0,s.jsx)(t.code,{children:"content_block.py"})}),"."]}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.code,{children:"Message"})," data is structured as a JSON object.\nFor example:"]}),"\n",(0,s.jsx)(u.Code,{codeConfig:m,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"{",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "text"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"Name: Charlie Lastname, Age: 28, Email: charlie.lastname@example.com"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "sender"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"User"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "sender_name"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"Charlie Lastname"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "session_id"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"some-session-id"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "timestamp"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"2024-06-01T12:00:00Z"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "files"',props:{style:{color:"#7EE787"}}},{content:": [],",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "content_blocks"',props:{style:{color:"#7EE787"}}},{content:": [],",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "category"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"message"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"}",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]}),"\n",(0,s.jsxs)(t.p,{children:["The attributes included in a specific ",(0,s.jsx)(t.code,{children:"Message"})," object depend on the context, including the component type, flow activity, and whether the message is a query or response.\nSome common attributes include the following:"]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.code,{children:"text"}),": The main message content."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.code,{children:"sender"}),": Identifies the originator of a chat message as either ",(0,s.jsx)(t.code,{children:"User"})," or ",(0,s.jsx)(t.code,{children:"Language Model"}),"."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.code,{children:"sender_name"}),": The display name for the sender. Defaults to ",(0,s.jsx)(t.code,{children:"User"})," or ",(0,s.jsx)(t.code,{children:"Language Model"}),"."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.code,{children:"session_id"}),": The chat ",(0,s.jsx)(t.a,{href:"/session-id",children:"session identifier"}),"."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.code,{children:"flow_id"}),": The ID of the flow that the message is associated with. ",(0,s.jsx)(t.code,{children:"flow_id"})," and ",(0,s.jsx)(t.code,{children:"session_id"})," are the same if the flow doesn't use custom session IDs."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.code,{children:"timestamp"}),": The UTC timestamp that the message was sent."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.code,{children:"files"}),": A list of file paths or images included with the message"]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.code,{children:"content_blocks"}),": Container for rich content input, such as text, media, or code. Also contains error message information if the LLM can't process the input."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.code,{children:"category"}),": ",(0,s.jsx)(t.code,{children:'"message"'}),", ",(0,s.jsx)(t.code,{children:'"error"'}),", ",(0,s.jsx)(t.code,{children:'"warning"'}),", or ",(0,s.jsx)(t.code,{children:'"info"'}),"."]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:"Not all attributes are required, and some components accept message-compatible input, such as raw text input.\nThe strictness depends on the component."}),"\n",(0,s.jsx)(t.h3,{id:"message-data-in-input-and-output-components",children:"Message data in Input and Output components"}),"\n",(0,s.jsxs)(t.p,{children:["In flows with ",(0,s.jsxs)(t.a,{href:"/components-io#chat-io",children:[(0,s.jsx)(t.strong,{children:"Chat Input and Output"})," components"]}),", ",(0,s.jsx)(t.code,{children:"Message"})," data provides a consistent structure for chat interactions, and it is ideal for chatbots, conversational analysis, and other use cases based on a dialogue with an LLM or agent.\nIn these flows, the ",(0,s.jsx)(t.strong,{children:"Playground"})," chat interface prints only the ",(0,s.jsx)(t.code,{children:"Message"})," attributes that are relevant to the conversation, such as ",(0,s.jsx)(t.code,{children:"text"}),", ",(0,s.jsx)(t.code,{children:"files"}),", and error messages from ",(0,s.jsx)(t.code,{children:"content_blocks"}),".\nTo see all ",(0,s.jsx)(t.code,{children:"Message"})," attributes, inspect the message logs in the ",(0,s.jsx)(t.strong,{children:"Playground"}),"."]}),"\n",(0,s.jsxs)(t.p,{children:["In flows with ",(0,s.jsxs)(t.a,{href:"/components-io#text-io",children:[(0,s.jsx)(t.strong,{children:"Text Input and Output"})," components"]}),", ",(0,s.jsx)(t.code,{children:"Message"})," data is used to pass simple text strings without the chat-related metadata.\nThese components handle ",(0,s.jsx)(t.code,{children:"Message"})," data as independent text strings, not as part of an ongoing conversation.\nFor this reason, a flow with only ",(0,s.jsx)(t.strong,{children:"Text Input and Output"})," components isn't compatible with the ",(0,s.jsx)(t.strong,{children:"Playground"}),".\nFor more information, see ",(0,s.jsx)(t.a,{href:"/components-io",children:"Input and output components"}),"."]}),"\n",(0,s.jsxs)(t.p,{children:["When using the Langflow API, the response includes the ",(0,s.jsx)(t.code,{children:"Message"})," object along with other response data from the flow run.\nLangflow API responses can be extremely verbose, so your applications must include code to extract relevant data from the response to return to the user.\nFor an example, see the ",(0,s.jsx)(t.a,{href:"/get-started-quickstart",children:"Langflow quickstart"}),"."]}),"\n",(0,s.jsxs)(t.p,{children:["Additionally, input sent to the input port of input/output components does ",(0,s.jsx)(t.em,{children:"not"})," need to be a complete ",(0,s.jsx)(t.code,{children:"Message"})," object because the component constructs the ",(0,s.jsx)(t.code,{children:"Message"})," object that is then passed to other components in the flow or returned as flow output.\nIn fact, some components shouldn't receive a complete ",(0,s.jsx)(t.code,{children:"Message"})," object because some attributes, like ",(0,s.jsx)(t.code,{children:"timestamp"})," should be added by the component for accuracy."]}),"\n",(0,s.jsx)(t.h2,{id:"tool",children:"Tool"}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Tool"})," ports ",(0,s.jsx)(i.A,{name:"Circle",size:"16","aria-label":"Cyan tool port",style:{color:"#06b6d4",fill:"#06b6d4"}})," connect tools to an ",(0,s.jsx)(t.strong,{children:"Agent"})," component."]}),"\n",(0,s.jsxs)(t.p,{children:["Tools can be other components where you enabled ",(0,s.jsx)(t.strong,{children:"Tool Mode"}),", they can be the dedicated ",(0,s.jsx)(t.strong,{children:"MCP Tools"})," component, or they can be other components that only support ",(0,s.jsx)(t.strong,{children:"Tool Mode"}),".\nMultiple tools can be connected to the same ",(0,s.jsx)(t.strong,{children:"Agent"})," component at the same port."]}),"\n",(0,s.jsxs)(t.p,{children:["Functionally, ",(0,s.jsx)(t.code,{children:"Tool"})," data is a LangChain ",(0,s.jsx)(t.code,{children:"StructuredTool"})," object that can be used in agent flows."]}),"\n",(0,s.jsxs)(t.p,{children:["For more information, see ",(0,s.jsx)(t.a,{href:"/agents-tools",children:"Configure tools for agents"})," and ",(0,s.jsx)(t.a,{href:"/mcp-client",children:"Use Langflow as an MCP client"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"unknown-or-multiple-types",children:"Unknown or multiple types"}),"\n",(0,s.jsxs)(t.p,{children:["If a port can accept or produce multiple data types, it is represented by the gray port icon ",(0,s.jsx)(i.A,{name:"Circle",size:"16","aria-label":"Gray unknown port",style:{color:"#9CA3AF",fill:"#9CA3AF"}}),"."]}),"\n",(0,s.jsx)(t.p,{children:"Hover over the port to see the accepted or produced data types."}),"\n",(0,s.jsx)(t.h2,{id:"view-data-types-in-flows",children:"View data types in flows"}),"\n",(0,s.jsxs)(t.p,{children:["In Langflow, you can use ",(0,s.jsx)(i.A,{name:"TextSearch","aria-hidden":"true"})," ",(0,s.jsx)(t.strong,{children:"Inspect output"})," to view the output of individual components.\nThis can help you learn about the different data type and debug problems with invalid or malformed inputs and output."]}),"\n",(0,s.jsxs)(t.p,{children:["The following example shows how to inspect the output of a ",(0,s.jsxs)(t.a,{href:"/components-processing#type-convert",children:[(0,s.jsx)(t.strong,{children:"Type Convert"})," component"]}),", which can convert data from one type to another:"]}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:["Create a flow, and then connect a ",(0,s.jsx)(t.strong,{children:"Chat Input"})," component to a ",(0,s.jsx)(t.strong,{children:"Type Convert"})," component."]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:["In the ",(0,s.jsx)(t.strong,{children:"Chat Input"})," component, enter some text for the type converter to process."]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:["On the ",(0,s.jsx)(t.strong,{children:"Type Convert"})," component, click ",(0,s.jsx)(i.A,{name:"Play","aria-hidden":"true"})," ",(0,s.jsx)(t.strong,{children:"Run component"}),", and then click ",(0,s.jsx)(i.A,{name:"TextSearch","aria-hidden":"true"})," ",(0,s.jsx)(t.strong,{children:"Inspect output"}),"."]}),"\n",(0,s.jsxs)(t.p,{children:["The default output is ",(0,s.jsx)(t.code,{children:"Message"})," data, which is the same as the input coming from the ",(0,s.jsx)(t.strong,{children:"Chat Input"})," component.\nTo see the ",(0,s.jsx)(t.code,{children:"Message"})," data converted to ",(0,s.jsx)(t.code,{children:"Data"})," or ",(0,s.jsx)(t.code,{children:"DataFrame"}),", change the ",(0,s.jsx)(t.strong,{children:"Output Type"})," on the ",(0,s.jsx)(t.strong,{children:"Type Convert"})," component, and then rerun the component."]}),"\n",(0,s.jsxs)(a.A,{children:[(0,s.jsx)(l.A,{value:"Message",label:"Message",default:!0,children:(0,s.jsx)(u.Code,{codeConfig:m,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"Input text",props:{}}]}],lang:"text"},annotations:[]}]})}),(0,s.jsx)(l.A,{value:"Data",label:"Data",children:(0,s.jsx)(u.Code,{codeConfig:m,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"{",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "timestamp"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"2025-07-15 20:56:20 UTC"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "sender"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"User"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "sender_name"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"User"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "session_id"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"a0c7e888-4fd6-4242-b8c8-e761ad690aeb"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "text"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'""',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "files"',props:{style:{color:"#7EE787"}}},{content:": [],",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "error"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"false",props:{style:{color:"#79C0FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "edit"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"false",props:{style:{color:"#79C0FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "properties"',props:{style:{color:"#7EE787"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "text_color"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'""',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "background_color"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'""',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "edited"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"false",props:{style:{color:"#79C0FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "source"',props:{style:{color:"#7EE787"}}},{content:": {",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "id"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"null",props:{style:{color:"#79C0FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "display_name"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"null",props:{style:{color:"#79C0FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "source"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"null",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" },",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "icon"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'""',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "allow_markdown"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"false",props:{style:{color:"#79C0FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "positive_feedback"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"null",props:{style:{color:"#79C0FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "state"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"complete"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "targets"',props:{style:{color:"#7EE787"}}},{content:": []",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" },",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "category"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"message"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "content_blocks"',props:{style:{color:"#7EE787"}}},{content:": [],",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "id"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"9da72da2-efbb-4ccd-90ad-b32429b0418e"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "flow_id"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"a0c7e888-4fd6-4242-b8c8-e761ad690aeb"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "duration"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"null",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:"}",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]})}),(0,s.jsx)(l.A,{value:"DataFrame",label:"DataFrame",children:(0,s.jsx)(u.Code,{codeConfig:m,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"| Field | Value |",props:{}}]},{tokens:[{content:"|-------|-------|",props:{}}]},{tokens:[{content:"| timestamp | 2025-07-15 20:56:11 UTC |",props:{}}]},{tokens:[{content:"| sender | User |",props:{}}]},{tokens:[{content:"| sender_name | User |",props:{}}]},{tokens:[{content:"| session_id | a0c7e888-4fd6-4242-b8c8-e761ad690aeb |",props:{}}]},{tokens:[{content:"| text | (empty) |",props:{}}]},{tokens:[{content:"| files | [] |",props:{}}]},{tokens:[{content:"| error | False |",props:{}}]},{tokens:[{content:"| edit | False |",props:{}}]},{tokens:[{content:"| properties | text_color: '', background_color: '', edited: False, source: {id: None, display_name: None, source: None}, icon: '', allow_markdown: False, positive_feedback: None, state: 'complete', targets: [] |",props:{}}]},{tokens:[{content:"| category | message |",props:{}}]},{tokens:[{content:"| content_blocks | [] |",props:{}}]},{tokens:[{content:"| id | 341686eb-7a39-4b80-a90a-d8bf267815ef |",props:{}}]},{tokens:[{content:"| flow_id | a0c7e888-4fd6-4242-b8c8-e761ad690aeb |",props:{}}]},{tokens:[{content:"| duration | (empty) |",props:{}}]}],lang:"text"},annotations:[]}]})})]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"see-also",children:"See also"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"/components-processing",children:"Processing components"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"/components-custom-components",children:"Custom components"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://docs.pydantic.dev/latest/api/base_model/",children:"Pydantic Models"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html",children:"pandas.DataFrame"})}),"\n"]})]})}function g(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(x,{...e})}):x(e)}function j(e,t){throw new Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}},11470:(e,t,o)=>{o.d(t,{A:()=>C});var n=o(96540),s=o(18215),r=o(23104),c=o(56347),a=o(205),l=o(57485),i=o(31682),d=o(70679);function p(e){return n.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,n.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)})?.filter(Boolean)??[]}function h(e){const{values:t,children:o}=e;return(0,n.useMemo)(()=>{const e=t??function(e){return p(e).map(({props:{value:e,label:t,attributes:o,default:n}})=>({value:e,label:t,attributes:o,default:n}))}(o);return function(e){const t=(0,i.XI)(e,(e,t)=>e.value===t.value);if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map(e=>e.value).join(", ")}" found in . Every value needs to be unique.`)}(e),e},[t,o])}function u({value:e,tabValues:t}){return t.some(t=>t.value===e)}function m({queryString:e=!1,groupId:t}){const o=(0,c.W6)(),s=function({queryString:e=!1,groupId:t}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:e,groupId:t});return[(0,l.aZ)(s),(0,n.useCallback)(e=>{if(!s)return;const t=new URLSearchParams(o.location.search);t.set(s,e),o.replace({...o.location,search:t.toString()})},[s,o])]}function y(e){const{defaultValue:t,queryString:o=!1,groupId:s}=e,r=h(e),[c,l]=(0,n.useState)(()=>function({defaultValue:e,tabValues:t}){if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(e){if(!u({value:e,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${t.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const o=t.find(e=>e.default)??t[0];if(!o)throw new Error("Unexpected error: 0 tabValues");return o.value}({defaultValue:t,tabValues:r})),[i,p]=m({queryString:o,groupId:s}),[y,x]=function({groupId:e}){const t=function(e){return e?`docusaurus.tab.${e}`:null}(e),[o,s]=(0,d.Dv)(t);return[o,(0,n.useCallback)(e=>{t&&s.set(e)},[t,s])]}({groupId:s}),g=(()=>{const e=i??y;return u({value:e,tabValues:r})?e:null})();(0,a.A)(()=>{g&&l(g)},[g]);return{selectedValue:c,selectValue:(0,n.useCallback)(e=>{if(!u({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),p(e),x(e)},[p,x,r]),tabValues:r}}var x=o(92303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=o(74848);function f({className:e,block:t,selectedValue:o,selectValue:n,tabValues:c}){const a=[],{blockElementScrollPositionUntilNextRender:l}=(0,r.a_)(),i=e=>{const t=e.currentTarget,s=a.indexOf(t),r=c[s].value;r!==o&&(l(t),n(r))},d=e=>{let t=null;switch(e.key){case"Enter":i(e);break;case"ArrowRight":{const o=a.indexOf(e.currentTarget)+1;t=a[o]??a[0];break}case"ArrowLeft":{const o=a.indexOf(e.currentTarget)-1;t=a[o]??a[a.length-1];break}}t?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":t},e),children:c.map(({value:e,label:t,attributes:n})=>(0,j.jsx)("li",{role:"tab",tabIndex:o===e?0:-1,"aria-selected":o===e,ref:e=>{a.push(e)},onKeyDown:d,onClick:i,...n,className:(0,s.A)("tabs__item",g.tabItem,n?.className,{"tabs__item--active":o===e}),children:t??e},e))})}function D({lazy:e,children:t,selectedValue:o}){const r=(Array.isArray(t)?t:[t]).filter(Boolean);if(e){const e=r.find(e=>e.props.value===o);return e?(0,n.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:r.map((e,t)=>(0,n.cloneElement)(e,{key:t,hidden:e.props.value!==o}))})}function b(e){const t=y(e);return(0,j.jsxs)("div",{className:(0,s.A)("tabs-container",g.tabList),children:[(0,j.jsx)(f,{...t,...e}),(0,j.jsx)(D,{...t,...e})]})}function C(e){const t=(0,x.A)();return(0,j.jsx)(b,{...e,children:p(e.children)},String(t))}},17886:(e,t,o)=>{o.d(t,{A:()=>r});o(96540);var n=o(64058),s=o(74848);function r({name:e,...t}){const o=n[e];return o?(0,s.jsx)(o,{...t}):null}},19365:(e,t,o)=>{o.d(t,{A:()=>c});o(96540);var n=o(18215);const s={tabItem:"tabItem_Ymn6"};var r=o(74848);function c({children:e,hidden:t,className:o}){return(0,r.jsx)("div",{role:"tabpanel",className:(0,n.A)(s.tabItem,o),hidden:t,children:e})}}}]); \ No newline at end of file diff --git a/assets/js/cb17b4e0.0ff35994.js b/assets/js/cb17b4e0.0ff35994.js new file mode 100644 index 0000000000..d8be4de5f3 --- /dev/null +++ b/assets/js/cb17b4e0.0ff35994.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[4085],{1716:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>s,toc:()=>h});const s=JSON.parse('{"id":"Components/bundles-deepseek","title":"DeepSeek","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-deepseek.mdx","sourceDirName":"Components","slug":"/bundles-deepseek","permalink":"/bundles-deepseek","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"DeepSeek","slug":"/bundles-deepseek"},"sidebar":"docs","previous":{"title":"DataStax","permalink":"/bundles-datastax"},"next":{"title":"Docling","permalink":"/bundles-docling"}}');var r=t(74848),d=t(28453),o=t(17886),a=t(31929);const i={title:"DeepSeek",slug:"/bundles-deepseek"},l=void 0,c={},h=[{value:"DeepSeek text generation",id:"deepseek-text-generation",level:2},{value:"DeepSeek text generation parameters",id:"deepseek-text-generation-parameters",level:3},...a.RM];function p(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,d.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:[(0,r.jsx)(o.A,{name:"Blocks","aria-hidden":"true"})," ",(0,r.jsx)(n.a,{href:"/components-bundle-components",children:(0,r.jsx)(n.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,r.jsxs)(n.p,{children:["This page describes the components that are available in the ",(0,r.jsx)(n.strong,{children:"DeepSeek"})," bundle."]}),"\n",(0,r.jsxs)(n.p,{children:["For more information about DeepSeek features and functionality used by DeepSeek components, see the ",(0,r.jsx)(n.a,{href:"https://api-docs.deepseek.com/",children:"DeepSeek documentation"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"deepseek-text-generation",children:"DeepSeek text generation"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.strong,{children:"DeepSeek"})," component generates text using DeepSeek's language models."]}),"\n",(0,r.jsxs)(n.p,{children:["It can output either a ",(0,r.jsx)(n.strong,{children:"Model Response"})," (",(0,r.jsx)(n.a,{href:"/data-types#message",children:(0,r.jsx)(n.code,{children:"Message"})}),") or a ",(0,r.jsx)(n.strong,{children:"Language Model"})," (",(0,r.jsx)(n.a,{href:"/data-types#languagemodel",children:(0,r.jsx)(n.code,{children:"LanguageModel"})}),")."]}),"\n",(0,r.jsxs)(n.p,{children:["Use the ",(0,r.jsx)(n.strong,{children:"Language Model"})," output when you want to use a DeepSeek model as the LLM for another LLM-driven component, such as an ",(0,r.jsx)(n.strong,{children:"Agent"})," or ",(0,r.jsx)(n.strong,{children:"Smart Function"})," component."]}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see ",(0,r.jsx)(n.a,{href:"/components-models",children:"Language model components"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"deepseek-text-generation-parameters",children:"DeepSeek text generation parameters"}),"\n",(0,r.jsx)(a.Ay,{}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Name"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"max_tokens"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsxs)(n.td,{children:["Input parameter. Maximum number of tokens to generate. Set to ",(0,r.jsx)(n.code,{children:"0"})," for unlimited. Range: ",(0,r.jsx)(n.code,{children:"0-128000"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model_kwargs"}),(0,r.jsx)(n.td,{children:"Dictionary"}),(0,r.jsx)(n.td,{children:"Input parameter. Additional keyword arguments for the model."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"json_mode"}),(0,r.jsx)(n.td,{children:"Boolean"}),(0,r.jsxs)(n.td,{children:["Input parameter. If ",(0,r.jsx)(n.code,{children:"true"}),", outputs JSON regardless of passing a schema."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model_name"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsxs)(n.td,{children:["Input parameter. The DeepSeek model to use. Default: ",(0,r.jsx)(n.code,{children:"deepseek-chat"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"api_base"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsxs)(n.td,{children:["Input parameter. Base URL for API requests. Default: ",(0,r.jsx)(n.code,{children:"https://api.deepseek.com"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"api_key"}),(0,r.jsx)(n.td,{children:"SecretString"}),(0,r.jsx)(n.td,{children:"Input parameter. Your DeepSeek API key for authentication."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"temperature"}),(0,r.jsx)(n.td,{children:"Float"}),(0,r.jsxs)(n.td,{children:["Input parameter. Controls randomness in responses. Range: ",(0,r.jsx)(n.code,{children:"[0.0, 2.0]"}),". Default: ",(0,r.jsx)(n.code,{children:"1.0"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"seed"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsx)(n.td,{children:"Input parameter. Number initialized for random number generation. Use the same seed integer for more reproducible results, and use a different seed number for more random results."})]})]})]})]})}function u(e={}){const{wrapper:n}={...(0,d.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},17886:(e,n,t)=>{t.d(n,{A:()=>d});t(96540);var s=t(64058),r=t(74848);function d({name:e,...n}){const t=s[e];return t?(0,r.jsx)(t,{...n}):null}},31929:(e,n,t)=>{t.d(n,{Ay:()=>i,RM:()=>o});var s=t(74848),r=t(28453),d=t(17886);const o=[];function a(e){const n={a:"a",p:"p",strong:"strong",...(0,r.R)(),...e.components};return(0,s.jsxs)(n.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,s.jsx)(d.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Controls"})," in the ",(0,s.jsx)(n.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function i(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}}}]); \ No newline at end of file diff --git a/assets/js/cb17b4e0.567ac2a0.js b/assets/js/cb17b4e0.567ac2a0.js deleted file mode 100644 index 3babdd585a..0000000000 --- a/assets/js/cb17b4e0.567ac2a0.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[4085],{1716:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>s,toc:()=>h});const s=JSON.parse('{"id":"Components/bundles-deepseek","title":"DeepSeek","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-deepseek.mdx","sourceDirName":"Components","slug":"/bundles-deepseek","permalink":"/bundles-deepseek","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"DeepSeek","slug":"/bundles-deepseek"},"sidebar":"docs","previous":{"title":"DataStax","permalink":"/bundles-datastax"},"next":{"title":"Docling","permalink":"/bundles-docling"}}');var r=t(74848),d=t(28453),o=t(17886),a=t(31929);const i={title:"DeepSeek",slug:"/bundles-deepseek"},l=void 0,c={},h=[{value:"DeepSeek text generation",id:"deepseek-text-generation",level:2},{value:"DeepSeek text generation parameters",id:"deepseek-text-generation-parameters",level:3},...a.RM];function p(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,d.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:[(0,r.jsx)(o.A,{name:"Blocks","aria-hidden":"true"})," ",(0,r.jsx)(n.a,{href:"/components-bundle-components",children:(0,r.jsx)(n.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,r.jsxs)(n.p,{children:["This page describes the components that are available in the ",(0,r.jsx)(n.strong,{children:"DeepSeek"})," bundle."]}),"\n",(0,r.jsxs)(n.p,{children:["For more information about DeepSeek features and functionality used by DeepSeek components, see the ",(0,r.jsx)(n.a,{href:"https://api-docs.deepseek.com/",children:"DeepSeek documentation"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"deepseek-text-generation",children:"DeepSeek text generation"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.strong,{children:"DeepSeek"})," component generates text using DeepSeek's language models."]}),"\n",(0,r.jsxs)(n.p,{children:["It can output either a ",(0,r.jsx)(n.strong,{children:"Model Response"})," (",(0,r.jsx)(n.a,{href:"/data-types#message",children:(0,r.jsx)(n.code,{children:"Message"})}),") or a ",(0,r.jsx)(n.strong,{children:"Language Model"})," (",(0,r.jsx)(n.a,{href:"/data-types#languagemodel",children:(0,r.jsx)(n.code,{children:"LanguageModel"})}),")."]}),"\n",(0,r.jsxs)(n.p,{children:["Use the ",(0,r.jsx)(n.strong,{children:"Language Model"})," output when you want to use a DeepSeek model as the LLM for another LLM-driven component, such as an ",(0,r.jsx)(n.strong,{children:"Agent"})," or ",(0,r.jsx)(n.strong,{children:"Smart Transform"})," component."]}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see ",(0,r.jsx)(n.a,{href:"/components-models",children:"Language model components"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"deepseek-text-generation-parameters",children:"DeepSeek text generation parameters"}),"\n",(0,r.jsx)(a.Ay,{}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Name"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"max_tokens"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsxs)(n.td,{children:["Input parameter. Maximum number of tokens to generate. Set to ",(0,r.jsx)(n.code,{children:"0"})," for unlimited. Range: ",(0,r.jsx)(n.code,{children:"0-128000"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model_kwargs"}),(0,r.jsx)(n.td,{children:"Dictionary"}),(0,r.jsx)(n.td,{children:"Input parameter. Additional keyword arguments for the model."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"json_mode"}),(0,r.jsx)(n.td,{children:"Boolean"}),(0,r.jsxs)(n.td,{children:["Input parameter. If ",(0,r.jsx)(n.code,{children:"true"}),", outputs JSON regardless of passing a schema."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model_name"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsxs)(n.td,{children:["Input parameter. The DeepSeek model to use. Default: ",(0,r.jsx)(n.code,{children:"deepseek-chat"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"api_base"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsxs)(n.td,{children:["Input parameter. Base URL for API requests. Default: ",(0,r.jsx)(n.code,{children:"https://api.deepseek.com"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"api_key"}),(0,r.jsx)(n.td,{children:"SecretString"}),(0,r.jsx)(n.td,{children:"Input parameter. Your DeepSeek API key for authentication."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"temperature"}),(0,r.jsx)(n.td,{children:"Float"}),(0,r.jsxs)(n.td,{children:["Input parameter. Controls randomness in responses. Range: ",(0,r.jsx)(n.code,{children:"[0.0, 2.0]"}),". Default: ",(0,r.jsx)(n.code,{children:"1.0"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"seed"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsx)(n.td,{children:"Input parameter. Number initialized for random number generation. Use the same seed integer for more reproducible results, and use a different seed number for more random results."})]})]})]})]})}function u(e={}){const{wrapper:n}={...(0,d.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},17886:(e,n,t)=>{t.d(n,{A:()=>d});t(96540);var s=t(64058),r=t(74848);function d({name:e,...n}){const t=s[e];return t?(0,r.jsx)(t,{...n}):null}},31929:(e,n,t)=>{t.d(n,{Ay:()=>i,RM:()=>o});var s=t(74848),r=t(28453),d=t(17886);const o=[];function a(e){const n={a:"a",p:"p",strong:"strong",...(0,r.R)(),...e.components};return(0,s.jsxs)(n.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,s.jsx)(d.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Controls"})," in the ",(0,s.jsx)(n.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function i(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}}}]); \ No newline at end of file diff --git a/assets/js/d8c8efb9.a9a1a028.js b/assets/js/d8c8efb9.5d2e519a.js similarity index 56% rename from assets/js/d8c8efb9.a9a1a028.js rename to assets/js/d8c8efb9.5d2e519a.js index 7b987354d6..8c1a76c6ef 100644 --- a/assets/js/d8c8efb9.a9a1a028.js +++ b/assets/js/d8c8efb9.5d2e519a.js @@ -1 +1 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[9712],{17886:(e,n,t)=>{t.d(n,{A:()=>o});t(96540);var r=t(64058),s=t(74848);function o({name:e,...n}){const t=r[e];return t?(0,s.jsx)(t,{...n}):null}},23592:(e,n,t)=>{t.d(n,{A:()=>r});const r=t.p+"assets/images/component-groq-d3df19923f67805fd483632d537af9f4.png"},40561:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>g,frontMatter:()=>i,metadata:()=>r,toc:()=>c});const r=JSON.parse('{"id":"Components/bundles-groq","title":"Groq","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-groq.mdx","sourceDirName":"Components","slug":"/bundles-groq","permalink":"/bundles-groq","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Groq","slug":"/bundles-groq"},"sidebar":"docs","previous":{"title":"Google components","permalink":"/bundles-google"},"next":{"title":"Hugging Face","permalink":"/bundles-huggingface"}}');var s=t(74848),o=t(28453),d=t(17886);const i={title:"Groq",slug:"/bundles-groq"},a=void 0,l={},c=[{value:"Groq text generation",id:"groq-text-generation",level:2},{value:"Groq text generation parameters",id:"groq-text-generation-parameters",level:3}];function h(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",img:"img",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:[(0,s.jsx)(d.A,{name:"Blocks","aria-hidden":"true"})," ",(0,s.jsx)(n.a,{href:"/components-bundle-components",children:(0,s.jsx)(n.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,s.jsxs)(n.p,{children:["This page describes the components that are available in the ",(0,s.jsx)(n.strong,{children:"Groq"})," bundle."]}),"\n",(0,s.jsxs)(n.p,{children:["For more information, see the ",(0,s.jsx)(n.a,{href:"https://groq.com/",children:"Groq documentation"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"groq-text-generation",children:"Groq text generation"}),"\n",(0,s.jsx)(n.p,{children:"This component generates text using Groq's language models."}),"\n",(0,s.jsxs)(n.p,{children:["It can output either a ",(0,s.jsx)(n.strong,{children:"Model Response"})," (",(0,s.jsx)(n.a,{href:"/data-types#message",children:(0,s.jsx)(n.code,{children:"Message"})}),") or a ",(0,s.jsx)(n.strong,{children:"Language Model"})," (",(0,s.jsx)(n.a,{href:"/data-types#languagemodel",children:(0,s.jsx)(n.code,{children:"LanguageModel"})}),").\nSpecifically, the ",(0,s.jsx)(n.strong,{children:"Language Model"})," output is an instance of ",(0,s.jsx)(n.a,{href:"https://docs.langchain.com/oss/python/integrations/chat/groq",children:(0,s.jsx)(n.code,{children:"ChatGroq"})})," configured according to the component's parameters."]}),"\n",(0,s.jsxs)(n.p,{children:["Use the ",(0,s.jsx)(n.strong,{children:"Language Model"})," output when you want to use a Groq model as the LLM for another LLM-driven component, such as an ",(0,s.jsx)(n.strong,{children:"Agent"})," or ",(0,s.jsx)(n.strong,{children:"Smart Transform"})," component."]}),"\n",(0,s.jsxs)(n.p,{children:["For more information, see ",(0,s.jsx)(n.a,{href:"/components-models",children:"Language model components"}),"."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Groq component in a basic prompting flow",src:t(23592).A+"",width:"1982",height:"1194"})}),"\n",(0,s.jsx)(n.h3,{id:"groq-text-generation-parameters",children:"Groq text generation parameters"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Name"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"groq_api_key"}),(0,s.jsx)(n.td,{children:"SecretString"}),(0,s.jsx)(n.td,{children:"Your Groq API key."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"groq_api_base"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsxs)(n.td,{children:["Base URL path for API requests. Default: ",(0,s.jsx)(n.code,{children:"https://api.groq.com"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"max_tokens"}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsx)(n.td,{children:"The maximum number of tokens to generate."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"temperature"}),(0,s.jsx)(n.td,{children:"Float"}),(0,s.jsxs)(n.td,{children:["Controls randomness in the output. Range: ",(0,s.jsx)(n.code,{children:"[0.0, 1.0]"}),". Default: ",(0,s.jsx)(n.code,{children:"0.1"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"n"}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsx)(n.td,{children:"Number of chat completions to generate for each prompt."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"model_name"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsxs)(n.td,{children:["The name of the Groq model to use. Options are dynamically fetched from the Groq API after entering your API key and URL. To refresh your list of models, click ",(0,s.jsx)(d.A,{name:"RefreshCw","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Refresh"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"tool_mode_enabled"}),(0,s.jsx)(n.td,{children:"Boolean"}),(0,s.jsx)(n.td,{children:"If enabled, the component only displays models that work with tools."})]})]})]})]})}function g(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}}}]); \ No newline at end of file +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[9712],{17886:(e,n,t)=>{t.d(n,{A:()=>o});t(96540);var r=t(64058),s=t(74848);function o({name:e,...n}){const t=r[e];return t?(0,s.jsx)(t,{...n}):null}},23592:(e,n,t)=>{t.d(n,{A:()=>r});const r=t.p+"assets/images/component-groq-d3df19923f67805fd483632d537af9f4.png"},40561:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>g,frontMatter:()=>i,metadata:()=>r,toc:()=>c});const r=JSON.parse('{"id":"Components/bundles-groq","title":"Groq","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-groq.mdx","sourceDirName":"Components","slug":"/bundles-groq","permalink":"/bundles-groq","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Groq","slug":"/bundles-groq"},"sidebar":"docs","previous":{"title":"Google components","permalink":"/bundles-google"},"next":{"title":"Hugging Face","permalink":"/bundles-huggingface"}}');var s=t(74848),o=t(28453),d=t(17886);const i={title:"Groq",slug:"/bundles-groq"},a=void 0,l={},c=[{value:"Groq text generation",id:"groq-text-generation",level:2},{value:"Groq text generation parameters",id:"groq-text-generation-parameters",level:3}];function h(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",img:"img",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:[(0,s.jsx)(d.A,{name:"Blocks","aria-hidden":"true"})," ",(0,s.jsx)(n.a,{href:"/components-bundle-components",children:(0,s.jsx)(n.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,s.jsxs)(n.p,{children:["This page describes the components that are available in the ",(0,s.jsx)(n.strong,{children:"Groq"})," bundle."]}),"\n",(0,s.jsxs)(n.p,{children:["For more information, see the ",(0,s.jsx)(n.a,{href:"https://groq.com/",children:"Groq documentation"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"groq-text-generation",children:"Groq text generation"}),"\n",(0,s.jsx)(n.p,{children:"This component generates text using Groq's language models."}),"\n",(0,s.jsxs)(n.p,{children:["It can output either a ",(0,s.jsx)(n.strong,{children:"Model Response"})," (",(0,s.jsx)(n.a,{href:"/data-types#message",children:(0,s.jsx)(n.code,{children:"Message"})}),") or a ",(0,s.jsx)(n.strong,{children:"Language Model"})," (",(0,s.jsx)(n.a,{href:"/data-types#languagemodel",children:(0,s.jsx)(n.code,{children:"LanguageModel"})}),").\nSpecifically, the ",(0,s.jsx)(n.strong,{children:"Language Model"})," output is an instance of ",(0,s.jsx)(n.a,{href:"https://docs.langchain.com/oss/python/integrations/chat/groq",children:(0,s.jsx)(n.code,{children:"ChatGroq"})})," configured according to the component's parameters."]}),"\n",(0,s.jsxs)(n.p,{children:["Use the ",(0,s.jsx)(n.strong,{children:"Language Model"})," output when you want to use a Groq model as the LLM for another LLM-driven component, such as an ",(0,s.jsx)(n.strong,{children:"Agent"})," or ",(0,s.jsx)(n.strong,{children:"Smart Function"})," component."]}),"\n",(0,s.jsxs)(n.p,{children:["For more information, see ",(0,s.jsx)(n.a,{href:"/components-models",children:"Language model components"}),"."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Groq component in a basic prompting flow",src:t(23592).A+"",width:"1982",height:"1194"})}),"\n",(0,s.jsx)(n.h3,{id:"groq-text-generation-parameters",children:"Groq text generation parameters"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Name"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"groq_api_key"}),(0,s.jsx)(n.td,{children:"SecretString"}),(0,s.jsx)(n.td,{children:"Your Groq API key."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"groq_api_base"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsxs)(n.td,{children:["Base URL path for API requests. Default: ",(0,s.jsx)(n.code,{children:"https://api.groq.com"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"max_tokens"}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsx)(n.td,{children:"The maximum number of tokens to generate."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"temperature"}),(0,s.jsx)(n.td,{children:"Float"}),(0,s.jsxs)(n.td,{children:["Controls randomness in the output. Range: ",(0,s.jsx)(n.code,{children:"[0.0, 1.0]"}),". Default: ",(0,s.jsx)(n.code,{children:"0.1"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"n"}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsx)(n.td,{children:"Number of chat completions to generate for each prompt."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"model_name"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsxs)(n.td,{children:["The name of the Groq model to use. Options are dynamically fetched from the Groq API after entering your API key and URL. To refresh your list of models, click ",(0,s.jsx)(d.A,{name:"RefreshCw","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Refresh"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"tool_mode_enabled"}),(0,s.jsx)(n.td,{children:"Boolean"}),(0,s.jsx)(n.td,{children:"If enabled, the component only displays models that work with tools."})]})]})]})]})}function g(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}}}]); \ No newline at end of file diff --git a/assets/js/da1ad91e.50f64f22.js b/assets/js/da1ad91e.da8dce60.js similarity index 53% rename from assets/js/da1ad91e.50f64f22.js rename to assets/js/da1ad91e.da8dce60.js index 88eb120ccc..9215f73bc5 100644 --- a/assets/js/da1ad91e.50f64f22.js +++ b/assets/js/da1ad91e.da8dce60.js @@ -1 +1 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[8571],{10636:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>h,contentTitle:()=>d,default:()=>u,frontMatter:()=>c,metadata:()=>r,toc:()=>l});const r=JSON.parse('{"id":"Components/bundles-anthropic","title":"Anthropic","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-anthropic.mdx","sourceDirName":"Components","slug":"/bundles-anthropic","permalink":"/bundles-anthropic","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Anthropic","slug":"/bundles-anthropic"},"sidebar":"docs","previous":{"title":"Amazon","permalink":"/bundles-amazon"},"next":{"title":"Apify","permalink":"/bundles-apify"}}');var s=t(74848),o=t(28453),i=t(17886),a=t(31929);const c={title:"Anthropic",slug:"/bundles-anthropic"},d=void 0,h={},l=[{value:"Anthropic text generation",id:"anthropic-text-generation",level:2},{value:"Anthropic text generation parameters",id:"anthropic-text-generation-parameters",level:3},...a.RM];function p(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:[(0,s.jsx)(i.A,{name:"Blocks","aria-hidden":"true"})," ",(0,s.jsx)(n.a,{href:"/components-bundle-components",children:(0,s.jsx)(n.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,s.jsxs)(n.p,{children:["This page describes the components that are available in the ",(0,s.jsx)(n.strong,{children:"Anthropic"})," bundle."]}),"\n",(0,s.jsxs)(n.p,{children:["For more information about Anthropic features and functionality used by Anthropic components, see the ",(0,s.jsx)(n.a,{href:"https://docs.anthropic.com/en/docs/intro",children:"Anthropic documentation"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"anthropic-text-generation",children:"Anthropic text generation"}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.strong,{children:"Anthropic"})," component generates text using Anthropic Chat and Language models like Claude."]}),"\n",(0,s.jsxs)(n.p,{children:["It can output either a ",(0,s.jsx)(n.strong,{children:"Model Response"})," (",(0,s.jsx)(n.a,{href:"/data-types#message",children:(0,s.jsx)(n.code,{children:"Message"})}),") or a ",(0,s.jsx)(n.strong,{children:"Language Model"})," (",(0,s.jsx)(n.a,{href:"/data-types#languagemodel",children:(0,s.jsx)(n.code,{children:"LanguageModel"})}),").\nSpecifically, the ",(0,s.jsx)(n.strong,{children:"Language Model"})," output is an instance of ",(0,s.jsx)(n.a,{href:"https://docs.langchain.com/oss/python/integrations/chat/anthropic",children:(0,s.jsx)(n.code,{children:"ChatAnthropic"})})," configured according to the component's parameters."]}),"\n",(0,s.jsxs)(n.p,{children:["Use the ",(0,s.jsx)(n.strong,{children:"Language Model"})," output when you want to use an Anthropic model as the LLM for another LLM-driven component, such as an ",(0,s.jsx)(n.strong,{children:"Agent"})," or ",(0,s.jsx)(n.strong,{children:"Smart Transform"})," component."]}),"\n",(0,s.jsxs)(n.p,{children:["For more information, see ",(0,s.jsx)(n.a,{href:"/components-models",children:"Language model components"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"anthropic-text-generation-parameters",children:"Anthropic text generation parameters"}),"\n",(0,s.jsx)(a.Ay,{}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Name"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"max_tokens"}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsxs)(n.td,{children:["Input parameter. The maximum number of tokens to generate. Set to 0 for unlimited tokens. Default: ",(0,s.jsx)(n.code,{children:"4096"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"model"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The name of the Anthropic model to use. Options include various Claude 3 models."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"anthropic_api_key"}),(0,s.jsx)(n.td,{children:"SecretString"}),(0,s.jsx)(n.td,{children:"Input parameter. Your Anthropic API key for authentication."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"temperature"}),(0,s.jsx)(n.td,{children:"Float"}),(0,s.jsxs)(n.td,{children:["Input parameter. Controls randomness in the output. Default: ",(0,s.jsx)(n.code,{children:"0.1"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"anthropic_api_url"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsxs)(n.td,{children:["Input parameter. Endpoint of the Anthropic API. Defaults to ",(0,s.jsx)(n.code,{children:"https://api.anthropic.com"})," if not specified."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"prefill"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. Prefill text to guide the model's response."})]})]})]})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(p,{...e})}):p(e)}},17886:(e,n,t)=>{t.d(n,{A:()=>o});t(96540);var r=t(64058),s=t(74848);function o({name:e,...n}){const t=r[e];return t?(0,s.jsx)(t,{...n}):null}},31929:(e,n,t)=>{t.d(n,{Ay:()=>c,RM:()=>i});var r=t(74848),s=t(28453),o=t(17886);const i=[];function a(e){const n={a:"a",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,r.jsxs)(n.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,r.jsx)(o.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,r.jsx)(n.strong,{children:"Controls"})," in the ",(0,r.jsx)(n.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function c(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}}}]); \ No newline at end of file +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[8571],{10636:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>h,contentTitle:()=>d,default:()=>u,frontMatter:()=>c,metadata:()=>r,toc:()=>l});const r=JSON.parse('{"id":"Components/bundles-anthropic","title":"Anthropic","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-anthropic.mdx","sourceDirName":"Components","slug":"/bundles-anthropic","permalink":"/bundles-anthropic","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Anthropic","slug":"/bundles-anthropic"},"sidebar":"docs","previous":{"title":"Amazon","permalink":"/bundles-amazon"},"next":{"title":"Apify","permalink":"/bundles-apify"}}');var s=t(74848),o=t(28453),i=t(17886),a=t(31929);const c={title:"Anthropic",slug:"/bundles-anthropic"},d=void 0,h={},l=[{value:"Anthropic text generation",id:"anthropic-text-generation",level:2},{value:"Anthropic text generation parameters",id:"anthropic-text-generation-parameters",level:3},...a.RM];function p(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:[(0,s.jsx)(i.A,{name:"Blocks","aria-hidden":"true"})," ",(0,s.jsx)(n.a,{href:"/components-bundle-components",children:(0,s.jsx)(n.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,s.jsxs)(n.p,{children:["This page describes the components that are available in the ",(0,s.jsx)(n.strong,{children:"Anthropic"})," bundle."]}),"\n",(0,s.jsxs)(n.p,{children:["For more information about Anthropic features and functionality used by Anthropic components, see the ",(0,s.jsx)(n.a,{href:"https://docs.anthropic.com/en/docs/intro",children:"Anthropic documentation"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"anthropic-text-generation",children:"Anthropic text generation"}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.strong,{children:"Anthropic"})," component generates text using Anthropic Chat and Language models like Claude."]}),"\n",(0,s.jsxs)(n.p,{children:["It can output either a ",(0,s.jsx)(n.strong,{children:"Model Response"})," (",(0,s.jsx)(n.a,{href:"/data-types#message",children:(0,s.jsx)(n.code,{children:"Message"})}),") or a ",(0,s.jsx)(n.strong,{children:"Language Model"})," (",(0,s.jsx)(n.a,{href:"/data-types#languagemodel",children:(0,s.jsx)(n.code,{children:"LanguageModel"})}),").\nSpecifically, the ",(0,s.jsx)(n.strong,{children:"Language Model"})," output is an instance of ",(0,s.jsx)(n.a,{href:"https://docs.langchain.com/oss/python/integrations/chat/anthropic",children:(0,s.jsx)(n.code,{children:"ChatAnthropic"})})," configured according to the component's parameters."]}),"\n",(0,s.jsxs)(n.p,{children:["Use the ",(0,s.jsx)(n.strong,{children:"Language Model"})," output when you want to use an Anthropic model as the LLM for another LLM-driven component, such as an ",(0,s.jsx)(n.strong,{children:"Agent"})," or ",(0,s.jsx)(n.strong,{children:"Smart Function"})," component."]}),"\n",(0,s.jsxs)(n.p,{children:["For more information, see ",(0,s.jsx)(n.a,{href:"/components-models",children:"Language model components"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"anthropic-text-generation-parameters",children:"Anthropic text generation parameters"}),"\n",(0,s.jsx)(a.Ay,{}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Name"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"max_tokens"}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsxs)(n.td,{children:["Input parameter. The maximum number of tokens to generate. Set to 0 for unlimited tokens. Default: ",(0,s.jsx)(n.code,{children:"4096"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"model"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The name of the Anthropic model to use. Options include various Claude 3 models."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"anthropic_api_key"}),(0,s.jsx)(n.td,{children:"SecretString"}),(0,s.jsx)(n.td,{children:"Input parameter. Your Anthropic API key for authentication."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"temperature"}),(0,s.jsx)(n.td,{children:"Float"}),(0,s.jsxs)(n.td,{children:["Input parameter. Controls randomness in the output. Default: ",(0,s.jsx)(n.code,{children:"0.1"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"anthropic_api_url"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsxs)(n.td,{children:["Input parameter. Endpoint of the Anthropic API. Defaults to ",(0,s.jsx)(n.code,{children:"https://api.anthropic.com"})," if not specified."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"prefill"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. Prefill text to guide the model's response."})]})]})]})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(p,{...e})}):p(e)}},17886:(e,n,t)=>{t.d(n,{A:()=>o});t(96540);var r=t(64058),s=t(74848);function o({name:e,...n}){const t=r[e];return t?(0,s.jsx)(t,{...n}):null}},31929:(e,n,t)=>{t.d(n,{Ay:()=>c,RM:()=>i});var r=t(74848),s=t(28453),o=t(17886);const i=[];function a(e){const n={a:"a",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,r.jsxs)(n.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,r.jsx)(o.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,r.jsx)(n.strong,{children:"Controls"})," in the ",(0,r.jsx)(n.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function c(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}}}]); \ No newline at end of file diff --git a/assets/js/e55b8e98.20cacbad.js b/assets/js/e55b8e98.20cacbad.js new file mode 100644 index 0000000000..298eeb9564 --- /dev/null +++ b/assets/js/e55b8e98.20cacbad.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[4614],{17886:(e,n,t)=>{t.d(n,{A:()=>i});t(96540);var s=t(64058),r=t(74848);function i({name:e,...n}){const t=s[e];return t?(0,r.jsx)(t,{...n}):null}},31929:(e,n,t)=>{t.d(n,{Ay:()=>o,RM:()=>d});var s=t(74848),r=t(28453),i=t(17886);const d=[];function a(e){const n={a:"a",p:"p",strong:"strong",...(0,r.R)(),...e.components};return(0,s.jsxs)(n.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,s.jsx)(i.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Controls"})," in the ",(0,s.jsx)(n.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function o(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}},37826:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>p,frontMatter:()=>o,metadata:()=>s,toc:()=>h});const s=JSON.parse('{"id":"Components/bundles-aiml","title":"AI/ML API","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-aiml.mdx","sourceDirName":"Components","slug":"/bundles-aiml","permalink":"/bundles-aiml","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"AI/ML API","slug":"/bundles-aiml"},"sidebar":"docs","previous":{"title":"About bundles","permalink":"/components-bundle-components"},"next":{"title":"Amazon","permalink":"/bundles-amazon"}}');var r=t(74848),i=t(28453),d=t(17886),a=t(31929);const o={title:"AI/ML API",slug:"/bundles-aiml"},l=void 0,c={},h=[{value:"AI/ML API text generation",id:"aiml-api-text-generation",level:2},{value:"AI/ML API text generation parameters",id:"aiml-api-text-generation-parameters",level:3},...a.RM,{value:"AI/ML API Embeddings",id:"aiml-api-embeddings",level:2},{value:"AI/ML API Embeddings parameters",id:"aiml-api-embeddings-parameters",level:3},...a.RM];function m(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:[(0,r.jsx)(d.A,{name:"Blocks","aria-hidden":"true"})," ",(0,r.jsx)(n.a,{href:"/components-bundle-components",children:(0,r.jsx)(n.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,r.jsxs)(n.p,{children:["This page describes the components that are available in the ",(0,r.jsx)(n.strong,{children:"AI/ML"})," bundle."]}),"\n",(0,r.jsx)(n.h2,{id:"aiml-api-text-generation",children:"AI/ML API text generation"}),"\n",(0,r.jsxs)(n.p,{children:["This component creates a ",(0,r.jsx)(n.code,{children:"ChatOpenAI"})," model instance using the AI/ML API.\nThe output is exclusively a ",(0,r.jsx)(n.strong,{children:"Language Model"})," (",(0,r.jsx)(n.a,{href:"/data-types#languagemodel",children:(0,r.jsx)(n.code,{children:"LanguageModel"})}),") that you can connect to another LLM-driven component, such as a ",(0,r.jsx)(n.strong,{children:"Smart Function"})," component."]}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see the ",(0,r.jsx)(n.a,{href:"https://docs.aimlapi.com/integrations/langflow",children:"AI/ML API Langflow integration documentation"})," and ",(0,r.jsx)(n.a,{href:"/components-models",children:"Language model components"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"aiml-api-text-generation-parameters",children:"AI/ML API text generation parameters"}),"\n",(0,r.jsx)(a.Ay,{}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Name"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"max_tokens"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsx)(n.td,{children:"Input parameter. The maximum number of tokens to generate. Set to 0 for unlimited tokens. Range: 0-128000."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model_kwargs"}),(0,r.jsx)(n.td,{children:"Dictionary"}),(0,r.jsx)(n.td,{children:"Input parameter. Additional keyword arguments for the model."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model_name"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsxs)(n.td,{children:["Input parameter. The name of the AIML model to use. Options are predefined in ",(0,r.jsx)(n.code,{children:"AIML_CHAT_MODELS"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"aiml_api_base"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsxs)(n.td,{children:["Input parameter. The base URL of the AIML API. Defaults to ",(0,r.jsx)(n.code,{children:"https://api.aimlapi.com"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"api_key"}),(0,r.jsx)(n.td,{children:"SecretString"}),(0,r.jsx)(n.td,{children:"Input parameter. The AIML API Key to use for the model."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"temperature"}),(0,r.jsx)(n.td,{children:"Float"}),(0,r.jsxs)(n.td,{children:["Input parameter. Controls randomness in the output. Default: ",(0,r.jsx)(n.code,{children:"0.1"}),"."]})]})]})]}),"\n",(0,r.jsx)(n.h2,{id:"aiml-api-embeddings",children:"AI/ML API Embeddings"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.strong,{children:"AI/ML API Embeddings"})," component generates embeddings using the ",(0,r.jsx)(n.a,{href:"https://docs.aimlapi.com/api-overview/embeddings",children:"AI/ML API"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["The output is ",(0,r.jsx)(n.a,{href:"/data-types#embeddings",children:(0,r.jsx)(n.code,{children:"Embeddings"})}),".\nSpecifically, an instance of ",(0,r.jsx)(n.code,{children:"AIMLEmbeddingsImpl"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["For more information about using embedding model components in flows, see ",(0,r.jsx)(n.a,{href:"/components-embedding-models",children:"Embedding model components"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"aiml-api-embeddings-parameters",children:"AI/ML API Embeddings parameters"}),"\n",(0,r.jsx)(a.Ay,{}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Name"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model_name"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"Input parameter. The name of the AI/ML embedding model to use."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"aiml_api_key"}),(0,r.jsx)(n.td,{children:"SecretString"}),(0,r.jsx)(n.td,{children:"Input parameter. The API key required for authenticating with the AI/ML service."})]})]})]})]})}function p(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(m,{...e})}):m(e)}}}]); \ No newline at end of file diff --git a/assets/js/e55b8e98.9d259f34.js b/assets/js/e55b8e98.9d259f34.js deleted file mode 100644 index 44597cc4f9..0000000000 --- a/assets/js/e55b8e98.9d259f34.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[4614],{17886:(e,n,t)=>{t.d(n,{A:()=>i});t(96540);var s=t(64058),r=t(74848);function i({name:e,...n}){const t=s[e];return t?(0,r.jsx)(t,{...n}):null}},31929:(e,n,t)=>{t.d(n,{Ay:()=>o,RM:()=>d});var s=t(74848),r=t(28453),i=t(17886);const d=[];function a(e){const n={a:"a",p:"p",strong:"strong",...(0,r.R)(),...e.components};return(0,s.jsxs)(n.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,s.jsx)(i.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Controls"})," in the ",(0,s.jsx)(n.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function o(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}},37826:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>p,frontMatter:()=>o,metadata:()=>s,toc:()=>h});const s=JSON.parse('{"id":"Components/bundles-aiml","title":"AI/ML API","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-aiml.mdx","sourceDirName":"Components","slug":"/bundles-aiml","permalink":"/bundles-aiml","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"AI/ML API","slug":"/bundles-aiml"},"sidebar":"docs","previous":{"title":"About bundles","permalink":"/components-bundle-components"},"next":{"title":"Amazon","permalink":"/bundles-amazon"}}');var r=t(74848),i=t(28453),d=t(17886),a=t(31929);const o={title:"AI/ML API",slug:"/bundles-aiml"},l=void 0,c={},h=[{value:"AI/ML API text generation",id:"aiml-api-text-generation",level:2},{value:"AI/ML API text generation parameters",id:"aiml-api-text-generation-parameters",level:3},...a.RM,{value:"AI/ML API Embeddings",id:"aiml-api-embeddings",level:2},{value:"AI/ML API Embeddings parameters",id:"aiml-api-embeddings-parameters",level:3},...a.RM];function m(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:[(0,r.jsx)(d.A,{name:"Blocks","aria-hidden":"true"})," ",(0,r.jsx)(n.a,{href:"/components-bundle-components",children:(0,r.jsx)(n.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,r.jsxs)(n.p,{children:["This page describes the components that are available in the ",(0,r.jsx)(n.strong,{children:"AI/ML"})," bundle."]}),"\n",(0,r.jsx)(n.h2,{id:"aiml-api-text-generation",children:"AI/ML API text generation"}),"\n",(0,r.jsxs)(n.p,{children:["This component creates a ",(0,r.jsx)(n.code,{children:"ChatOpenAI"})," model instance using the AI/ML API.\nThe output is exclusively a ",(0,r.jsx)(n.strong,{children:"Language Model"})," (",(0,r.jsx)(n.a,{href:"/data-types#languagemodel",children:(0,r.jsx)(n.code,{children:"LanguageModel"})}),") that you can connect to another LLM-driven component, such as a ",(0,r.jsx)(n.strong,{children:"Smart Transform"})," component."]}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see the ",(0,r.jsx)(n.a,{href:"https://docs.aimlapi.com/integrations/langflow",children:"AI/ML API Langflow integration documentation"})," and ",(0,r.jsx)(n.a,{href:"/components-models",children:"Language model components"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"aiml-api-text-generation-parameters",children:"AI/ML API text generation parameters"}),"\n",(0,r.jsx)(a.Ay,{}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Name"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"max_tokens"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsx)(n.td,{children:"Input parameter. The maximum number of tokens to generate. Set to 0 for unlimited tokens. Range: 0-128000."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model_kwargs"}),(0,r.jsx)(n.td,{children:"Dictionary"}),(0,r.jsx)(n.td,{children:"Input parameter. Additional keyword arguments for the model."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model_name"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsxs)(n.td,{children:["Input parameter. The name of the AIML model to use. Options are predefined in ",(0,r.jsx)(n.code,{children:"AIML_CHAT_MODELS"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"aiml_api_base"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsxs)(n.td,{children:["Input parameter. The base URL of the AIML API. Defaults to ",(0,r.jsx)(n.code,{children:"https://api.aimlapi.com"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"api_key"}),(0,r.jsx)(n.td,{children:"SecretString"}),(0,r.jsx)(n.td,{children:"Input parameter. The AIML API Key to use for the model."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"temperature"}),(0,r.jsx)(n.td,{children:"Float"}),(0,r.jsxs)(n.td,{children:["Input parameter. Controls randomness in the output. Default: ",(0,r.jsx)(n.code,{children:"0.1"}),"."]})]})]})]}),"\n",(0,r.jsx)(n.h2,{id:"aiml-api-embeddings",children:"AI/ML API Embeddings"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.strong,{children:"AI/ML API Embeddings"})," component generates embeddings using the ",(0,r.jsx)(n.a,{href:"https://docs.aimlapi.com/api-overview/embeddings",children:"AI/ML API"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["The output is ",(0,r.jsx)(n.a,{href:"/data-types#embeddings",children:(0,r.jsx)(n.code,{children:"Embeddings"})}),".\nSpecifically, an instance of ",(0,r.jsx)(n.code,{children:"AIMLEmbeddingsImpl"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["For more information about using embedding model components in flows, see ",(0,r.jsx)(n.a,{href:"/components-embedding-models",children:"Embedding model components"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"aiml-api-embeddings-parameters",children:"AI/ML API Embeddings parameters"}),"\n",(0,r.jsx)(a.Ay,{}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Name"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model_name"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"Input parameter. The name of the AI/ML embedding model to use."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"aiml_api_key"}),(0,r.jsx)(n.td,{children:"SecretString"}),(0,r.jsx)(n.td,{children:"Input parameter. The API key required for authenticating with the AI/ML service."})]})]})]})]})}function p(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(m,{...e})}):m(e)}}}]); \ No newline at end of file diff --git a/assets/js/e6c6a4d2.47157788.js b/assets/js/e6c6a4d2.f307d36f.js similarity index 55% rename from assets/js/e6c6a4d2.47157788.js rename to assets/js/e6c6a4d2.f307d36f.js index 992963b895..e8e6331cc4 100644 --- a/assets/js/e6c6a4d2.47157788.js +++ b/assets/js/e6c6a4d2.f307d36f.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.6.0"},"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 \\"amet_85\\": \\"\\",\\n \\"consectetur_7\\": \\"\\",\\n \\"mollit_c5\\": \\"\\",\\n \\"sit_8a\\": \\"\\",\\n \\"in_e3\\": \\"\\"\\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.6.0"},"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 \\"mollit__\\": \\"\\",\\n \\"dolore_4\\": \\"\\",\\n \\"nulla_7\\": \\"\\"\\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/f0b67137.9424ae74.js b/assets/js/f0b67137.9424ae74.js new file mode 100644 index 0000000000..42cd1c659a --- /dev/null +++ b/assets/js/f0b67137.9424ae74.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[3247],{8921:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>l,contentTitle:()=>c,default:()=>u,frontMatter:()=>o,metadata:()=>t,toc:()=>h});const t=JSON.parse('{"id":"Components/bundles-azure","title":"Azure","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-azure.mdx","sourceDirName":"Components","slug":"/bundles-azure","permalink":"/bundles-azure","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Azure","slug":"/bundles-azure"},"sidebar":"docs","previous":{"title":"AssemblyAI","permalink":"/bundles-assemblyai"},"next":{"title":"Baidu","permalink":"/bundles-baidu"}}');var s=r(74848),d=r(28453),i=r(17886),a=r(31929);const o={title:"Azure",slug:"/bundles-azure"},c=void 0,l={},h=[{value:"Azure OpenAI",id:"azure-openai",level:2},{value:"Azure OpenAI parameters",id:"azure-openai-parameters",level:3},...a.RM,{value:"Azure OpenAI Embeddings",id:"azure-openai-embeddings",level:2},{value:"Azure OpenAI Embeddings parameters",id:"azure-openai-embeddings-parameters",level:3},...a.RM];function p(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,d.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:[(0,s.jsx)(i.A,{name:"Blocks","aria-hidden":"true"})," ",(0,s.jsx)(n.a,{href:"/components-bundle-components",children:(0,s.jsx)(n.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,s.jsxs)(n.p,{children:["This page describes the components that are available in the ",(0,s.jsx)(n.strong,{children:"Azure"})," bundle."]}),"\n",(0,s.jsx)(n.h2,{id:"azure-openai",children:"Azure OpenAI"}),"\n",(0,s.jsxs)(n.p,{children:["This component generates text using ",(0,s.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/azure/ai-services/openai/",children:"Azure OpenAI LLMs"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["It can output either a ",(0,s.jsx)(n.strong,{children:"Model Response"})," (",(0,s.jsx)(n.a,{href:"/data-types#message",children:(0,s.jsx)(n.code,{children:"Message"})}),") or a ",(0,s.jsx)(n.strong,{children:"Language Model"})," (",(0,s.jsx)(n.a,{href:"/data-types#languagemodel",children:(0,s.jsx)(n.code,{children:"LanguageModel"})}),").\nSpecifically, the ",(0,s.jsx)(n.strong,{children:"Language Model"})," output is an instance of ",(0,s.jsx)(n.a,{href:"https://docs.langchain.com/oss/python/integrations/chat/azure_chat_openai",children:(0,s.jsx)(n.code,{children:"AzureChatOpenAI"})})," configured according to the component's parameters."]}),"\n",(0,s.jsxs)(n.p,{children:["Use the ",(0,s.jsx)(n.strong,{children:"Language Model"})," output when you want to use an Azure OpenAI model as the LLM for another LLM-driven component, such as an ",(0,s.jsx)(n.strong,{children:"Agent"})," or ",(0,s.jsx)(n.strong,{children:"Smart Function"})," component."]}),"\n",(0,s.jsxs)(n.p,{children:["For more information, see ",(0,s.jsx)(n.a,{href:"/components-models",children:"Language model components"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"azure-openai-parameters",children:"Azure OpenAI parameters"}),"\n",(0,s.jsx)(a.Ay,{}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Name"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Model Name"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. Specifies the name of the Azure OpenAI model to be used for text generation."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Azure Endpoint"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. Your Azure endpoint, including the resource."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Deployment Name"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. Specifies the name of the deployment."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"API Version"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. Specifies the version of the Azure OpenAI API to be used."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"API Key"}),(0,s.jsx)(n.td,{children:"SecretString"}),(0,s.jsx)(n.td,{children:"Input parameter. Your Azure OpenAI API key."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Temperature"}),(0,s.jsx)(n.td,{children:"Float"}),(0,s.jsxs)(n.td,{children:["Input parameter. Specifies the sampling temperature. Defaults to ",(0,s.jsx)(n.code,{children:"0.7"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Max Tokens"}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsxs)(n.td,{children:["Input parameter. Specifies the maximum number of tokens to generate. Defaults to ",(0,s.jsx)(n.code,{children:"1000"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Input Value"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. Specifies the input text for text generation."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Stream"}),(0,s.jsx)(n.td,{children:"Boolean"}),(0,s.jsxs)(n.td,{children:["Input parameter. Specifies whether to stream the response from the model. Default to ",(0,s.jsx)(n.code,{children:"false"}),"."]})]})]})]}),"\n",(0,s.jsx)(n.h2,{id:"azure-openai-embeddings",children:"Azure OpenAI Embeddings"}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.strong,{children:"Azure OpenAI Embeddings"})," component generates embeddings using Azure OpenAI models."]}),"\n",(0,s.jsxs)(n.p,{children:["For more information about using embedding model components in flows, see ",(0,s.jsx)(n.a,{href:"/components-embedding-models",children:"Embedding model components"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"azure-openai-embeddings-parameters",children:"Azure OpenAI Embeddings parameters"}),"\n",(0,s.jsx)(a.Ay,{}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Name"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Model"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsxs)(n.td,{children:["Input parameter. The name of the model to use. Default: ",(0,s.jsx)(n.code,{children:"text-embedding-3-small"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Azure Endpoint"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsxs)(n.td,{children:["Input parameter. Your Azure endpoint, including the resource, such as ",(0,s.jsx)(n.code,{children:"https://example-resource.azure.openai.com/"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Deployment Name"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The name of the deployment."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"API Version"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The API version to use, with options including various dates."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"API Key"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The API key required to access the Azure OpenAI service."})]})]})]})]})}function u(e={}){const{wrapper:n}={...(0,d.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(p,{...e})}):p(e)}},17886:(e,n,r)=>{r.d(n,{A:()=>d});r(96540);var t=r(64058),s=r(74848);function d({name:e,...n}){const r=t[e];return r?(0,s.jsx)(r,{...n}):null}},31929:(e,n,r)=>{r.d(n,{Ay:()=>o,RM:()=>i});var t=r(74848),s=r(28453),d=r(17886);const i=[];function a(e){const n={a:"a",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,t.jsxs)(n.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,t.jsx)(d.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,t.jsx)(n.strong,{children:"Controls"})," in the ",(0,t.jsx)(n.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function o(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(a,{...e})}):a(e)}}}]); \ No newline at end of file diff --git a/assets/js/f0b67137.fc534b45.js b/assets/js/f0b67137.fc534b45.js deleted file mode 100644 index c73e4bc739..0000000000 --- a/assets/js/f0b67137.fc534b45.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[3247],{8921:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>u,frontMatter:()=>o,metadata:()=>t,toc:()=>h});const t=JSON.parse('{"id":"Components/bundles-azure","title":"Azure","description":"Bundles contain custom components that support specific third-party integrations with Langflow.","source":"@site/docs/Components/bundles-azure.mdx","sourceDirName":"Components","slug":"/bundles-azure","permalink":"/bundles-azure","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Azure","slug":"/bundles-azure"},"sidebar":"docs","previous":{"title":"AssemblyAI","permalink":"/bundles-assemblyai"},"next":{"title":"Baidu","permalink":"/bundles-baidu"}}');var s=r(74848),d=r(28453),i=r(17886),a=r(31929);const o={title:"Azure",slug:"/bundles-azure"},l=void 0,c={},h=[{value:"Azure OpenAI",id:"azure-openai",level:2},{value:"Azure OpenAI parameters",id:"azure-openai-parameters",level:3},...a.RM,{value:"Azure OpenAI Embeddings",id:"azure-openai-embeddings",level:2},{value:"Azure OpenAI Embeddings parameters",id:"azure-openai-embeddings-parameters",level:3},...a.RM];function p(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,d.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:[(0,s.jsx)(i.A,{name:"Blocks","aria-hidden":"true"})," ",(0,s.jsx)(n.a,{href:"/components-bundle-components",children:(0,s.jsx)(n.strong,{children:"Bundles"})})," contain custom components that support specific third-party integrations with Langflow."]}),"\n",(0,s.jsxs)(n.p,{children:["This page describes the components that are available in the ",(0,s.jsx)(n.strong,{children:"Azure"})," bundle."]}),"\n",(0,s.jsx)(n.h2,{id:"azure-openai",children:"Azure OpenAI"}),"\n",(0,s.jsxs)(n.p,{children:["This component generates text using ",(0,s.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/azure/ai-services/openai/",children:"Azure OpenAI LLMs"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["It can output either a ",(0,s.jsx)(n.strong,{children:"Model Response"})," (",(0,s.jsx)(n.a,{href:"/data-types#message",children:(0,s.jsx)(n.code,{children:"Message"})}),") or a ",(0,s.jsx)(n.strong,{children:"Language Model"})," (",(0,s.jsx)(n.a,{href:"/data-types#languagemodel",children:(0,s.jsx)(n.code,{children:"LanguageModel"})}),").\nSpecifically, the ",(0,s.jsx)(n.strong,{children:"Language Model"})," output is an instance of ",(0,s.jsx)(n.a,{href:"https://docs.langchain.com/oss/python/integrations/chat/azure_chat_openai",children:(0,s.jsx)(n.code,{children:"AzureChatOpenAI"})})," configured according to the component's parameters."]}),"\n",(0,s.jsxs)(n.p,{children:["Use the ",(0,s.jsx)(n.strong,{children:"Language Model"})," output when you want to use an Azure OpenAI model as the LLM for another LLM-driven component, such as an ",(0,s.jsx)(n.strong,{children:"Agent"})," or ",(0,s.jsx)(n.strong,{children:"Smart Transform"})," component."]}),"\n",(0,s.jsxs)(n.p,{children:["For more information, see ",(0,s.jsx)(n.a,{href:"/components-models",children:"Language model components"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"azure-openai-parameters",children:"Azure OpenAI parameters"}),"\n",(0,s.jsx)(a.Ay,{}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Name"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Model Name"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. Specifies the name of the Azure OpenAI model to be used for text generation."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Azure Endpoint"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. Your Azure endpoint, including the resource."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Deployment Name"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. Specifies the name of the deployment."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"API Version"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. Specifies the version of the Azure OpenAI API to be used."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"API Key"}),(0,s.jsx)(n.td,{children:"SecretString"}),(0,s.jsx)(n.td,{children:"Input parameter. Your Azure OpenAI API key."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Temperature"}),(0,s.jsx)(n.td,{children:"Float"}),(0,s.jsxs)(n.td,{children:["Input parameter. Specifies the sampling temperature. Defaults to ",(0,s.jsx)(n.code,{children:"0.7"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Max Tokens"}),(0,s.jsx)(n.td,{children:"Integer"}),(0,s.jsxs)(n.td,{children:["Input parameter. Specifies the maximum number of tokens to generate. Defaults to ",(0,s.jsx)(n.code,{children:"1000"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Input Value"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. Specifies the input text for text generation."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Stream"}),(0,s.jsx)(n.td,{children:"Boolean"}),(0,s.jsxs)(n.td,{children:["Input parameter. Specifies whether to stream the response from the model. Default to ",(0,s.jsx)(n.code,{children:"false"}),"."]})]})]})]}),"\n",(0,s.jsx)(n.h2,{id:"azure-openai-embeddings",children:"Azure OpenAI Embeddings"}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.strong,{children:"Azure OpenAI Embeddings"})," component generates embeddings using Azure OpenAI models."]}),"\n",(0,s.jsxs)(n.p,{children:["For more information about using embedding model components in flows, see ",(0,s.jsx)(n.a,{href:"/components-embedding-models",children:"Embedding model components"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"azure-openai-embeddings-parameters",children:"Azure OpenAI Embeddings parameters"}),"\n",(0,s.jsx)(a.Ay,{}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Name"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Model"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsxs)(n.td,{children:["Input parameter. The name of the model to use. Default: ",(0,s.jsx)(n.code,{children:"text-embedding-3-small"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Azure Endpoint"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsxs)(n.td,{children:["Input parameter. Your Azure endpoint, including the resource, such as ",(0,s.jsx)(n.code,{children:"https://example-resource.azure.openai.com/"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Deployment Name"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The name of the deployment."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"API Version"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The API version to use, with options including various dates."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"API Key"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsx)(n.td,{children:"Input parameter. The API key required to access the Azure OpenAI service."})]})]})]})]})}function u(e={}){const{wrapper:n}={...(0,d.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(p,{...e})}):p(e)}},17886:(e,n,r)=>{r.d(n,{A:()=>d});r(96540);var t=r(64058),s=r(74848);function d({name:e,...n}){const r=t[e];return r?(0,s.jsx)(r,{...n}):null}},31929:(e,n,r)=>{r.d(n,{Ay:()=>o,RM:()=>i});var t=r(74848),s=r(28453),d=r(17886);const i=[];function a(e){const n={a:"a",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,t.jsxs)(n.p,{children:["Some parameters are hidden by default in the visual editor.\nYou can modify all parameters through the ",(0,t.jsx)(d.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,t.jsx)(n.strong,{children:"Controls"})," in the ",(0,t.jsx)(n.a,{href:"/concepts-components#component-menus",children:"component's header menu"}),"."]})}function o(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(a,{...e})}):a(e)}}}]); \ No newline at end of file diff --git a/assets/js/runtime~main.af8503fa.js b/assets/js/runtime~main.f22b4702.js similarity index 90% rename from assets/js/runtime~main.af8503fa.js rename to assets/js/runtime~main.f22b4702.js index bb97dfeae0..2a0e8216f2 100644 --- a/assets/js/runtime~main.af8503fa.js +++ b/assets/js/runtime~main.f22b4702.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,f,d,c,b={},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 b[e].call(f.exports,f,f.exports,r),f.loaded=!0,f.exports}r.m=b,r.c=t,e=[],r.O=(a,f,d,c)=>{if(!f){var b=1/0;for(i=0;i=c)&&Object.keys(r.O).every(e=>r.O[e](f[o]))?f.splice(o--,1):(t=!1,c0&&e[i-1][2]>c;i--)e[i]=e[i-1];e[i]=[f,d,c]},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,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var c=Object.create(null);r.r(c);var b={};a=a||[null,f({}),f([]),f(f)];for(var t=2&d&&e;"object"==typeof t&&!~a.indexOf(t);t=f(t))Object.getOwnPropertyNames(t).forEach(a=>b[a]=()=>e[a]);return b.default=()=>e,r.d(c,b),c},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/"+({11:"d2df9b4e",15:"d803fa53",30:"db8c087e",31:"03e862ce",38:"a99a45c9",44:"e3f369d5",78:"b768a3a5",93:"a3702f61",126:"ae70dfbf",129:"dfa3dc90",188:"7f7a8893",191:"c643a6d5",230:"bc63ae25",253:"bb45d4f9",299:"9b5a408c",351:"b9acb8d9",368:"07c30ae4",375:"3d81f1cf",417:"93e16042",446:"a4232cf8",598:"db4f3bbd",600:"ee87c775",750:"33b5ee95",768:"6d684b63",787:"672a0eba",800:"a4c0ff01",824:"5015646b",879:"8bee5443",956:"03735ec1",957:"c141421f",964:"05d835b4",1006:"47e58a89",1022:"8a61012d",1035:"24d32e91",1162:"f7e6b9d6",1185:"c2de64b8",1193:"444a6da6",1303:"41d45d82",1308:"ec030ab7",1345:"fe6d5b4f",1361:"ff296c8d",1408:"2fc7e024",1446:"c78349fc",1488:"ac3cc3f5",1490:"0f761898",1500:"1e9025f7",1542:"1ad8fbad",1556:"264ffc80",1567:"22dd74f7",1625:"92852ade",1690:"41a97a99",1845:"2ab0d4f5",1861:"8ad67c3b",1876:"5c3b537a",1895:"d375ca1d",1956:"fe6f9601",2073:"7b7db446",2100:"9cc9f218",2102:"755d162a",2138:"1a4e3797",2272:"ca5faf5d",2273:"e756fa26",2278:"c4280da9",2348:"f2da9399",2360:"017d425f",2394:"c2ea283c",2423:"19bcb67f",2440:"14381459",2457:"46abd5bb",2460:"954b19af",2469:"cd086441",2475:"1ab69cbd",2551:"394022bb",2565:"622fd833",2624:"5aaddd60",2642:"ad13630c",2651:"8cd0650d",2741:"43ad9ba4",2752:"e14655eb",2777:"b3ba68b4",2818:"a9b73094",2888:"32270e71",2990:"1d50b418",3164:"67f2dc6c",3225:"99a4401d",3240:"b079b393",3247:"f0b67137",3263:"730da84e",3274:"564a0250",3345:"040305fb",3347:"b5257597",3353:"2b4d41d7",3361:"8f633f11",3368:"efa0f9ee",3387:"3d67876e",3468:"c76bd485",3500:"c3c63498",3536:"2eb731bc",3576:"64045095",3694:"c2b1730c",3795:"c85076de",3832:"c3d82421",3859:"7679ca6e",4036:"fbcfc90d",4085:"cb17b4e0",4218:"d5bb0e16",4314:"f6a246db",4341:"e1a0f423",4384:"622bdc6f",4573:"baacc2a1",4612:"6a9eca1a",4614:"e55b8e98",4638:"d40b4c6f",4644:"d3e886ab",4645:"fef056e9",4706:"281c8344",4763:"f5eaeff2",4778:"e189eece",4784:"438e4337",4841:"8298c1cb",4867:"d73246f8",4876:"44691977",4891:"ca67d85f",4907:"86116998",4954:"a71efd4a",4995:"62266e9d",5048:"3c440e04",5107:"10156854",5110:"e9fe1d10",5138:"309383dc",5144:"944c5f91",5179:"41e3c105",5200:"ff7f32ba",5281:"a0511a5b",5284:"64ca91f1",5333:"70909872",5339:"9447891f",5412:"a6d50436",5467:"40d13080",5474:"d175aa8b",5513:"20d49d07",5514:"02955c09",5628:"bd7ab245",5663:"b1379b2b",5673:"73af8c33",5716:"946d1cee",5739:"69079906",5742:"aba21aa0",5757:"ad42ff54",5761:"7f193c41",5772:"4e7126f8",5799:"364e949f",5838:"bbb8ec1d",5865:"e1766139",5866:"3b577cbb",5883:"61cfab8e",5894:"f178e9b3",5903:"69d616f2",6003:"4d983c8e",6006:"7819cc1c",6010:"60c70af6",6053:"dfc50084",6080:"4d15791b",6108:"2fed9fb3",6214:"b1220dbd",6224:"ef9aa223",6256:"6888b60e",6281:"c96ce3ed",6311:"cce672fb",6332:"873508e7",6350:"188ee668",6419:"96eb0e67",6445:"9fb9a766",6473:"4c5e977b",6513:"f13693f0",6538:"719cba95",6559:"6f13807a",6601:"81bb6a5c",6649:"02e43f39",6682:"5a6d6120",6688:"388c3769",6752:"acc00ab9",6753:"ff349d2f",6757:"86bd0a2e",6801:"acefda8b",6920:"c817e236",6934:"d745f4e6",6949:"b36bb719",6999:"d5ec984b",7098:"a7bd4aaa",7108:"688feaef",7118:"7996108c",7142:"d0c1f670",7165:"547df4a1",7243:"5d9d4350",7257:"8321259f",7339:"7a774ddf",7356:"2ea623f2",7472:"744aaf8b",7484:"ad01e028",7507:"651ef245",7512:"4c09a7b3",7713:"3a82b27e",7720:"3bfbe7c9",7774:"8e9a8774",7807:"1a8a0a64",7824:"2b56b65e",7829:"7c27dc91",7841:"0132780e",7859:"593d9d00",7894:"0f44198a",7902:"619c7267",7964:"ff35961a",7968:"9b0af131",8064:"274fd934",8085:"cc44357e",8090:"6e85978c",8102:"019dbd1f",8184:"222029a9",8188:"ecd67556",8196:"75a9e1e0",8208:"216e3ed7",8267:"02f8077b",8268:"a4b6c971",8294:"f2bedfce",8298:"153f2b62",8304:"73d1a090",8336:"e7fd9095",8374:"261f8123",8392:"20177945",8401:"17896441",8504:"e6c6a4d2",8571:"da1ad91e",8593:"56350599",8607:"681e5335",8649:"7de42fc9",8667:"4bc8c03c",8679:"3705a9c0",8702:"42962acd",8750:"8a484c94",8765:"1a2eaade",8790:"bfca1e36",8810:"4f40ab5a",8822:"555ae514",8963:"56c23a02",8990:"5f1a63c6",9033:"9f55b2fc",9036:"850d3674",9048:"a94703ab",9099:"b1bc5ffe",9126:"169603ea",9170:"e05c0680",9213:"62d1268c",9227:"7e40e6b3",9264:"c7f32161",9315:"16faf8bf",9331:"ffcd190c",9363:"f3312674",9371:"991799c5",9431:"cd8dccb5",9459:"97254d1d",9476:"57c9a2b8",9479:"4e038a6a",9482:"a9c1003f",9483:"7823fa72",9509:"49311ca0",9555:"dedd5914",9610:"453ae64a",9619:"29b8e27a",9640:"3b25a2ae",9647:"5e95c892",9674:"feac1fba",9705:"ee3b5967",9712:"d8c8efb9",9731:"52edee88",9751:"25255263",9752:"72d61395",9763:"aece522a",9781:"b796be74",9857:"09f5326a",9888:"be76515e",9897:"f0eeb72e",9905:"43df3697",9976:"230d5fdc",9986:"d1f3cfe5"}[e]||e)+"."+{11:"7535ea4e",15:"3c9bfad4",30:"b4c45960",31:"4c52487f",38:"493e8d1a",44:"665dcbe1",78:"4574df70",93:"79c68fde",126:"d694de98",129:"9ee1baf1",188:"ab062521",191:"1dc448ca",230:"e9d5cf67",253:"88866337",299:"bc5d64d9",351:"95edea98",368:"34a10e49",375:"a83d6e9e",416:"3c613765",417:"cd0ddd5a",446:"711a3527",598:"723b23a6",600:"1bfc2e56",750:"c5f2f436",768:"b77428d6",787:"a6a451d4",800:"32aed4bf",824:"e6ec1d45",879:"d6480029",956:"7e72f81a",957:"da9e1d2b",964:"be41d2ff",1006:"4bfe7d6e",1022:"403c52a3",1035:"cc26804f",1162:"846917f8",1185:"03bd9764",1193:"bbc5980d",1303:"9e3798b4",1308:"5c14cd9a",1345:"3ff8cb8f",1361:"318648bc",1408:"51cd7413",1446:"06b90779",1488:"feb8009a",1490:"1c6d3f4b",1500:"eaff0303",1542:"86c0c556",1556:"118cb47f",1567:"7d7e37d2",1625:"14cdddbe",1690:"288a667f",1845:"f888ca0e",1861:"53f120bc",1876:"d729f827",1895:"5ee6b671",1956:"b8856888",2073:"6c7cda9a",2100:"afd8f376",2102:"9329bc60",2138:"f62f93d0",2237:"8bc4ac99",2272:"6cc0e60c",2273:"44b994c5",2278:"485740c6",2348:"d3bfb9cb",2360:"d868b3f5",2394:"ac14eef1",2423:"8b04bffc",2440:"986975a1",2457:"5bdee92e",2460:"8ce45567",2469:"e6f2f1a0",2475:"a4ec1cf3",2551:"67d2eaf8",2565:"7fe87656",2624:"00825dc5",2642:"91d22876",2651:"bfa64c6e",2741:"2508328a",2752:"615c674c",2777:"44e50fed",2818:"cb272f1f",2888:"37fc0309",2990:"61e9fbb1",3164:"c41fea74",3225:"a08bfb27",3240:"240925ec",3247:"fc534b45",3263:"d9743680",3274:"61775522",3345:"fc2ce836",3347:"ed9eb139",3353:"6e44ca78",3361:"14e378b0",3368:"d78be2e8",3387:"3801b523",3468:"c762a60d",3477:"a7eba177",3500:"4ed2898e",3536:"0c7aaa2a",3576:"20fe69b3",3694:"164f0b53",3795:"6945095c",3832:"9b4fc0f0",3859:"6bc699bd",4036:"021e5445",4085:"567ac2a0",4218:"f56e6e1b",4314:"499c51f9",4341:"e7d0ae98",4384:"4a1bed8a",4573:"2b7e1d37",4612:"92ce55f5",4614:"9d259f34",4638:"a7836231",4644:"44dca449",4645:"e766f36d",4706:"a5f283cf",4754:"5b9f9c4a",4763:"2d7ed358",4778:"0f246115",4784:"aa3645d6",4841:"8fa351a4",4867:"23b9f296",4876:"f78377fd",4891:"1d24c297",4907:"7b9e861a",4954:"81160209",4995:"1e8db07a",5048:"af24b62c",5107:"d0fba644",5110:"95c2f2b7",5138:"425686f2",5144:"34cdb9e6",5179:"e8547d7b",5200:"66120317",5281:"a7b94daf",5284:"2a8efb5d",5333:"005761f4",5339:"12dc5243",5412:"2d86bc82",5467:"c62b0788",5474:"753cfbbc",5513:"a1bd7832",5514:"09b288f1",5628:"8be8cca7",5663:"d0bf87ba",5673:"251b8a2d",5716:"306ccb16",5739:"fc012235",5742:"60b1d5b2",5757:"6343a8b4",5761:"5f50e35e",5772:"6c2359b5",5799:"0bb4a625",5838:"a06b1dfb",5865:"0c617772",5866:"84a7b519",5883:"c4686d06",5894:"6bfbe353",5903:"0f758b14",6003:"34e0f6ab",6006:"514330cd",6010:"8b033097",6053:"ec06d572",6080:"5f87d90c",6108:"84298e7b",6214:"b8e15d85",6224:"55f80104",6256:"54351616",6281:"fd3b2058",6311:"3917f33f",6332:"ea4bab27",6350:"3d9c862f",6419:"cdbc216e",6445:"ccc8b99a",6473:"b5e32ff9",6513:"7eadceee",6538:"6f5c14e0",6559:"0c454bf8",6601:"37bda0f7",6649:"c4341b5c",6682:"1d1c591e",6688:"d1eaac87",6752:"260b1798",6753:"72d6b927",6757:"3be90edc",6801:"0bc5f127",6920:"035e88c2",6934:"c2255e7e",6949:"5d8a6f09",6999:"66a7cd37",7098:"fc1f6434",7108:"8b4a706f",7118:"e261e76b",7142:"bde4cbc4",7165:"6b8584c0",7243:"296e8a61",7257:"8e6ae225",7339:"0f369e49",7356:"deacdac4",7397:"385da999",7472:"63af5563",7484:"3fd92905",7507:"fb338600",7512:"e8c30b47",7713:"cc38a18f",7720:"9c9e52b3",7774:"f5f2d629",7807:"d522f6ff",7824:"d13a17e9",7829:"ebe7e0da",7841:"e353fb9b",7859:"bfb7b6ef",7894:"a55f0514",7902:"c4383126",7964:"849a2552",7968:"c9a8f1d4",8064:"c9a775c4",8085:"e1986413",8090:"c9d242d1",8102:"9accf22f",8158:"20de8b80",8184:"4a3b4060",8188:"519dd5a5",8196:"95230909",8208:"301426d8",8267:"dcdffe42",8268:"afde5c28",8294:"b38f02c9",8298:"29f678e5",8304:"25efae09",8336:"f07fe83f",8374:"f190aa79",8392:"653e9358",8401:"23c55f2d",8504:"47157788",8571:"50f64f22",8593:"2889cadd",8607:"546221af",8649:"a75579dc",8667:"30b16c19",8679:"ff760d64",8702:"210eba33",8750:"241135ef",8765:"333e2cda",8790:"19345819",8810:"4bbcdad5",8822:"e09cf857",8913:"47209f3b",8963:"34764734",8990:"73dcef67",9033:"6e957e44",9036:"aec7a0e7",9048:"bdc69ee3",9099:"3af6b43c",9126:"6f9e3101",9148:"2b76b49f",9170:"b292e02b",9213:"d81bf895",9227:"6f06eaf4",9264:"9ed8b3f4",9315:"b8dfb4d7",9331:"ae254b82",9363:"9fe9d801",9371:"42ffb4dc",9431:"679a7398",9459:"9d7b254b",9476:"7811c9d6",9479:"ebab20a6",9482:"3a03726b",9483:"25a2c300",9495:"49162ef8",9509:"daadba3a",9555:"77bc5375",9610:"7a92d9b4",9619:"3d4eaff7",9640:"b4e56f6c",9647:"5cb928a1",9674:"5e841d2a",9705:"926bf843",9712:"a9a1a028",9731:"09dbde0e",9751:"b4dca678",9752:"262bf7fa",9763:"4718169e",9781:"c582fb19",9857:"6f05a131",9888:"b2a9bcab",9897:"da7686fd",9905:"e4babc48",9976:"8d5648fe",9986:"c86f00ba"}[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),d={},c="langflow-docs:",r.l=(e,a,f,b)=>{if(d[e])d[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 c=d[e];if(delete d[e],t.parentNode&&t.parentNode.removeChild(t),c&&c.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",14381459:"2440",17896441:"8401",20177945:"8392",25255263:"9751",44691977:"4876",56350599:"8593",64045095:"3576",69079906:"5739",70909872:"5333",86116998:"4907",d2df9b4e:"11",d803fa53:"15",db8c087e:"30","03e862ce":"31",a99a45c9:"38",e3f369d5:"44",b768a3a5:"78",a3702f61:"93",ae70dfbf:"126",dfa3dc90:"129","7f7a8893":"188",c643a6d5:"191",bc63ae25:"230",bb45d4f9:"253","9b5a408c":"299",b9acb8d9:"351","07c30ae4":"368","3d81f1cf":"375","93e16042":"417",a4232cf8:"446",db4f3bbd:"598",ee87c775:"600","33b5ee95":"750","6d684b63":"768","672a0eba":"787",a4c0ff01:"800","5015646b":"824","8bee5443":"879","03735ec1":"956",c141421f:"957","05d835b4":"964","47e58a89":"1006","8a61012d":"1022","24d32e91":"1035",f7e6b9d6:"1162",c2de64b8:"1185","444a6da6":"1193","41d45d82":"1303",ec030ab7:"1308",fe6d5b4f:"1345",ff296c8d:"1361","2fc7e024":"1408",c78349fc:"1446",ac3cc3f5:"1488","0f761898":"1490","1e9025f7":"1500","1ad8fbad":"1542","264ffc80":"1556","22dd74f7":"1567","92852ade":"1625","41a97a99":"1690","2ab0d4f5":"1845","8ad67c3b":"1861","5c3b537a":"1876",d375ca1d:"1895",fe6f9601:"1956","7b7db446":"2073","9cc9f218":"2100","755d162a":"2102","1a4e3797":"2138",ca5faf5d:"2272",e756fa26:"2273",c4280da9:"2278",f2da9399:"2348","017d425f":"2360",c2ea283c:"2394","19bcb67f":"2423","46abd5bb":"2457","954b19af":"2460",cd086441:"2469","1ab69cbd":"2475","394022bb":"2551","622fd833":"2565","5aaddd60":"2624",ad13630c:"2642","8cd0650d":"2651","43ad9ba4":"2741",e14655eb:"2752",b3ba68b4:"2777",a9b73094:"2818","32270e71":"2888","1d50b418":"2990","67f2dc6c":"3164","99a4401d":"3225",b079b393:"3240",f0b67137:"3247","730da84e":"3263","564a0250":"3274","040305fb":"3345",b5257597:"3347","2b4d41d7":"3353","8f633f11":"3361",efa0f9ee:"3368","3d67876e":"3387",c76bd485:"3468",c3c63498:"3500","2eb731bc":"3536",c2b1730c:"3694",c85076de:"3795",c3d82421:"3832","7679ca6e":"3859",fbcfc90d:"4036",cb17b4e0:"4085",d5bb0e16:"4218",f6a246db:"4314",e1a0f423:"4341","622bdc6f":"4384",baacc2a1:"4573","6a9eca1a":"4612",e55b8e98:"4614",d40b4c6f:"4638",d3e886ab:"4644",fef056e9:"4645","281c8344":"4706",f5eaeff2:"4763",e189eece:"4778","438e4337":"4784","8298c1cb":"4841",d73246f8:"4867",ca67d85f:"4891",a71efd4a:"4954","62266e9d":"4995","3c440e04":"5048",e9fe1d10:"5110","309383dc":"5138","944c5f91":"5144","41e3c105":"5179",ff7f32ba:"5200",a0511a5b:"5281","64ca91f1":"5284","9447891f":"5339",a6d50436:"5412","40d13080":"5467",d175aa8b:"5474","20d49d07":"5513","02955c09":"5514",bd7ab245:"5628",b1379b2b:"5663","73af8c33":"5673","946d1cee":"5716",aba21aa0:"5742",ad42ff54:"5757","7f193c41":"5761","4e7126f8":"5772","364e949f":"5799",bbb8ec1d:"5838",e1766139:"5865","3b577cbb":"5866","61cfab8e":"5883",f178e9b3:"5894","69d616f2":"5903","4d983c8e":"6003","7819cc1c":"6006","60c70af6":"6010",dfc50084:"6053","4d15791b":"6080","2fed9fb3":"6108",b1220dbd:"6214",ef9aa223:"6224","6888b60e":"6256",c96ce3ed:"6281",cce672fb:"6311","873508e7":"6332","188ee668":"6350","96eb0e67":"6419","9fb9a766":"6445","4c5e977b":"6473",f13693f0:"6513","719cba95":"6538","6f13807a":"6559","81bb6a5c":"6601","02e43f39":"6649","5a6d6120":"6682","388c3769":"6688",acc00ab9:"6752",ff349d2f:"6753","86bd0a2e":"6757",acefda8b:"6801",c817e236:"6920",d745f4e6:"6934",b36bb719:"6949",d5ec984b:"6999",a7bd4aaa:"7098","688feaef":"7108","7996108c":"7118",d0c1f670:"7142","547df4a1":"7165","5d9d4350":"7243","8321259f":"7257","7a774ddf":"7339","2ea623f2":"7356","744aaf8b":"7472",ad01e028:"7484","651ef245":"7507","4c09a7b3":"7512","3a82b27e":"7713","3bfbe7c9":"7720","8e9a8774":"7774","1a8a0a64":"7807","2b56b65e":"7824","7c27dc91":"7829","0132780e":"7841","593d9d00":"7859","0f44198a":"7894","619c7267":"7902",ff35961a:"7964","9b0af131":"7968","274fd934":"8064",cc44357e:"8085","6e85978c":"8090","019dbd1f":"8102","222029a9":"8184",ecd67556:"8188","75a9e1e0":"8196","216e3ed7":"8208","02f8077b":"8267",a4b6c971:"8268",f2bedfce:"8294","153f2b62":"8298","73d1a090":"8304",e7fd9095:"8336","261f8123":"8374",e6c6a4d2:"8504",da1ad91e:"8571","681e5335":"8607","7de42fc9":"8649","4bc8c03c":"8667","3705a9c0":"8679","42962acd":"8702","8a484c94":"8750","1a2eaade":"8765",bfca1e36:"8790","4f40ab5a":"8810","555ae514":"8822","56c23a02":"8963","5f1a63c6":"8990","9f55b2fc":"9033","850d3674":"9036",a94703ab:"9048",b1bc5ffe:"9099","169603ea":"9126",e05c0680:"9170","62d1268c":"9213","7e40e6b3":"9227",c7f32161:"9264","16faf8bf":"9315",ffcd190c:"9331",f3312674:"9363","991799c5":"9371",cd8dccb5:"9431","97254d1d":"9459","57c9a2b8":"9476","4e038a6a":"9479",a9c1003f:"9482","7823fa72":"9483","49311ca0":"9509",dedd5914:"9555","453ae64a":"9610","29b8e27a":"9619","3b25a2ae":"9640","5e95c892":"9647",feac1fba:"9674",ee3b5967:"9705",d8c8efb9:"9712","52edee88":"9731","72d61395":"9752",aece522a:"9763",b796be74:"9781","09f5326a":"9857",be76515e:"9888",f0eeb72e:"9897","43df3697":"9905","230d5fdc":"9976",d1f3cfe5:"9986"}[e]||e,r.p+r.u(e)},(()=>{var e={5354:0,1869:0};r.f.j=(a,f)=>{var d=r.o(e,a)?e[a]:void 0;if(0!==d)if(d)f.push(d[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var c=new Promise((f,c)=>d=e[a]=[f,c]);f.push(d[2]=c);var b=r.p+r.u(a),t=new Error;r.l(b,f=>{if(r.o(e,a)&&(0!==(d=e[a])&&(e[a]=void 0),d)){var c=f&&("load"===f.type?"missing":f.type),b=f&&f.target&&f.target.src;t.message="Loading chunk "+a+" failed.\n("+c+": "+b+")",t.name="ChunkLoadError",t.type=c,t.request=b,d[1](t)}},"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,f)=>{var d,c,b=f[0],t=f[1],o=f[2],n=0;if(b.some(a=>0!==e[a])){for(d in t)r.o(t,d)&&(r.m[d]=t[d]);if(o)var i=o(r)}for(a&&a(f);n{"use strict";var e,a,f,d,c,b={},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 b[e].call(f.exports,f,f.exports,r),f.loaded=!0,f.exports}r.m=b,r.c=t,e=[],r.O=(a,f,d,c)=>{if(!f){var b=1/0;for(i=0;i=c)&&Object.keys(r.O).every(e=>r.O[e](f[o]))?f.splice(o--,1):(t=!1,c0&&e[i-1][2]>c;i--)e[i]=e[i-1];e[i]=[f,d,c]},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,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var c=Object.create(null);r.r(c);var b={};a=a||[null,f({}),f([]),f(f)];for(var t=2&d&&e;"object"==typeof t&&!~a.indexOf(t);t=f(t))Object.getOwnPropertyNames(t).forEach(a=>b[a]=()=>e[a]);return b.default=()=>e,r.d(c,b),c},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/"+({11:"d2df9b4e",15:"d803fa53",30:"db8c087e",31:"03e862ce",38:"a99a45c9",44:"e3f369d5",78:"b768a3a5",93:"a3702f61",126:"ae70dfbf",129:"dfa3dc90",188:"7f7a8893",191:"c643a6d5",230:"bc63ae25",253:"bb45d4f9",299:"9b5a408c",351:"b9acb8d9",368:"07c30ae4",375:"3d81f1cf",417:"93e16042",446:"a4232cf8",598:"db4f3bbd",600:"ee87c775",750:"33b5ee95",768:"6d684b63",787:"672a0eba",800:"a4c0ff01",824:"5015646b",879:"8bee5443",956:"03735ec1",957:"c141421f",964:"05d835b4",1006:"47e58a89",1022:"8a61012d",1035:"24d32e91",1162:"f7e6b9d6",1185:"c2de64b8",1193:"444a6da6",1303:"41d45d82",1308:"ec030ab7",1345:"fe6d5b4f",1361:"ff296c8d",1408:"2fc7e024",1446:"c78349fc",1488:"ac3cc3f5",1490:"0f761898",1500:"1e9025f7",1542:"1ad8fbad",1556:"264ffc80",1567:"22dd74f7",1625:"92852ade",1690:"41a97a99",1845:"2ab0d4f5",1861:"8ad67c3b",1876:"5c3b537a",1895:"d375ca1d",1956:"fe6f9601",2073:"7b7db446",2100:"9cc9f218",2102:"755d162a",2138:"1a4e3797",2272:"ca5faf5d",2273:"e756fa26",2278:"c4280da9",2348:"f2da9399",2360:"017d425f",2394:"c2ea283c",2423:"19bcb67f",2440:"14381459",2457:"46abd5bb",2460:"954b19af",2469:"cd086441",2475:"1ab69cbd",2551:"394022bb",2565:"622fd833",2624:"5aaddd60",2642:"ad13630c",2651:"8cd0650d",2741:"43ad9ba4",2752:"e14655eb",2777:"b3ba68b4",2818:"a9b73094",2888:"32270e71",2990:"1d50b418",3164:"67f2dc6c",3225:"99a4401d",3240:"b079b393",3247:"f0b67137",3263:"730da84e",3274:"564a0250",3345:"040305fb",3347:"b5257597",3353:"2b4d41d7",3361:"8f633f11",3368:"efa0f9ee",3387:"3d67876e",3468:"c76bd485",3500:"c3c63498",3536:"2eb731bc",3576:"64045095",3694:"c2b1730c",3795:"c85076de",3832:"c3d82421",3859:"7679ca6e",4036:"fbcfc90d",4085:"cb17b4e0",4218:"d5bb0e16",4314:"f6a246db",4341:"e1a0f423",4384:"622bdc6f",4573:"baacc2a1",4612:"6a9eca1a",4614:"e55b8e98",4638:"d40b4c6f",4644:"d3e886ab",4645:"fef056e9",4706:"281c8344",4763:"f5eaeff2",4778:"e189eece",4784:"438e4337",4841:"8298c1cb",4867:"d73246f8",4876:"44691977",4891:"ca67d85f",4907:"86116998",4954:"a71efd4a",4995:"62266e9d",5048:"3c440e04",5107:"10156854",5110:"e9fe1d10",5138:"309383dc",5144:"944c5f91",5179:"41e3c105",5200:"ff7f32ba",5281:"a0511a5b",5284:"64ca91f1",5333:"70909872",5339:"9447891f",5412:"a6d50436",5467:"40d13080",5474:"d175aa8b",5513:"20d49d07",5514:"02955c09",5628:"bd7ab245",5663:"b1379b2b",5673:"73af8c33",5716:"946d1cee",5739:"69079906",5742:"aba21aa0",5757:"ad42ff54",5761:"7f193c41",5772:"4e7126f8",5799:"364e949f",5838:"bbb8ec1d",5865:"e1766139",5866:"3b577cbb",5883:"61cfab8e",5894:"f178e9b3",5903:"69d616f2",6003:"4d983c8e",6006:"7819cc1c",6010:"60c70af6",6053:"dfc50084",6080:"4d15791b",6108:"2fed9fb3",6214:"b1220dbd",6224:"ef9aa223",6256:"6888b60e",6281:"c96ce3ed",6311:"cce672fb",6332:"873508e7",6350:"188ee668",6419:"96eb0e67",6445:"9fb9a766",6473:"4c5e977b",6513:"f13693f0",6538:"719cba95",6559:"6f13807a",6601:"81bb6a5c",6649:"02e43f39",6682:"5a6d6120",6688:"388c3769",6752:"acc00ab9",6753:"ff349d2f",6757:"86bd0a2e",6801:"acefda8b",6920:"c817e236",6934:"d745f4e6",6949:"b36bb719",6999:"d5ec984b",7098:"a7bd4aaa",7108:"688feaef",7118:"7996108c",7142:"d0c1f670",7165:"547df4a1",7243:"5d9d4350",7257:"8321259f",7339:"7a774ddf",7356:"2ea623f2",7472:"744aaf8b",7484:"ad01e028",7507:"651ef245",7512:"4c09a7b3",7713:"3a82b27e",7720:"3bfbe7c9",7774:"8e9a8774",7807:"1a8a0a64",7824:"2b56b65e",7829:"7c27dc91",7841:"0132780e",7859:"593d9d00",7894:"0f44198a",7902:"619c7267",7964:"ff35961a",7968:"9b0af131",8064:"274fd934",8085:"cc44357e",8090:"6e85978c",8102:"019dbd1f",8184:"222029a9",8188:"ecd67556",8196:"75a9e1e0",8208:"216e3ed7",8267:"02f8077b",8268:"a4b6c971",8294:"f2bedfce",8298:"153f2b62",8304:"73d1a090",8336:"e7fd9095",8374:"261f8123",8392:"20177945",8401:"17896441",8504:"e6c6a4d2",8571:"da1ad91e",8593:"56350599",8607:"681e5335",8649:"7de42fc9",8667:"4bc8c03c",8679:"3705a9c0",8702:"42962acd",8750:"8a484c94",8765:"1a2eaade",8790:"bfca1e36",8810:"4f40ab5a",8822:"555ae514",8963:"56c23a02",8990:"5f1a63c6",9033:"9f55b2fc",9036:"850d3674",9048:"a94703ab",9099:"b1bc5ffe",9126:"169603ea",9170:"e05c0680",9213:"62d1268c",9227:"7e40e6b3",9264:"c7f32161",9315:"16faf8bf",9331:"ffcd190c",9363:"f3312674",9371:"991799c5",9431:"cd8dccb5",9459:"97254d1d",9476:"57c9a2b8",9479:"4e038a6a",9482:"a9c1003f",9483:"7823fa72",9509:"49311ca0",9555:"dedd5914",9610:"453ae64a",9619:"29b8e27a",9640:"3b25a2ae",9647:"5e95c892",9674:"feac1fba",9705:"ee3b5967",9712:"d8c8efb9",9731:"52edee88",9751:"25255263",9752:"72d61395",9763:"aece522a",9781:"b796be74",9857:"09f5326a",9888:"be76515e",9897:"f0eeb72e",9905:"43df3697",9976:"230d5fdc",9986:"d1f3cfe5"}[e]||e)+"."+{11:"7535ea4e",15:"3c9bfad4",30:"b4c45960",31:"4c52487f",38:"0b0bb081",44:"665dcbe1",78:"4574df70",93:"79c68fde",126:"d694de98",129:"9ee1baf1",188:"ab062521",191:"1dc448ca",230:"e9d5cf67",253:"88866337",299:"bc5d64d9",351:"95edea98",368:"34a10e49",375:"a83d6e9e",416:"3c613765",417:"cd0ddd5a",446:"711a3527",598:"723b23a6",600:"1bfc2e56",750:"b97cd5b1",768:"b77428d6",787:"a6a451d4",800:"32aed4bf",824:"e6ec1d45",879:"d6480029",956:"7e72f81a",957:"da9e1d2b",964:"be41d2ff",1006:"4bfe7d6e",1022:"403c52a3",1035:"cc26804f",1162:"846917f8",1185:"03bd9764",1193:"bbc5980d",1303:"9e3798b4",1308:"5c14cd9a",1345:"3ff8cb8f",1361:"318648bc",1408:"51cd7413",1446:"b635b41b",1488:"feb8009a",1490:"6c645c9b",1500:"eaff0303",1542:"86c0c556",1556:"118cb47f",1567:"7d7e37d2",1625:"14cdddbe",1690:"288a667f",1845:"ffb9c13f",1861:"53f120bc",1876:"d729f827",1895:"5ee6b671",1956:"b8856888",2073:"6c7cda9a",2100:"afd8f376",2102:"9329bc60",2138:"f62f93d0",2237:"8bc4ac99",2272:"6cc0e60c",2273:"44b994c5",2278:"485740c6",2348:"d3bfb9cb",2360:"d868b3f5",2394:"ac14eef1",2423:"8b04bffc",2440:"986975a1",2457:"5a4650d9",2460:"8ce45567",2469:"e6f2f1a0",2475:"a4ec1cf3",2551:"67d2eaf8",2565:"7fe87656",2624:"00825dc5",2642:"91d22876",2651:"bfa64c6e",2741:"2508328a",2752:"615c674c",2777:"44e50fed",2818:"cb272f1f",2888:"37fc0309",2990:"61e9fbb1",3164:"c41fea74",3225:"a08bfb27",3240:"240925ec",3247:"9424ae74",3263:"d9743680",3274:"61775522",3345:"fc2ce836",3347:"ed9eb139",3353:"6e44ca78",3361:"14e378b0",3368:"d78be2e8",3387:"3801b523",3468:"ca115d4b",3477:"a7eba177",3500:"4ed2898e",3536:"0c7aaa2a",3576:"20fe69b3",3694:"164f0b53",3795:"6945095c",3832:"9b4fc0f0",3859:"6bc699bd",4036:"021e5445",4085:"0ff35994",4218:"f56e6e1b",4314:"499c51f9",4341:"e7d0ae98",4384:"4a1bed8a",4573:"a0d9ec5c",4612:"92ce55f5",4614:"20cacbad",4638:"a7836231",4644:"44dca449",4645:"e766f36d",4706:"a5f283cf",4754:"5b9f9c4a",4763:"2d7ed358",4778:"0f246115",4784:"aa3645d6",4841:"8fa351a4",4867:"23b9f296",4876:"400afc77",4891:"1d24c297",4907:"7b9e861a",4954:"81160209",4995:"1e8db07a",5048:"af24b62c",5107:"d0fba644",5110:"95c2f2b7",5138:"425686f2",5144:"34cdb9e6",5179:"e8547d7b",5200:"66120317",5281:"a7b94daf",5284:"2a8efb5d",5333:"005761f4",5339:"12dc5243",5412:"2d86bc82",5467:"c62b0788",5474:"753cfbbc",5513:"a1bd7832",5514:"09b288f1",5628:"8be8cca7",5663:"d0bf87ba",5673:"251b8a2d",5716:"306ccb16",5739:"fc012235",5742:"60b1d5b2",5757:"618b9154",5761:"5f50e35e",5772:"6c2359b5",5799:"0bb4a625",5838:"a06b1dfb",5865:"0c617772",5866:"84a7b519",5883:"c4686d06",5894:"6bfbe353",5903:"0f758b14",6003:"34e0f6ab",6006:"0becd7a6",6010:"8b033097",6053:"ec06d572",6080:"5f87d90c",6108:"84298e7b",6214:"b8e15d85",6224:"55f80104",6256:"54351616",6281:"fd3b2058",6311:"3917f33f",6332:"ea4bab27",6350:"3d9c862f",6419:"cdbc216e",6445:"ccc8b99a",6473:"b5e32ff9",6513:"7eadceee",6538:"6f5c14e0",6559:"0c454bf8",6601:"37bda0f7",6649:"c4341b5c",6682:"1d1c591e",6688:"d1eaac87",6752:"260b1798",6753:"72d6b927",6757:"3be90edc",6801:"0bc5f127",6920:"035e88c2",6934:"c2255e7e",6949:"5d8a6f09",6999:"66a7cd37",7098:"fc1f6434",7108:"8b4a706f",7118:"e261e76b",7142:"bde4cbc4",7165:"6b8584c0",7243:"296e8a61",7257:"8e6ae225",7339:"0f369e49",7356:"71fb0ad4",7397:"385da999",7472:"63af5563",7484:"3fd92905",7507:"fb338600",7512:"e8c30b47",7713:"cc38a18f",7720:"9c9e52b3",7774:"f5f2d629",7807:"d522f6ff",7824:"d13a17e9",7829:"ebe7e0da",7841:"e353fb9b",7859:"bfb7b6ef",7894:"a55f0514",7902:"ccc9a6ea",7964:"849a2552",7968:"c9a8f1d4",8064:"c9a775c4",8085:"e1986413",8090:"c9d242d1",8102:"9accf22f",8158:"20de8b80",8184:"4a3b4060",8188:"519dd5a5",8196:"95230909",8208:"301426d8",8267:"dcdffe42",8268:"afde5c28",8294:"b38f02c9",8298:"29f678e5",8304:"25efae09",8336:"f07fe83f",8374:"f190aa79",8392:"653e9358",8401:"23c55f2d",8504:"f307d36f",8571:"da8dce60",8593:"2889cadd",8607:"546221af",8649:"a75579dc",8667:"30b16c19",8679:"ff760d64",8702:"3a92390f",8750:"241135ef",8765:"333e2cda",8790:"19345819",8810:"4bbcdad5",8822:"e09cf857",8913:"47209f3b",8963:"f13de791",8990:"73dcef67",9033:"b425bc83",9036:"aec7a0e7",9048:"bdc69ee3",9099:"3af6b43c",9126:"6f9e3101",9148:"2b76b49f",9170:"b292e02b",9213:"5ef98d36",9227:"6f06eaf4",9264:"9ed8b3f4",9315:"06370702",9331:"ae254b82",9363:"9fe9d801",9371:"42ffb4dc",9431:"679a7398",9459:"9d7b254b",9476:"7811c9d6",9479:"ebab20a6",9482:"3a03726b",9483:"25a2c300",9495:"49162ef8",9509:"daadba3a",9555:"77bc5375",9610:"b82df516",9619:"3d4eaff7",9640:"b4e56f6c",9647:"5cb928a1",9674:"5e841d2a",9705:"926bf843",9712:"5d2e519a",9731:"09dbde0e",9751:"b4dca678",9752:"262bf7fa",9763:"4718169e",9781:"c582fb19",9857:"6f05a131",9888:"b2a9bcab",9897:"da7686fd",9905:"e4babc48",9976:"72bfd912",9986:"c86f00ba"}[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),d={},c="langflow-docs:",r.l=(e,a,f,b)=>{if(d[e])d[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 c=d[e];if(delete d[e],t.parentNode&&t.parentNode.removeChild(t),c&&c.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",14381459:"2440",17896441:"8401",20177945:"8392",25255263:"9751",44691977:"4876",56350599:"8593",64045095:"3576",69079906:"5739",70909872:"5333",86116998:"4907",d2df9b4e:"11",d803fa53:"15",db8c087e:"30","03e862ce":"31",a99a45c9:"38",e3f369d5:"44",b768a3a5:"78",a3702f61:"93",ae70dfbf:"126",dfa3dc90:"129","7f7a8893":"188",c643a6d5:"191",bc63ae25:"230",bb45d4f9:"253","9b5a408c":"299",b9acb8d9:"351","07c30ae4":"368","3d81f1cf":"375","93e16042":"417",a4232cf8:"446",db4f3bbd:"598",ee87c775:"600","33b5ee95":"750","6d684b63":"768","672a0eba":"787",a4c0ff01:"800","5015646b":"824","8bee5443":"879","03735ec1":"956",c141421f:"957","05d835b4":"964","47e58a89":"1006","8a61012d":"1022","24d32e91":"1035",f7e6b9d6:"1162",c2de64b8:"1185","444a6da6":"1193","41d45d82":"1303",ec030ab7:"1308",fe6d5b4f:"1345",ff296c8d:"1361","2fc7e024":"1408",c78349fc:"1446",ac3cc3f5:"1488","0f761898":"1490","1e9025f7":"1500","1ad8fbad":"1542","264ffc80":"1556","22dd74f7":"1567","92852ade":"1625","41a97a99":"1690","2ab0d4f5":"1845","8ad67c3b":"1861","5c3b537a":"1876",d375ca1d:"1895",fe6f9601:"1956","7b7db446":"2073","9cc9f218":"2100","755d162a":"2102","1a4e3797":"2138",ca5faf5d:"2272",e756fa26:"2273",c4280da9:"2278",f2da9399:"2348","017d425f":"2360",c2ea283c:"2394","19bcb67f":"2423","46abd5bb":"2457","954b19af":"2460",cd086441:"2469","1ab69cbd":"2475","394022bb":"2551","622fd833":"2565","5aaddd60":"2624",ad13630c:"2642","8cd0650d":"2651","43ad9ba4":"2741",e14655eb:"2752",b3ba68b4:"2777",a9b73094:"2818","32270e71":"2888","1d50b418":"2990","67f2dc6c":"3164","99a4401d":"3225",b079b393:"3240",f0b67137:"3247","730da84e":"3263","564a0250":"3274","040305fb":"3345",b5257597:"3347","2b4d41d7":"3353","8f633f11":"3361",efa0f9ee:"3368","3d67876e":"3387",c76bd485:"3468",c3c63498:"3500","2eb731bc":"3536",c2b1730c:"3694",c85076de:"3795",c3d82421:"3832","7679ca6e":"3859",fbcfc90d:"4036",cb17b4e0:"4085",d5bb0e16:"4218",f6a246db:"4314",e1a0f423:"4341","622bdc6f":"4384",baacc2a1:"4573","6a9eca1a":"4612",e55b8e98:"4614",d40b4c6f:"4638",d3e886ab:"4644",fef056e9:"4645","281c8344":"4706",f5eaeff2:"4763",e189eece:"4778","438e4337":"4784","8298c1cb":"4841",d73246f8:"4867",ca67d85f:"4891",a71efd4a:"4954","62266e9d":"4995","3c440e04":"5048",e9fe1d10:"5110","309383dc":"5138","944c5f91":"5144","41e3c105":"5179",ff7f32ba:"5200",a0511a5b:"5281","64ca91f1":"5284","9447891f":"5339",a6d50436:"5412","40d13080":"5467",d175aa8b:"5474","20d49d07":"5513","02955c09":"5514",bd7ab245:"5628",b1379b2b:"5663","73af8c33":"5673","946d1cee":"5716",aba21aa0:"5742",ad42ff54:"5757","7f193c41":"5761","4e7126f8":"5772","364e949f":"5799",bbb8ec1d:"5838",e1766139:"5865","3b577cbb":"5866","61cfab8e":"5883",f178e9b3:"5894","69d616f2":"5903","4d983c8e":"6003","7819cc1c":"6006","60c70af6":"6010",dfc50084:"6053","4d15791b":"6080","2fed9fb3":"6108",b1220dbd:"6214",ef9aa223:"6224","6888b60e":"6256",c96ce3ed:"6281",cce672fb:"6311","873508e7":"6332","188ee668":"6350","96eb0e67":"6419","9fb9a766":"6445","4c5e977b":"6473",f13693f0:"6513","719cba95":"6538","6f13807a":"6559","81bb6a5c":"6601","02e43f39":"6649","5a6d6120":"6682","388c3769":"6688",acc00ab9:"6752",ff349d2f:"6753","86bd0a2e":"6757",acefda8b:"6801",c817e236:"6920",d745f4e6:"6934",b36bb719:"6949",d5ec984b:"6999",a7bd4aaa:"7098","688feaef":"7108","7996108c":"7118",d0c1f670:"7142","547df4a1":"7165","5d9d4350":"7243","8321259f":"7257","7a774ddf":"7339","2ea623f2":"7356","744aaf8b":"7472",ad01e028:"7484","651ef245":"7507","4c09a7b3":"7512","3a82b27e":"7713","3bfbe7c9":"7720","8e9a8774":"7774","1a8a0a64":"7807","2b56b65e":"7824","7c27dc91":"7829","0132780e":"7841","593d9d00":"7859","0f44198a":"7894","619c7267":"7902",ff35961a:"7964","9b0af131":"7968","274fd934":"8064",cc44357e:"8085","6e85978c":"8090","019dbd1f":"8102","222029a9":"8184",ecd67556:"8188","75a9e1e0":"8196","216e3ed7":"8208","02f8077b":"8267",a4b6c971:"8268",f2bedfce:"8294","153f2b62":"8298","73d1a090":"8304",e7fd9095:"8336","261f8123":"8374",e6c6a4d2:"8504",da1ad91e:"8571","681e5335":"8607","7de42fc9":"8649","4bc8c03c":"8667","3705a9c0":"8679","42962acd":"8702","8a484c94":"8750","1a2eaade":"8765",bfca1e36:"8790","4f40ab5a":"8810","555ae514":"8822","56c23a02":"8963","5f1a63c6":"8990","9f55b2fc":"9033","850d3674":"9036",a94703ab:"9048",b1bc5ffe:"9099","169603ea":"9126",e05c0680:"9170","62d1268c":"9213","7e40e6b3":"9227",c7f32161:"9264","16faf8bf":"9315",ffcd190c:"9331",f3312674:"9363","991799c5":"9371",cd8dccb5:"9431","97254d1d":"9459","57c9a2b8":"9476","4e038a6a":"9479",a9c1003f:"9482","7823fa72":"9483","49311ca0":"9509",dedd5914:"9555","453ae64a":"9610","29b8e27a":"9619","3b25a2ae":"9640","5e95c892":"9647",feac1fba:"9674",ee3b5967:"9705",d8c8efb9:"9712","52edee88":"9731","72d61395":"9752",aece522a:"9763",b796be74:"9781","09f5326a":"9857",be76515e:"9888",f0eeb72e:"9897","43df3697":"9905","230d5fdc":"9976",d1f3cfe5:"9986"}[e]||e,r.p+r.u(e)},(()=>{var e={5354:0,1869:0};r.f.j=(a,f)=>{var d=r.o(e,a)?e[a]:void 0;if(0!==d)if(d)f.push(d[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var c=new Promise((f,c)=>d=e[a]=[f,c]);f.push(d[2]=c);var b=r.p+r.u(a),t=new Error;r.l(b,f=>{if(r.o(e,a)&&(0!==(d=e[a])&&(e[a]=void 0),d)){var c=f&&("load"===f.type?"missing":f.type),b=f&&f.target&&f.target.src;t.message="Loading chunk "+a+" failed.\n("+c+": "+b+")",t.name="ChunkLoadError",t.type=c,t.request=b,d[1](t)}},"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,f)=>{var d,c,b=f[0],t=f[1],o=f[2],n=0;if(b.some(a=>0!==e[a])){for(d in t)r.o(t,d)&&(r.m[d]=t[d]);if(o)var i=o(r)}for(a&&a(f);n - + @@ -51,7 +51,7 @@

This page describes the components that are available in the AI/ML bundle.

AI/ML API text generation​

This component creates a ChatOpenAI model instance using the AI/ML API. -The output is exclusively a Language Model (LanguageModel) that you can connect to another LLM-driven component, such as a Smart Transform component.

+The output is exclusively a Language Model (LanguageModel) that you can connect to another LLM-driven component, such as a Smart Function component.

For more information, see the AI/ML API Langflow integration documentation and Language model components.

AI/ML API text generation parameters​

Some parameters are hidden by default in the visual editor. diff --git a/bundles-amazon.html b/bundles-amazon.html index 391a575888..d0a27d0db0 100644 --- a/bundles-amazon.html +++ b/bundles-amazon.html @@ -23,7 +23,7 @@ - + @@ -53,7 +53,7 @@

This component generates text using Amazon Bedrock LLMs.

It can output either a Model Response (Message) or a Language Model (LanguageModel). Specifically, the Language Model output is an instance of ChatBedrock configured according to the component's parameters.

-

Use the Language Model output when you want to use an Amazon Bedrock model as the LLM for another LLM-driven component, such as an Agent or Smart Transform component.

+

Use the Language Model output when you want to use an Amazon Bedrock model as the LLM for another LLM-driven component, such as an Agent or Smart Function component.

For more information, see Language model components.

Amazon Bedrock parameters​

Some parameters are hidden by default in the visual editor. diff --git a/bundles-anthropic.html b/bundles-anthropic.html index 6835ef9df6..b7d65492f0 100644 --- a/bundles-anthropic.html +++ b/bundles-anthropic.html @@ -23,7 +23,7 @@ - + @@ -54,7 +54,7 @@

The Anthropic component generates text using Anthropic Chat and Language models like Claude.

It can output either a Model Response (Message) or a Language Model (LanguageModel). Specifically, the Language Model output is an instance of ChatAnthropic configured according to the component's parameters.

-

Use the Language Model output when you want to use an Anthropic model as the LLM for another LLM-driven component, such as an Agent or Smart Transform component.

+

Use the Language Model output when you want to use an Anthropic model as the LLM for another LLM-driven component, such as an Agent or Smart Function component.

For more information, see Language model components.

Anthropic text generation parameters​

Some parameters are hidden by default in the visual editor. diff --git a/bundles-apify.html b/bundles-apify.html index 4f29aa7d5b..59615b65ab 100644 --- a/bundles-apify.html +++ b/bundles-apify.html @@ -23,7 +23,7 @@ - + diff --git a/bundles-arxiv.html b/bundles-arxiv.html index 66905a760b..0cd46b7af3 100644 --- a/bundles-arxiv.html +++ b/bundles-arxiv.html @@ -23,7 +23,7 @@ - + diff --git a/bundles-assemblyai.html b/bundles-assemblyai.html index d0b7881778..12384609f2 100644 --- a/bundles-assemblyai.html +++ b/bundles-assemblyai.html @@ -23,7 +23,7 @@ - + diff --git a/bundles-azure.html b/bundles-azure.html index 807e5cf02f..93738b61a1 100644 --- a/bundles-azure.html +++ b/bundles-azure.html @@ -23,7 +23,7 @@ - + @@ -53,7 +53,7 @@

This component generates text using Azure OpenAI LLMs.

It can output either a Model Response (Message) or a Language Model (LanguageModel). Specifically, the Language Model output is an instance of AzureChatOpenAI configured according to the component's parameters.

-

Use the Language Model output when you want to use an Azure OpenAI model as the LLM for another LLM-driven component, such as an Agent or Smart Transform component.

+

Use the Language Model output when you want to use an Azure OpenAI model as the LLM for another LLM-driven component, such as an Agent or Smart Function component.

For more information, see Language model components.

Azure OpenAI parameters​

Some parameters are hidden by default in the visual editor. diff --git a/bundles-baidu.html b/bundles-baidu.html index 419b315f1b..4d38749f42 100644 --- a/bundles-baidu.html +++ b/bundles-baidu.html @@ -23,7 +23,7 @@ - + @@ -52,7 +52,7 @@

Qianfan​

The Qianfan component generates text using Qianfan's language models.

It can output either a Model Response (Message) or a Language Model (LanguageModel).

-

Use the Language Model output when you want to use a Qianfan model as the LLM for another LLM-driven component, such as an Agent or Smart Transform component.

+

Use the Language Model output when you want to use a Qianfan model as the LLM for another LLM-driven component, such as an Agent or Smart Function component.

For more information, see Language model components and the Qianfan documentation.