From 48c26d9f23f8fe56da3828ebaa8b0d367cc6a4a5 Mon Sep 17 00:00:00 2001
From: "github-merge-queue[bot]"
Date: Mon, 30 Jun 2025 20:57:14 +0000
Subject: [PATCH] deploy: 2de118910aa05eaa851cc84df828033eab796d17
---
404.html | 2 +-
agents-tools.html | 2 +-
agents.html | 2 +-
api-build.html | 2 +-
api-files.html | 2 +-
api-flows-run.html | 2 +-
api-flows.html | 2 +-
api-logs.html | 2 +-
api-monitor.html | 2 +-
api-projects.html | 2 +-
api-reference-api-examples.html | 2 +-
api-users.html | 2 +-
api.html | 2 +-
api/add-user.html | 2 +-
api/auto-login.html | 2 +-
api/build-flow.html | 2 +-
api/build-public-tmp.html | 2 +-
api/build-vertex-stream.html | 2 +-
api/build-vertex.html | 2 +-
api/cancel-build.html | 2 +-
api/check-if-store-has-api-key.html | 2 +-
api/check-if-store-is-enabled.html | 2 +-
api/create-api-key-route.html | 2 +-
api/create-flow.html | 2 +-
api/create-flows.html | 2 +-
api/create-folder-redirect.html | 2 +-
api/create-project.html | 2 +-
api/create-upload-file.html | 2 +-
api/create-variable.html | 2 +-
api/custom-component-update.html | 2 +-
api/custom-component.html | 2 +-
api/delete-all-files-1.html | 2 +-
api/delete-all-files.html | 2 +-
api/delete-api-key-route.html | 2 +-
api/delete-file-1.html | 2 +-
api/delete-file.html | 2 +-
api/delete-files-batch.html | 2 +-
api/delete-flow.html | 2 +-
api/delete-folder-redirect.html | 2 +-
api/delete-messages-session.html | 2 +-
api/delete-messages.html | 2 +-
api/delete-multiple-flows.html | 2 +-
api/delete-project.html | 2 +-
api/delete-user.html | 2 +-
api/delete-variable.html | 2 +-
api/delete-vertex-builds.html | 2 +-
api/download-component.html | 2 +-
api/download-file-1.html | 2 +-
api/download-file-2.html | 2 +-
api/download-file-redirect.html | 2 +-
api/download-file.html | 2 +-
api/download-files-batch.html | 2 +-
api/download-image.html | 2 +-
api/download-multiple-file.html | 2 +-
api/download-profile-picture.html | 2 +-
api/edit-file-name.html | 2 +-
api/experimental-run-flow.html | 2 +-
api/get-all.html | 2 +-
api/get-api-keys-route.html | 2 +-
api/get-build-events.html | 2 +-
api/get-components.html | 2 +-
api/get-config.html | 2 +-
api/get-elevenlabs-voice-ids.html | 2 +-
api/get-list-of-components-liked-by-user.html | 2 +-
api/get-messages.html | 2 +-
api/get-starter-projects.html | 2 +-
api/get-tags.html | 2 +-
api/get-task-status.html | 2 +-
api/get-transactions.html | 2 +-
api/get-version.html | 2 +-
api/get-vertex-builds.html | 2 +-
api/handle-messages-1.html | 2 +-
api/handle-messages.html | 2 +-
api/handle-project-messages-with-slash.html | 2 +-
api/handle-project-messages.html | 2 +-
api/handle-project-sse.html | 2 +-
api/handle-sse-1.html | 2 +-
api/handle-sse.html | 2 +-
api/health-check.html | 2 +-
api/health.html | 2 +-
api/like-component.html | 2 +-
api/list-files-1.html | 2 +-
api/list-files-2.html | 2 +-
api/list-files.html | 2 +-
api/list-profile-pictures.html | 2 +-
api/list-project-tools.html | 2 +-
api/login-to-get-access-token.html | 2 +-
api/logout.html | 2 +-
api/logs.html | 2 +-
api/patch-user.html | 2 +-
api/post-validate-code.html | 2 +-
api/post-validate-prompt.html | 2 +-
api/process-1.html | 2 +-
api/process.html | 2 +-
api/read-all-users.html | 2 +-
api/read-basic-examples.html | 2 +-
api/read-current-user.html | 2 +-
api/read-flow.html | 2 +-
api/read-flows.html | 2 +-
api/read-folder-redirect.html | 2 +-
api/read-folders-redirect.html | 2 +-
api/read-project.html | 2 +-
api/read-projects.html | 2 +-
api/read-public-flow.html | 2 +-
api/read-variables.html | 2 +-
api/refresh-token.html | 2 +-
api/reset-password.html | 2 +-
api/retrieve-vertices-order.html | 2 +-
api/save-store-api-key.html | 2 +-
api/share-component.html | 2 +-
api/simplified-run-flow.html | 2 +-
api/stream-logs.html | 2 +-
api/update-flow.html | 2 +-
api/update-folder-redirect.html | 2 +-
api/update-message.html | 2 +-
api/update-project-mcp-settings.html | 2 +-
api/update-project.html | 2 +-
api/update-session-id.html | 2 +-
api/update-shared-component.html | 2 +-
api/update-variable.html | 2 +-
api/upload-file-1.html | 2 +-
api/upload-file-2.html | 2 +-
api/upload-file-redirect.html | 2 +-
api/upload-file.html | 2 +-
api/upload-user-file-1.html | 2 +-
api/upload-user-file.html | 2 +-
api/webhook-run-flow.html | 2 +-
...d841d.7d139460.js => 051d841d.e36ae030.js} | 2 +-
assets/js/0be1d5fe.6cdeea52.js | 1 +
assets/js/0be1d5fe.e4fde301.js | 1 -
assets/js/0e5205b8.87751c5d.js | 1 +
assets/js/0e5205b8.d620ee3e.js | 1 -
...0d4f5.3496b231.js => 2ab0d4f5.34f9cf71.js} | 2 +-
...94ad4.53504ec0.js => 3ae94ad4.39d01eb4.js} | 2 +-
...ba371.dd503df6.js => 4f1ba371.f48824d5.js} | 2 +-
assets/js/6debce21.90150382.js | 1 -
assets/js/6debce21.baa31064.js | 1 +
assets/js/6e1a9721.114d93d5.js | 1 +
assets/js/6e1a9721.ac35363b.js | 1 -
...1683c.b25dbe75.js => 8311683c.015842e5.js} | 2 +-
assets/js/885eb549.347ccb7c.js | 1 +
assets/js/885eb549.de125c50.js | 1 -
assets/js/8ff68e6f.64e46a3d.js | 1 -
assets/js/8ff68e6f.7dc3f376.js | 1 +
assets/js/914b1bec.64303cfc.js | 1 -
assets/js/914b1bec.c1c0de92.js | 1 +
...b5fc1.809898cb.js => 921b5fc1.78f1d79f.js} | 2 +-
assets/js/c39b795e.3f04ba13.js | 1 -
assets/js/c39b795e.90d69f0f.js | 1 +
...6a4d2.74acbc05.js => e6c6a4d2.ec93064c.js} | 2 +-
assets/js/f66238ae.1d66c778.js | 1 +
assets/js/f66238ae.22687297.js | 1 -
assets/js/fba42286.942c9720.js | 1 -
assets/js/fba42286.ec9f467f.js | 1 +
assets/js/fdefa9a8.774f69c8.js | 1 +
assets/js/fdefa9a8.c4a0736a.js | 1 -
...n.1999e7c0.js => runtime~main.4bdc02ef.js} | 2 +-
basic-prompting.html | 26 ++++++++--------
blog-writer.html | 2 +-
components-agents.html | 2 +-
components-bundle-components.html | 2 +-
components-custom-components.html | 2 +-
components-data.html | 6 ++--
components-embedding-models.html | 4 +--
components-helpers.html | 6 ++--
components-io.html | 4 +--
components-logic.html | 2 +-
components-memories.html | 2 +-
components-models.html | 6 ++--
components-processing.html | 12 ++++----
components-prompts.html | 2 +-
components-tools.html | 4 +--
components-vector-stores.html | 10 +++----
concepts-components.html | 16 +++++-----
concepts-file-management.html | 2 +-
concepts-flows.html | 2 +-
concepts-objects.html | 2 +-
concepts-overview.html | 2 +-
concepts-playground.html | 4 +--
concepts-publish.html | 2 +-
concepts-voice-mode.html | 4 +--
configuration-api-keys.html | 2 +-
configuration-authentication.html | 2 +-
configuration-cli.html | 2 +-
configuration-custom-database.html | 2 +-
configuration-global-variables.html | 2 +-
contributing-bundles.html | 2 +-
contributing-community.html | 2 +-
contributing-component-tests.html | 2 +-
contributing-components.html | 2 +-
contributing-github-issues.html | 2 +-
contributing-how-to-contribute.html | 2 +-
contributing-telemetry.html | 2 +-
contributing-templates.html | 2 +-
deployment-caddyfile.html | 2 +-
deployment-docker.html | 2 +-
deployment-gcp.html | 2 +-
deployment-hugging-face-spaces.html | 2 +-
deployment-kubernetes-dev.html | 2 +-
deployment-kubernetes-prod.html | 2 +-
deployment-overview.html | 2 +-
deployment-prod-best-practices.html | 2 +-
deployment-railway.html | 2 +-
deployment-render.html | 2 +-
develop-application.html | 2 +-
develop-overview.html | 2 +-
document-qa.html | 2 +-
embedded-chat-widget.html | 2 +-
environment-variables.html | 2 +-
financial-report-parser.html | 2 +-
get-started-installation.html | 2 +-
get-started-quickstart.html | 2 +-
index.html | 2 +-
install-custom-dependencies.html | 2 +-
integrations-apify.html | 2 +-
integrations-arize.html | 2 +-
integrations-assemblyai.html | 2 +-
integrations-cleanlab.html | 2 +-
integrations-composio.html | 2 +-
integrations-google-big-query.html | 2 +-
integrations-langfuse.html | 2 +-
integrations-langsmith.html | 2 +-
integrations-langwatch.html | 2 +-
integrations-nvidia-g-assist.html | 2 +-
integrations-nvidia-ingest-wsl2.html | 2 +-
integrations-nvidia-ingest.html | 2 +-
integrations-opik.html | 2 +-
...setup-google-cloud-vertex-ai-langflow.html | 2 +-
integrations-setup-google-oauth-langflow.html | 2 +-
.../notion/notion-agent-conversational.html | 2 +-
.../notion/notion-agent-meeting-notes.html | 2 +-
integrations/notion/setup.html | 2 +-
logging.html | 2 +-
luna-for-langflow.html | 2 +-
mcp-client.html | 7 ++---
mcp-component-astra.html | 2 +-
mcp-server.html | 2 +-
memory-chatbot.html | 4 +--
memory.html | 2 +-
search.html | 2 +-
sequential-agent.html | 2 +-
session-id.html | 2 +-
simple-agent.html | 2 +-
sitemap.xml | 2 +-
travel-planning-agent.html | 2 +-
troubleshoot.html | 2 +-
typescript-client.html | 2 +-
vector-store-rag.html | 30 +++++++++----------
webhook.html | 4 +--
249 files changed, 294 insertions(+), 297 deletions(-)
rename assets/js/{051d841d.7d139460.js => 051d841d.e36ae030.js} (67%)
create mode 100644 assets/js/0be1d5fe.6cdeea52.js
delete mode 100644 assets/js/0be1d5fe.e4fde301.js
create mode 100644 assets/js/0e5205b8.87751c5d.js
delete mode 100644 assets/js/0e5205b8.d620ee3e.js
rename assets/js/{2ab0d4f5.3496b231.js => 2ab0d4f5.34f9cf71.js} (50%)
rename assets/js/{3ae94ad4.53504ec0.js => 3ae94ad4.39d01eb4.js} (76%)
rename assets/js/{4f1ba371.dd503df6.js => 4f1ba371.f48824d5.js} (56%)
delete mode 100644 assets/js/6debce21.90150382.js
create mode 100644 assets/js/6debce21.baa31064.js
create mode 100644 assets/js/6e1a9721.114d93d5.js
delete mode 100644 assets/js/6e1a9721.ac35363b.js
rename assets/js/{8311683c.b25dbe75.js => 8311683c.015842e5.js} (81%)
create mode 100644 assets/js/885eb549.347ccb7c.js
delete mode 100644 assets/js/885eb549.de125c50.js
delete mode 100644 assets/js/8ff68e6f.64e46a3d.js
create mode 100644 assets/js/8ff68e6f.7dc3f376.js
delete mode 100644 assets/js/914b1bec.64303cfc.js
create mode 100644 assets/js/914b1bec.c1c0de92.js
rename assets/js/{921b5fc1.809898cb.js => 921b5fc1.78f1d79f.js} (75%)
delete mode 100644 assets/js/c39b795e.3f04ba13.js
create mode 100644 assets/js/c39b795e.90d69f0f.js
rename assets/js/{e6c6a4d2.74acbc05.js => e6c6a4d2.ec93064c.js} (55%)
create mode 100644 assets/js/f66238ae.1d66c778.js
delete mode 100644 assets/js/f66238ae.22687297.js
delete mode 100644 assets/js/fba42286.942c9720.js
create mode 100644 assets/js/fba42286.ec9f467f.js
create mode 100644 assets/js/fdefa9a8.774f69c8.js
delete mode 100644 assets/js/fdefa9a8.c4a0736a.js
rename assets/js/{runtime~main.1999e7c0.js => runtime~main.4bdc02ef.js} (80%)
diff --git a/404.html b/404.html
index 1cc7f373a3..9167dc11d9 100644
--- a/404.html
+++ b/404.html
@@ -21,7 +21,7 @@
-
+
diff --git a/agents-tools.html b/agents-tools.html
index 4672635cce..8800e763cc 100644
--- a/agents-tools.html
+++ b/agents-tools.html
@@ -21,7 +21,7 @@
-
+
diff --git a/agents.html b/agents.html
index e192290dad..8ee31c1450 100644
--- a/agents.html
+++ b/agents.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api-build.html b/api-build.html
index 1571301687..2f2d4a7f11 100644
--- a/api-build.html
+++ b/api-build.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api-files.html b/api-files.html
index 1f3d64cdb7..dc535662b4 100644
--- a/api-files.html
+++ b/api-files.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api-flows-run.html b/api-flows-run.html
index e71946bdbc..eea1c52c2e 100644
--- a/api-flows-run.html
+++ b/api-flows-run.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api-flows.html b/api-flows.html
index 736b7428c1..d23f6c7b4c 100644
--- a/api-flows.html
+++ b/api-flows.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api-logs.html b/api-logs.html
index 95d7947371..59042904ce 100644
--- a/api-logs.html
+++ b/api-logs.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api-monitor.html b/api-monitor.html
index b1a9e5bd18..7e17281b73 100644
--- a/api-monitor.html
+++ b/api-monitor.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api-projects.html b/api-projects.html
index 402df30741..bc4d22038c 100644
--- a/api-projects.html
+++ b/api-projects.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api-reference-api-examples.html b/api-reference-api-examples.html
index adcdac74ff..2dfd48f2e5 100644
--- a/api-reference-api-examples.html
+++ b/api-reference-api-examples.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api-users.html b/api-users.html
index 687b08e42d..a3ba2daacf 100644
--- a/api-users.html
+++ b/api-users.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api.html b/api.html
index f47319e086..882813e9a5 100644
--- a/api.html
+++ b/api.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/add-user.html b/api/add-user.html
index 643f2159c7..c3cfdef06a 100644
--- a/api/add-user.html
+++ b/api/add-user.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/auto-login.html b/api/auto-login.html
index 66a5711043..b2bb2cff1c 100644
--- a/api/auto-login.html
+++ b/api/auto-login.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/build-flow.html b/api/build-flow.html
index 28b9d0b76d..99c8410b57 100644
--- a/api/build-flow.html
+++ b/api/build-flow.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/build-public-tmp.html b/api/build-public-tmp.html
index a2b7805466..448e8e10c5 100644
--- a/api/build-public-tmp.html
+++ b/api/build-public-tmp.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/build-vertex-stream.html b/api/build-vertex-stream.html
index 3c49e9b887..71862716fd 100644
--- a/api/build-vertex-stream.html
+++ b/api/build-vertex-stream.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/build-vertex.html b/api/build-vertex.html
index 4585b56456..2ffee6133a 100644
--- a/api/build-vertex.html
+++ b/api/build-vertex.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/cancel-build.html b/api/cancel-build.html
index 2428054cec..754942d959 100644
--- a/api/cancel-build.html
+++ b/api/cancel-build.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/check-if-store-has-api-key.html b/api/check-if-store-has-api-key.html
index ec42ecd24d..a590c8cb41 100644
--- a/api/check-if-store-has-api-key.html
+++ b/api/check-if-store-has-api-key.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/check-if-store-is-enabled.html b/api/check-if-store-is-enabled.html
index 4e7539ce82..6e56fe12f7 100644
--- a/api/check-if-store-is-enabled.html
+++ b/api/check-if-store-is-enabled.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/create-api-key-route.html b/api/create-api-key-route.html
index 815c891830..5556e94f4a 100644
--- a/api/create-api-key-route.html
+++ b/api/create-api-key-route.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/create-flow.html b/api/create-flow.html
index 33392b30df..fab772fb32 100644
--- a/api/create-flow.html
+++ b/api/create-flow.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/create-flows.html b/api/create-flows.html
index f9356aed4e..06c38fd8d8 100644
--- a/api/create-flows.html
+++ b/api/create-flows.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/create-folder-redirect.html b/api/create-folder-redirect.html
index 57b9bd1a80..dfecacbfa4 100644
--- a/api/create-folder-redirect.html
+++ b/api/create-folder-redirect.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/create-project.html b/api/create-project.html
index 714d25a340..85ae9d8c58 100644
--- a/api/create-project.html
+++ b/api/create-project.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/create-upload-file.html b/api/create-upload-file.html
index 9be74f37b8..1ceb0e8ea1 100644
--- a/api/create-upload-file.html
+++ b/api/create-upload-file.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/create-variable.html b/api/create-variable.html
index dd5127e930..78ca58376e 100644
--- a/api/create-variable.html
+++ b/api/create-variable.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/custom-component-update.html b/api/custom-component-update.html
index 0955480b51..725d3475af 100644
--- a/api/custom-component-update.html
+++ b/api/custom-component-update.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/custom-component.html b/api/custom-component.html
index 5250e09c39..ce65a6bb4f 100644
--- a/api/custom-component.html
+++ b/api/custom-component.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/delete-all-files-1.html b/api/delete-all-files-1.html
index 26859aa4d3..b4bc400232 100644
--- a/api/delete-all-files-1.html
+++ b/api/delete-all-files-1.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/delete-all-files.html b/api/delete-all-files.html
index 13746d36f6..0fd0d5e141 100644
--- a/api/delete-all-files.html
+++ b/api/delete-all-files.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/delete-api-key-route.html b/api/delete-api-key-route.html
index c2f0530b7e..0656bec00b 100644
--- a/api/delete-api-key-route.html
+++ b/api/delete-api-key-route.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/delete-file-1.html b/api/delete-file-1.html
index 1d7917b0fc..ac680031fa 100644
--- a/api/delete-file-1.html
+++ b/api/delete-file-1.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/delete-file.html b/api/delete-file.html
index 72ec41cd7a..303ceca2c5 100644
--- a/api/delete-file.html
+++ b/api/delete-file.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/delete-files-batch.html b/api/delete-files-batch.html
index 2ded641ee0..0c308e5fb1 100644
--- a/api/delete-files-batch.html
+++ b/api/delete-files-batch.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/delete-flow.html b/api/delete-flow.html
index 91df289bc6..b1c7aff71e 100644
--- a/api/delete-flow.html
+++ b/api/delete-flow.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/delete-folder-redirect.html b/api/delete-folder-redirect.html
index cdb1f815e7..08d50a6d5f 100644
--- a/api/delete-folder-redirect.html
+++ b/api/delete-folder-redirect.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/delete-messages-session.html b/api/delete-messages-session.html
index 8157b88c2f..d583dea116 100644
--- a/api/delete-messages-session.html
+++ b/api/delete-messages-session.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/delete-messages.html b/api/delete-messages.html
index 5c425292c6..734700b7f7 100644
--- a/api/delete-messages.html
+++ b/api/delete-messages.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/delete-multiple-flows.html b/api/delete-multiple-flows.html
index b081f40dc1..d0ebe01d82 100644
--- a/api/delete-multiple-flows.html
+++ b/api/delete-multiple-flows.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/delete-project.html b/api/delete-project.html
index 664a11a0eb..fe7a3f9971 100644
--- a/api/delete-project.html
+++ b/api/delete-project.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/delete-user.html b/api/delete-user.html
index 2c2ae53d93..0b4e3a8451 100644
--- a/api/delete-user.html
+++ b/api/delete-user.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/delete-variable.html b/api/delete-variable.html
index bdfc65a858..6c41450f15 100644
--- a/api/delete-variable.html
+++ b/api/delete-variable.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/delete-vertex-builds.html b/api/delete-vertex-builds.html
index 0943ca172f..7e1f431d4c 100644
--- a/api/delete-vertex-builds.html
+++ b/api/delete-vertex-builds.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/download-component.html b/api/download-component.html
index 341e923d8d..c3fe49f3c3 100644
--- a/api/download-component.html
+++ b/api/download-component.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/download-file-1.html b/api/download-file-1.html
index 97e8a3abe0..7f88f2345b 100644
--- a/api/download-file-1.html
+++ b/api/download-file-1.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/download-file-2.html b/api/download-file-2.html
index bf622d4c7d..549809d97f 100644
--- a/api/download-file-2.html
+++ b/api/download-file-2.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/download-file-redirect.html b/api/download-file-redirect.html
index 994b2e7c88..0256b7cfdf 100644
--- a/api/download-file-redirect.html
+++ b/api/download-file-redirect.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/download-file.html b/api/download-file.html
index 5a6b8f7516..c0f611c099 100644
--- a/api/download-file.html
+++ b/api/download-file.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/download-files-batch.html b/api/download-files-batch.html
index d679fe9bd9..4ec54f4e7b 100644
--- a/api/download-files-batch.html
+++ b/api/download-files-batch.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/download-image.html b/api/download-image.html
index 3e482f9e8d..54894569d3 100644
--- a/api/download-image.html
+++ b/api/download-image.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/download-multiple-file.html b/api/download-multiple-file.html
index ed5f6f7f0c..b91e6e76d1 100644
--- a/api/download-multiple-file.html
+++ b/api/download-multiple-file.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/download-profile-picture.html b/api/download-profile-picture.html
index b016414bf3..d4cf52cb2e 100644
--- a/api/download-profile-picture.html
+++ b/api/download-profile-picture.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/edit-file-name.html b/api/edit-file-name.html
index d4ca83cc1d..244a028d69 100644
--- a/api/edit-file-name.html
+++ b/api/edit-file-name.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/experimental-run-flow.html b/api/experimental-run-flow.html
index 546c1c045f..50e76d29b2 100644
--- a/api/experimental-run-flow.html
+++ b/api/experimental-run-flow.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/get-all.html b/api/get-all.html
index e94f66844c..fbc1b3c8c1 100644
--- a/api/get-all.html
+++ b/api/get-all.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/get-api-keys-route.html b/api/get-api-keys-route.html
index ea86579ed8..9d501b47a6 100644
--- a/api/get-api-keys-route.html
+++ b/api/get-api-keys-route.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/get-build-events.html b/api/get-build-events.html
index 5b7e2c34d1..a98af44e3e 100644
--- a/api/get-build-events.html
+++ b/api/get-build-events.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/get-components.html b/api/get-components.html
index 35f8614878..2f9964ebe7 100644
--- a/api/get-components.html
+++ b/api/get-components.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/get-config.html b/api/get-config.html
index d3cb9cf192..169012e869 100644
--- a/api/get-config.html
+++ b/api/get-config.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/get-elevenlabs-voice-ids.html b/api/get-elevenlabs-voice-ids.html
index 65590d7c9c..350ac45807 100644
--- a/api/get-elevenlabs-voice-ids.html
+++ b/api/get-elevenlabs-voice-ids.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/get-list-of-components-liked-by-user.html b/api/get-list-of-components-liked-by-user.html
index f560cd84ce..6b4046d43b 100644
--- a/api/get-list-of-components-liked-by-user.html
+++ b/api/get-list-of-components-liked-by-user.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/get-messages.html b/api/get-messages.html
index d5873c4c9a..79b8eca033 100644
--- a/api/get-messages.html
+++ b/api/get-messages.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/get-starter-projects.html b/api/get-starter-projects.html
index feaa08f27a..ba6924876f 100644
--- a/api/get-starter-projects.html
+++ b/api/get-starter-projects.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/get-tags.html b/api/get-tags.html
index 5ddf5381a5..4bfcd07a36 100644
--- a/api/get-tags.html
+++ b/api/get-tags.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/get-task-status.html b/api/get-task-status.html
index 431af3152e..adf37a0303 100644
--- a/api/get-task-status.html
+++ b/api/get-task-status.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/get-transactions.html b/api/get-transactions.html
index 60c3565f4f..f37e1eeb3c 100644
--- a/api/get-transactions.html
+++ b/api/get-transactions.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/get-version.html b/api/get-version.html
index b935549515..e3663cedf9 100644
--- a/api/get-version.html
+++ b/api/get-version.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/get-vertex-builds.html b/api/get-vertex-builds.html
index 3076df5682..ad81782b99 100644
--- a/api/get-vertex-builds.html
+++ b/api/get-vertex-builds.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/handle-messages-1.html b/api/handle-messages-1.html
index fdc4c4b8e8..2ce3d7242b 100644
--- a/api/handle-messages-1.html
+++ b/api/handle-messages-1.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/handle-messages.html b/api/handle-messages.html
index 1e0b14ca2c..e08f317678 100644
--- a/api/handle-messages.html
+++ b/api/handle-messages.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/handle-project-messages-with-slash.html b/api/handle-project-messages-with-slash.html
index a03a29e840..d40b095616 100644
--- a/api/handle-project-messages-with-slash.html
+++ b/api/handle-project-messages-with-slash.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/handle-project-messages.html b/api/handle-project-messages.html
index 09e6fc1cb8..f642c46b69 100644
--- a/api/handle-project-messages.html
+++ b/api/handle-project-messages.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/handle-project-sse.html b/api/handle-project-sse.html
index d91bd935ce..c4d37d5b28 100644
--- a/api/handle-project-sse.html
+++ b/api/handle-project-sse.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/handle-sse-1.html b/api/handle-sse-1.html
index 78f14e30a8..cb4d9c2c2f 100644
--- a/api/handle-sse-1.html
+++ b/api/handle-sse-1.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/handle-sse.html b/api/handle-sse.html
index 216bb0b5ce..d7654a9fd0 100644
--- a/api/handle-sse.html
+++ b/api/handle-sse.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/health-check.html b/api/health-check.html
index 9b2a81acdc..5e984007aa 100644
--- a/api/health-check.html
+++ b/api/health-check.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/health.html b/api/health.html
index fc3c228125..9ba13e0f79 100644
--- a/api/health.html
+++ b/api/health.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/like-component.html b/api/like-component.html
index adee17422c..abd2735066 100644
--- a/api/like-component.html
+++ b/api/like-component.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/list-files-1.html b/api/list-files-1.html
index ddf4fa1274..055a6df817 100644
--- a/api/list-files-1.html
+++ b/api/list-files-1.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/list-files-2.html b/api/list-files-2.html
index c35c738de4..e1ea6bb606 100644
--- a/api/list-files-2.html
+++ b/api/list-files-2.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/list-files.html b/api/list-files.html
index 84c644b979..e1ca089822 100644
--- a/api/list-files.html
+++ b/api/list-files.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/list-profile-pictures.html b/api/list-profile-pictures.html
index e7f25456bb..143b315529 100644
--- a/api/list-profile-pictures.html
+++ b/api/list-profile-pictures.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/list-project-tools.html b/api/list-project-tools.html
index 9fa112f8b9..db30905517 100644
--- a/api/list-project-tools.html
+++ b/api/list-project-tools.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/login-to-get-access-token.html b/api/login-to-get-access-token.html
index b40af223c7..f70dbe2800 100644
--- a/api/login-to-get-access-token.html
+++ b/api/login-to-get-access-token.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/logout.html b/api/logout.html
index 993bd1c52f..63fa16c924 100644
--- a/api/logout.html
+++ b/api/logout.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/logs.html b/api/logs.html
index df87529cd8..35f13cdc33 100644
--- a/api/logs.html
+++ b/api/logs.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/patch-user.html b/api/patch-user.html
index a8fe0b70b1..d29066824b 100644
--- a/api/patch-user.html
+++ b/api/patch-user.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/post-validate-code.html b/api/post-validate-code.html
index ca6c752313..bec2aa5d71 100644
--- a/api/post-validate-code.html
+++ b/api/post-validate-code.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/post-validate-prompt.html b/api/post-validate-prompt.html
index c96115002e..31a9882ea7 100644
--- a/api/post-validate-prompt.html
+++ b/api/post-validate-prompt.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/process-1.html b/api/process-1.html
index 7dac226be9..f1baffb2a2 100644
--- a/api/process-1.html
+++ b/api/process-1.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/process.html b/api/process.html
index ee92bcf83e..84dcab1c8f 100644
--- a/api/process.html
+++ b/api/process.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/read-all-users.html b/api/read-all-users.html
index 6c43c6f72c..ad9f341b31 100644
--- a/api/read-all-users.html
+++ b/api/read-all-users.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/read-basic-examples.html b/api/read-basic-examples.html
index c013eccb45..836fc88b66 100644
--- a/api/read-basic-examples.html
+++ b/api/read-basic-examples.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/read-current-user.html b/api/read-current-user.html
index 70bde601b8..f9b8ae8602 100644
--- a/api/read-current-user.html
+++ b/api/read-current-user.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/read-flow.html b/api/read-flow.html
index 3e5f19d181..ae65aa6ab3 100644
--- a/api/read-flow.html
+++ b/api/read-flow.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/read-flows.html b/api/read-flows.html
index a982f01387..1bf05ce395 100644
--- a/api/read-flows.html
+++ b/api/read-flows.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/read-folder-redirect.html b/api/read-folder-redirect.html
index 9d7c3fda18..e0efb47f85 100644
--- a/api/read-folder-redirect.html
+++ b/api/read-folder-redirect.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/read-folders-redirect.html b/api/read-folders-redirect.html
index b3e0e2b1bd..93180cc938 100644
--- a/api/read-folders-redirect.html
+++ b/api/read-folders-redirect.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/read-project.html b/api/read-project.html
index 9efaae6dff..3f62d8c31a 100644
--- a/api/read-project.html
+++ b/api/read-project.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/read-projects.html b/api/read-projects.html
index f68341c44a..e26ed324ec 100644
--- a/api/read-projects.html
+++ b/api/read-projects.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/read-public-flow.html b/api/read-public-flow.html
index 7c97649000..a12ffd3b23 100644
--- a/api/read-public-flow.html
+++ b/api/read-public-flow.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/read-variables.html b/api/read-variables.html
index 29b6ba2865..f65c559ba7 100644
--- a/api/read-variables.html
+++ b/api/read-variables.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/refresh-token.html b/api/refresh-token.html
index 7a1d793b37..13f3e37253 100644
--- a/api/refresh-token.html
+++ b/api/refresh-token.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/reset-password.html b/api/reset-password.html
index c7329e1bb2..420ecb8225 100644
--- a/api/reset-password.html
+++ b/api/reset-password.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/retrieve-vertices-order.html b/api/retrieve-vertices-order.html
index 97c391b582..8c766a73b9 100644
--- a/api/retrieve-vertices-order.html
+++ b/api/retrieve-vertices-order.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/save-store-api-key.html b/api/save-store-api-key.html
index 33705a1774..839d01f437 100644
--- a/api/save-store-api-key.html
+++ b/api/save-store-api-key.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/share-component.html b/api/share-component.html
index d0f064e341..4e9deab579 100644
--- a/api/share-component.html
+++ b/api/share-component.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/simplified-run-flow.html b/api/simplified-run-flow.html
index 528cb4bb2f..a5362a65c5 100644
--- a/api/simplified-run-flow.html
+++ b/api/simplified-run-flow.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/stream-logs.html b/api/stream-logs.html
index 6f6b0bd677..1457cd6aaf 100644
--- a/api/stream-logs.html
+++ b/api/stream-logs.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/update-flow.html b/api/update-flow.html
index 5b6a5c5318..3afa0b4334 100644
--- a/api/update-flow.html
+++ b/api/update-flow.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/update-folder-redirect.html b/api/update-folder-redirect.html
index 7ec169e193..63cb19a9a6 100644
--- a/api/update-folder-redirect.html
+++ b/api/update-folder-redirect.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/update-message.html b/api/update-message.html
index 7bb81c5cdb..c57e6d6d80 100644
--- a/api/update-message.html
+++ b/api/update-message.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/update-project-mcp-settings.html b/api/update-project-mcp-settings.html
index d8890151c2..2761f02068 100644
--- a/api/update-project-mcp-settings.html
+++ b/api/update-project-mcp-settings.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/update-project.html b/api/update-project.html
index a17c7cbc96..3c01755e6a 100644
--- a/api/update-project.html
+++ b/api/update-project.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/update-session-id.html b/api/update-session-id.html
index b364ff983f..d0f43dac9d 100644
--- a/api/update-session-id.html
+++ b/api/update-session-id.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/update-shared-component.html b/api/update-shared-component.html
index bd56277aeb..83e0b69512 100644
--- a/api/update-shared-component.html
+++ b/api/update-shared-component.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/update-variable.html b/api/update-variable.html
index 7a59c8cf0d..237da3eec1 100644
--- a/api/update-variable.html
+++ b/api/update-variable.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/upload-file-1.html b/api/upload-file-1.html
index fd28aa2b2a..da6f0fd2d6 100644
--- a/api/upload-file-1.html
+++ b/api/upload-file-1.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/upload-file-2.html b/api/upload-file-2.html
index b4ce12e9e0..ffd4f690da 100644
--- a/api/upload-file-2.html
+++ b/api/upload-file-2.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/upload-file-redirect.html b/api/upload-file-redirect.html
index 4e73f21beb..17e3dfe417 100644
--- a/api/upload-file-redirect.html
+++ b/api/upload-file-redirect.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/upload-file.html b/api/upload-file.html
index b74cdc7c19..fe1659039c 100644
--- a/api/upload-file.html
+++ b/api/upload-file.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/upload-user-file-1.html b/api/upload-user-file-1.html
index d262266682..427b542504 100644
--- a/api/upload-user-file-1.html
+++ b/api/upload-user-file-1.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/upload-user-file.html b/api/upload-user-file.html
index 4aea5d98fb..7de8075ad7 100644
--- a/api/upload-user-file.html
+++ b/api/upload-user-file.html
@@ -21,7 +21,7 @@
-
+
diff --git a/api/webhook-run-flow.html b/api/webhook-run-flow.html
index 213769f109..8efa01d745 100644
--- a/api/webhook-run-flow.html
+++ b/api/webhook-run-flow.html
@@ -21,7 +21,7 @@
-
+
diff --git a/assets/js/051d841d.7d139460.js b/assets/js/051d841d.e36ae030.js
similarity index 67%
rename from assets/js/051d841d.7d139460.js
rename to assets/js/051d841d.e36ae030.js
index 1e2bdeb038..65425b4f14 100644
--- a/assets/js/051d841d.7d139460.js
+++ b/assets/js/051d841d.e36ae030.js
@@ -1 +1 @@
-"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[2182],{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}},85629:(e,t,o)=>{o.d(t,{A:()=>n});const n=o.p+"assets/images/messages-logs-aec5213dc668ee51c2a40eab2ba0718c.png"},96879:(e,t,o)=>{o.r(t),o.d(t,{CH:()=>l,assets:()=>d,chCodeConfig:()=>m,contentTitle:()=>h,default:()=>u,frontMatter:()=>a,metadata:()=>n,toc:()=>g});const n=JSON.parse('{"id":"Templates/memory-chatbot","title":"Memory chatbot","description":"The Chat memory component is also known as the Message history component.","source":"@site/docs/Templates/memory-chatbot.md","sourceDirName":"Templates","slug":"/memory-chatbot","permalink":"/memory-chatbot","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Memory chatbot","slug":"/memory-chatbot"},"sidebar":"docs","previous":{"title":"Document QA","permalink":"/document-qa"},"next":{"title":"Vector store RAG","permalink":"/vector-store-rag"}}');var s=o(74848),r=o(28453),i=o(24754),c=o(17886);const a={title:"Memory chatbot",slug:"/memory-chatbot"},h=void 0,d={},l={annotations:i.hk,Code:i.Cy},m={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},g=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Create the memory chatbot flow",id:"create-the-memory-chatbot-flow",level:2},{value:"Run the memory chatbot flow",id:"run-the-memory-chatbot-flow",level:2},{value:"Use Session ID with the memory chatbot flow",id:"use-session-id-with-the-memory-chatbot-flow",level:2},{value:"See also",id:"see-also",level:2}];function p(e){const t={a:"a",admonition:"admonition",code:"code",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return l||x("CH",!1),l.Code||x("CH.Code",!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.admonition,{type:"info",children:(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.strong,{children:"Chat memory"})," component is also known as the ",(0,s.jsx)(t.strong,{children:"Message history"})," component."]})}),"\n",(0,s.jsxs)(t.p,{children:["This flow extends the ",(0,s.jsx)(t.a,{href:"/basic-prompting",children:"basic prompting flow"})," with a ",(0,s.jsx)(t.strong,{children:"Message history"})," component that stores up to 100 previous chat messages and uses them to provide context for the current conversation."]}),"\n",(0,s.jsx)(t.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"/get-started-installation",children:"A running Langflow instance"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://platform.openai.com/",children:"An OpenAI API key"})}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"create-the-memory-chatbot-flow",children:"Create the memory chatbot flow"}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsxs)(t.li,{children:["From the Langflow dashboard, click ",(0,s.jsx)(t.strong,{children:"New Flow"}),"."]}),"\n",(0,s.jsxs)(t.li,{children:["Select ",(0,s.jsx)(t.strong,{children:"Memory Chatbot"}),"."]}),"\n",(0,s.jsxs)(t.li,{children:["The ",(0,s.jsx)(t.strong,{children:"Memory Chatbot"})," flow is created."]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{src:o(97829).A+"",width:"2662",height:"1372"})}),"\n",(0,s.jsxs)(t.p,{children:["This flow adds a ",(0,s.jsx)(t.strong,{children:"Message history"})," component to the Basic Prompting flow.\nThis component retrieves previous messages and sends them to the ",(0,s.jsx)(t.strong,{children:"Prompt"})," component to fill a part of the ",(0,s.jsx)(t.strong,{children:"Template"})," with context."]}),"\n",(0,s.jsxs)(t.p,{children:["To examine the template, click the ",(0,s.jsx)(t.strong,{children:"Template"})," field in the ",(0,s.jsx)(t.strong,{children:"Prompt"})," component.\nThe ",(0,s.jsx)(t.strong,{children:"Prompt"})," tells the ",(0,s.jsx)(t.strong,{children:"OpenAI model"})," component how to respond to input."]}),"\n",(0,s.jsx)(l.Code,{codeConfig:m,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"You are a helpful assistant that answers questions.",props:{}}]},{tokens:[{content:"",props:{}}]},{tokens:[{content:"Use markdown to format your answer, properly embedding images and urls.",props:{}}]},{tokens:[{content:"",props:{}}]},{tokens:[{content:"History:",props:{}}]},{tokens:[{content:"",props:{}}]},{tokens:[{content:"{memory}",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.code,{children:"{memory}"})," code in the prompt creates a new input port in the component called ",(0,s.jsx)(t.strong,{children:"memory"}),".\nThe ",(0,s.jsx)(t.strong,{children:"Message history"})," component is connected to this port to store chat messages from the ",(0,s.jsx)(t.strong,{children:"Playground"}),", and provide the ",(0,s.jsx)(t.strong,{children:"OpenAI"})," component with a memory of previous chat messages."]}),"\n",(0,s.jsx)(t.h2,{id:"run-the-memory-chatbot-flow",children:"Run the memory chatbot flow"}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsxs)(t.li,{children:["Open the ",(0,s.jsx)(t.strong,{children:"Playground"}),"."]}),"\n",(0,s.jsx)(t.li,{children:"Enter multiple questions. For example, try entering this conversation:"}),"\n"]}),"\n",(0,s.jsx)(l.Code,{codeConfig:m,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"Hi, my name is Luca.",props:{}}]},{tokens:[{content:"Please tell me about PostgreSQL.",props:{}}]},{tokens:[{content:"What is my name?",props:{}}]},{tokens:[{content:"What is the second subject I asked you about?",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,s.jsx)(t.p,{children:"The chatbot remembers your name and previous questions."}),"\n",(0,s.jsxs)(t.ol,{start:"3",children:["\n",(0,s.jsxs)(t.li,{children:["To view the ",(0,s.jsx)(t.strong,{children:"Message Logs"})," pane, click ",(0,s.jsx)(c.A,{name:"Ellipsis","aria-label":"Horizontal ellipsis"}),", and then click ",(0,s.jsx)(t.strong,{children:"Message Logs"}),".\nThe ",(0,s.jsx)(t.strong,{children:"Message Logs"})," pane displays all previous messages, with each conversation sorted by ",(0,s.jsx)(t.code,{children:"session_id"}),"."]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{src:o(85629).A+"",width:"3250",height:"1778"})}),"\n",(0,s.jsx)(t.h2,{id:"use-session-id-with-the-memory-chatbot-flow",children:"Use Session ID with the memory chatbot flow"}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.code,{children:"session_id"})," is a unique identifier in Langflow that stores conversation sessions between the AI and a user. A ",(0,s.jsx)(t.code,{children:"session_id"})," is created when a conversation is initiated, and then associated with all subsequent messages during that session."]}),"\n",(0,s.jsxs)(t.p,{children:["In the ",(0,s.jsx)(t.strong,{children:"Memory Chatbot"})," flow you created, the ",(0,s.jsx)(t.strong,{children:"Message history"})," component references past interactions by ",(0,s.jsx)(t.strong,{children:"Session ID"}),". You can demonstrate this by modifying the ",(0,s.jsx)(t.strong,{children:"Session ID"})," value to switch between conversation histories."]}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsxs)(t.li,{children:["In the ",(0,s.jsx)(t.strong,{children:"Session ID"})," field of the ",(0,s.jsx)(t.strong,{children:"Message history"})," and ",(0,s.jsx)(t.strong,{children:"Chat Input"})," components, add a ",(0,s.jsx)(t.strong,{children:"Session ID"})," value like ",(0,s.jsx)(t.code,{children:"MySessionID"}),"."]}),"\n",(0,s.jsxs)(t.li,{children:["Now, once you send a new message the ",(0,s.jsx)(t.strong,{children:"Playground"}),", you should have a new memory created in the ",(0,s.jsx)(t.strong,{children:"Message Logs"})," pane."]}),"\n",(0,s.jsx)(t.li,{children:"Notice how your conversation is being stored in different memory sessions."}),"\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-memories",children:"Memory components"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"/session-id",children:"Session ID"})}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(p,{...e})}):p(e)}function x(e,t){throw new Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}},97829:(e,t,o)=>{o.d(t,{A:()=>n});const n=o.p+"assets/images/starter-flow-memory-chatbot-af37fecb79d125009712e4c1128bc461.png"}}]);
\ No newline at end of file
+"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[2182],{17886:(e,t,n)=>{n.d(t,{A:()=>r});n(96540);var o=n(64058),s=n(74848);function r({name:e,...t}){const n=o[e];return n?(0,s.jsx)(n,{...t}):null}},85629:(e,t,n)=>{n.d(t,{A:()=>o});const o=n.p+"assets/images/messages-logs-aec5213dc668ee51c2a40eab2ba0718c.png"},96879:(e,t,n)=>{n.r(t),n.d(t,{CH:()=>l,assets:()=>d,chCodeConfig:()=>m,contentTitle:()=>h,default:()=>u,frontMatter:()=>a,metadata:()=>o,toc:()=>g});const o=JSON.parse('{"id":"Templates/memory-chatbot","title":"Memory chatbot","description":"The Chat memory component is also known as the Message history component.","source":"@site/docs/Templates/memory-chatbot.md","sourceDirName":"Templates","slug":"/memory-chatbot","permalink":"/memory-chatbot","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Memory chatbot","slug":"/memory-chatbot"},"sidebar":"docs","previous":{"title":"Document QA","permalink":"/document-qa"},"next":{"title":"Vector store RAG","permalink":"/vector-store-rag"}}');var s=n(74848),r=n(28453),i=n(24754),c=n(17886);const a={title:"Memory chatbot",slug:"/memory-chatbot"},h=void 0,d={},l={annotations:i.hk,Code:i.Cy},m={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},g=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Create the memory chatbot flow",id:"create-the-memory-chatbot-flow",level:2},{value:"Run the memory chatbot flow",id:"run-the-memory-chatbot-flow",level:2},{value:"Use Session ID with the memory chatbot flow",id:"use-session-id-with-the-memory-chatbot-flow",level:2},{value:"See also",id:"see-also",level:2}];function p(e){const t={a:"a",admonition:"admonition",code:"code",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return l||x("CH",!1),l.Code||x("CH.Code",!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.admonition,{type:"info",children:(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.strong,{children:"Chat memory"})," component is also known as the ",(0,s.jsx)(t.strong,{children:"Message history"})," component."]})}),"\n",(0,s.jsxs)(t.p,{children:["This flow extends the ",(0,s.jsx)(t.a,{href:"/basic-prompting",children:"basic prompting flow"})," with a ",(0,s.jsx)(t.strong,{children:"Message history"})," component that stores up to 100 previous chat messages and uses them to provide context for the current conversation."]}),"\n",(0,s.jsx)(t.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"/get-started-installation",children:"A running Langflow instance"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://platform.openai.com/",children:"An OpenAI API key"})}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"create-the-memory-chatbot-flow",children:"Create the memory chatbot flow"}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsxs)(t.li,{children:["From the Langflow dashboard, click ",(0,s.jsx)(t.strong,{children:"New Flow"}),"."]}),"\n",(0,s.jsxs)(t.li,{children:["Select ",(0,s.jsx)(t.strong,{children:"Memory Chatbot"}),"."]}),"\n",(0,s.jsxs)(t.li,{children:["The ",(0,s.jsx)(t.strong,{children:"Memory Chatbot"})," flow is created."]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{src:n(97829).A+"",width:"2662",height:"1372"})}),"\n",(0,s.jsxs)(t.p,{children:["This flow adds a ",(0,s.jsx)(t.strong,{children:"Message history"})," component to the Basic Prompting flow.\nThis component retrieves previous messages and sends them to the ",(0,s.jsx)(t.strong,{children:"Prompt"})," component to fill a part of the ",(0,s.jsx)(t.strong,{children:"Template"})," with context."]}),"\n",(0,s.jsxs)(t.p,{children:["To examine the template, click the ",(0,s.jsx)(t.strong,{children:"Template"})," field in the ",(0,s.jsx)(t.strong,{children:"Prompt"})," component.\nThe ",(0,s.jsx)(t.strong,{children:"Prompt"})," tells the ",(0,s.jsx)(t.strong,{children:"OpenAI model"})," component how to respond to input."]}),"\n",(0,s.jsx)(l.Code,{codeConfig:m,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"You are a helpful assistant that answers questions.",props:{}}]},{tokens:[{content:"",props:{}}]},{tokens:[{content:"Use markdown to format your answer, properly embedding images and urls.",props:{}}]},{tokens:[{content:"",props:{}}]},{tokens:[{content:"History:",props:{}}]},{tokens:[{content:"",props:{}}]},{tokens:[{content:"{memory}",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.code,{children:"{memory}"})," code in the prompt creates a new input port in the component called ",(0,s.jsx)(t.strong,{children:"memory"}),".\nThe ",(0,s.jsx)(t.strong,{children:"Message history"})," component is connected to this port to store chat messages from the ",(0,s.jsx)(t.strong,{children:"Playground"}),", and provide the ",(0,s.jsx)(t.strong,{children:"OpenAI"})," component with a memory of previous chat messages."]}),"\n",(0,s.jsx)(t.h2,{id:"run-the-memory-chatbot-flow",children:"Run the memory chatbot flow"}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsxs)(t.li,{children:["Open the ",(0,s.jsx)(t.strong,{children:"Playground"}),"."]}),"\n",(0,s.jsx)(t.li,{children:"Enter multiple questions. For example, try entering this conversation:"}),"\n"]}),"\n",(0,s.jsx)(l.Code,{codeConfig:m,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"Hi, my name is Luca.",props:{}}]},{tokens:[{content:"Please tell me about PostgreSQL.",props:{}}]},{tokens:[{content:"What is my name?",props:{}}]},{tokens:[{content:"What is the second subject I asked you about?",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,s.jsx)(t.p,{children:"The chatbot remembers your name and previous questions."}),"\n",(0,s.jsxs)(t.ol,{start:"3",children:["\n",(0,s.jsxs)(t.li,{children:["To view the ",(0,s.jsx)(t.strong,{children:"Message Logs"})," pane, click ",(0,s.jsx)(c.A,{name:"Ellipsis","aria-hidden":"true"})," ",(0,s.jsx)(t.strong,{children:"Options"}),", and then click ",(0,s.jsx)(t.strong,{children:"Message Logs"}),".\nThe ",(0,s.jsx)(t.strong,{children:"Message Logs"})," pane displays all previous messages, with each conversation sorted by ",(0,s.jsx)(t.code,{children:"session_id"}),"."]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{src:n(85629).A+"",width:"3250",height:"1778"})}),"\n",(0,s.jsx)(t.h2,{id:"use-session-id-with-the-memory-chatbot-flow",children:"Use Session ID with the memory chatbot flow"}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.code,{children:"session_id"})," is a unique identifier in Langflow that stores conversation sessions between the AI and a user. A ",(0,s.jsx)(t.code,{children:"session_id"})," is created when a conversation is initiated, and then associated with all subsequent messages during that session."]}),"\n",(0,s.jsxs)(t.p,{children:["In the ",(0,s.jsx)(t.strong,{children:"Memory Chatbot"})," flow you created, the ",(0,s.jsx)(t.strong,{children:"Message history"})," component references past interactions by ",(0,s.jsx)(t.strong,{children:"Session ID"}),". You can demonstrate this by modifying the ",(0,s.jsx)(t.strong,{children:"Session ID"})," value to switch between conversation histories."]}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsxs)(t.li,{children:["In the ",(0,s.jsx)(t.strong,{children:"Session ID"})," field of the ",(0,s.jsx)(t.strong,{children:"Message history"})," and ",(0,s.jsx)(t.strong,{children:"Chat Input"})," components, add a ",(0,s.jsx)(t.strong,{children:"Session ID"})," value like ",(0,s.jsx)(t.code,{children:"MySessionID"}),"."]}),"\n",(0,s.jsxs)(t.li,{children:["Now, once you send a new message the ",(0,s.jsx)(t.strong,{children:"Playground"}),", you should have a new memory created in the ",(0,s.jsx)(t.strong,{children:"Message Logs"})," pane."]}),"\n",(0,s.jsx)(t.li,{children:"Notice how your conversation is being stored in different memory sessions."}),"\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-memories",children:"Memory components"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"/session-id",children:"Session ID"})}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(p,{...e})}):p(e)}function x(e,t){throw new Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}},97829:(e,t,n)=>{n.d(t,{A:()=>o});const o=n.p+"assets/images/starter-flow-memory-chatbot-af37fecb79d125009712e4c1128bc461.png"}}]);
\ No newline at end of file
diff --git a/assets/js/0be1d5fe.6cdeea52.js b/assets/js/0be1d5fe.6cdeea52.js
new file mode 100644
index 0000000000..3e24ae83a0
--- /dev/null
+++ b/assets/js/0be1d5fe.6cdeea52.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[145],{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}},20839:(e,n,t)=>{t.r(n),t.d(n,{CH:()=>a,assets:()=>o,chCodeConfig:()=>x,contentTitle:()=>c,default:()=>p,frontMatter:()=>h,metadata:()=>s,toc:()=>j});const s=JSON.parse('{"id":"Components/components-models","title":"Models","description":"Model components generate text using large language models.","source":"@site/docs/Components/components-models.md","sourceDirName":"Components","slug":"/components-models","permalink":"/components-models","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Models","slug":"/components-models"},"sidebar":"docs","previous":{"title":"Memories","permalink":"/components-memories"},"next":{"title":"Processing","permalink":"/components-processing"}}');var r=t(74848),d=t(28453),i=t(24754),l=t(17886);const h={title:"Models",slug:"/components-models"},c="Model components in Langflow",o={},a={annotations:i.hk,Code:i.Cy},x={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},j=[{value:"Use a model component in a flow",id:"use-a-model-component-in-a-flow",level:2},{value:"AIML",id:"aiml",level:2},{value:"Amazon Bedrock",id:"amazon-bedrock",level:2},{value:"Anthropic",id:"anthropic",level:2},{value:"Azure OpenAI",id:"azure-openai",level:2},{value:"Cohere",id:"cohere",level:2},{value:"DeepSeek",id:"deepseek",level:2},{value:"Google Generative AI",id:"google-generative-ai",level:2},{value:"Groq",id:"groq",level:2},{value:"Hugging Face API",id:"hugging-face-api",level:2},{value:"IBM watsonx.ai",id:"ibm-watsonxai",level:2},{value:"Language model",id:"language-model",level:2},{value:"LMStudio",id:"lmstudio",level:2},{value:"Maritalk",id:"maritalk",level:2},{value:"Mistral",id:"mistral",level:2},{value:"Novita AI",id:"novita-ai",level:2},{value:"NVIDIA",id:"nvidia",level:2},{value:"Ollama",id:"ollama",level:2},{value:"OpenAI",id:"openai",level:2},{value:"OpenRouter",id:"openrouter",level:2},{value:"Perplexity",id:"perplexity",level:2},{value:"Qianfan",id:"qianfan",level:2},{value:"SambaNova",id:"sambanova",level:2},{value:"VertexAI",id:"vertexai",level:2},{value:"xAI",id:"xai",level:2}];function m(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",header:"header",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,d.R)(),...e.components},{Details:s}=n;return a||u("CH",!1),a.Code||u("CH.Code",!0),s||u("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)(n.header,{children:(0,r.jsx)(n.h1,{id:"model-components-in-langflow",children:"Model components in Langflow"})}),"\n",(0,r.jsx)(n.p,{children:"Model components generate text using large language models."}),"\n",(0,r.jsx)(n.p,{children:"Refer to your specific component's documentation for more information on parameters."}),"\n",(0,r.jsx)(n.h2,{id:"use-a-model-component-in-a-flow",children:"Use a model component in a flow"}),"\n",(0,r.jsx)(n.p,{children:"Model components receive inputs and prompts for generating text, and the generated text is sent to an output component."}),"\n",(0,r.jsxs)(n.p,{children:["The model output can also be sent to the ",(0,r.jsx)(n.strong,{children:"Language Model"})," port and on to a ",(0,r.jsx)(n.strong,{children:"Parse Data"})," component, where the output can be parsed into structured ",(0,r.jsx)(n.a,{href:"/concepts-objects",children:"Data"})," objects."]}),"\n",(0,r.jsxs)(n.p,{children:["This example has the OpenAI model in a chatbot flow. For more information, see the ",(0,r.jsx)(n.a,{href:"/basic-prompting",children:"Basic prompting flow"}),"."]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.img,{src:t(90567).A+"",width:"2500",height:"1528"})}),"\n",(0,r.jsx)(n.h2,{id:"aiml",children:"AIML"}),"\n",(0,r.jsx)(n.p,{children:"This component creates a ChatOpenAI model instance using the AIML API."}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see ",(0,r.jsx)(n.a,{href:"https://docs.aimlapi.com/",children:"AIML documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:"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:"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:["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:["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:"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:["Controls randomness in the output. Default: ",(0,r.jsx)(n.code,{children:"0.1"}),"."]})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of ChatOpenAI configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"amazon-bedrock",children:"Amazon Bedrock"}),"\n",(0,r.jsx)(n.p,{children:"This component generates text using Amazon Bedrock LLMs."}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see ",(0,r.jsx)(n.a,{href:"https://docs.aws.amazon.com/bedrock",children:"Amazon Bedrock documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:"The ID of the Amazon Bedrock model to use. Options include various models."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"aws_access_key"}),(0,r.jsx)(n.td,{children:"SecretString"}),(0,r.jsx)(n.td,{children:"AWS Access Key for authentication."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"aws_secret_key"}),(0,r.jsx)(n.td,{children:"SecretString"}),(0,r.jsx)(n.td,{children:"AWS Secret Key for authentication."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"aws_session_token"}),(0,r.jsx)(n.td,{children:"SecretString"}),(0,r.jsx)(n.td,{children:"The session key for your AWS account."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"credentials_profile_name"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"Name of the AWS credentials profile to use."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"region_name"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsxs)(n.td,{children:["AWS region name. Default: ",(0,r.jsx)(n.code,{children:"us-east-1"}),"."]})]}),(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:"Additional keyword arguments for the model."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"endpoint_url"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"Custom endpoint URL for the Bedrock service."})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of ChatBedrock configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"anthropic",children:"Anthropic"}),"\n",(0,r.jsx)(n.p,{children:"This component allows the generation of text using Anthropic Chat and Language models."}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see the ",(0,r.jsx)(n.a,{href:"https://docs.anthropic.com/en/docs/welcome",children:"Anthropic documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:["The maximum number of tokens to generate. Set to 0 for unlimited tokens. Default: ",(0,r.jsx)(n.code,{children:"4096"}),"."]})]}),(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:"The name of the Anthropic model to use. Options include various Claude 3 models."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"anthropic_api_key"}),(0,r.jsx)(n.td,{children:"SecretString"}),(0,r.jsx)(n.td,{children:"Your Anthropic 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:["Controls randomness in the output. Default: ",(0,r.jsx)(n.code,{children:"0.1"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"anthropic_api_url"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsxs)(n.td,{children:["Endpoint of the Anthropic API. Defaults to ",(0,r.jsx)(n.code,{children:"https://api.anthropic.com"})," if not specified (advanced)."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"prefill"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"Prefill text to guide the model's response (advanced)."})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of ChatAnthropic configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"azure-openai",children:"Azure OpenAI"}),"\n",(0,r.jsx)(n.p,{children:"This component generates text using Azure OpenAI LLM."}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see the ",(0,r.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/azure/ai-services/openai/",children:"Azure OpenAI documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:"Specifies the name of the Azure OpenAI model to be used for text generation."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Azure Endpoint"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"Your Azure endpoint, including the resource."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Deployment Name"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"Specifies the name of the deployment."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"API Version"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"Specifies the version of the Azure OpenAI API to be used."})]}),(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:"Your Azure OpenAI API key."})]}),(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:["Specifies the sampling temperature. Defaults to ",(0,r.jsx)(n.code,{children:"0.7"}),"."]})]}),(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:["Specifies the maximum number of tokens to generate. Defaults to ",(0,r.jsx)(n.code,{children:"1000"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Input Value"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"Specifies the input text for text generation."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Stream"}),(0,r.jsx)(n.td,{children:"Boolean"}),(0,r.jsxs)(n.td,{children:["Specifies whether to stream the response from the model. Defaults to ",(0,r.jsx)(n.code,{children:"False"}),"."]})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of AzureOpenAI configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"cohere",children:"Cohere"}),"\n",(0,r.jsx)(n.p,{children:"This component generates text using Cohere's language models."}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see the ",(0,r.jsx)(n.a,{href:"https://cohere.ai/",children:"Cohere documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:"Cohere API Key"}),(0,r.jsx)(n.td,{children:"SecretString"}),(0,r.jsx)(n.td,{children:"Your Cohere API key."})]}),(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:["Specifies the maximum number of tokens to generate. Defaults to ",(0,r.jsx)(n.code,{children:"256"}),"."]})]}),(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:["Specifies the sampling temperature. Defaults to ",(0,r.jsx)(n.code,{children:"0.75"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Input Value"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"Specifies the input text for text generation."})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of the Cohere model configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"deepseek",children:"DeepSeek"}),"\n",(0,r.jsx)(n.p,{children:"This component generates text using DeepSeek's language models."}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see the ",(0,r.jsx)(n.a,{href:"https://api-docs.deepseek.com/",children:"DeepSeek documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:["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:"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:["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:["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:["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:"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:["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:"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."})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of ChatOpenAI configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"google-generative-ai",children:"Google Generative AI"}),"\n",(0,r.jsx)(n.p,{children:"This component generates text using Google's Generative AI models."}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see the ",(0,r.jsx)(n.a,{href:"https://cloud.google.com/vertex-ai/docs/",children:"Google Generative AI documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:"Google API Key"}),(0,r.jsx)(n.td,{children:"SecretString"}),(0,r.jsx)(n.td,{children:"Your Google API key to use for the Google Generative AI."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Model"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsxs)(n.td,{children:["The name of the model to use, such as ",(0,r.jsx)(n.code,{children:'"gemini-pro"'}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Max Output Tokens"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsx)(n.td,{children:"The maximum number of tokens to generate."})]}),(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:"Run inference with this temperature."})]}),(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:"Consider the set of top K most probable tokens."})]}),(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:"The maximum cumulative probability of tokens to consider when sampling."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"N"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsx)(n.td,{children:"Number of chat completions to generate for each prompt."})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of ChatGoogleGenerativeAI configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"groq",children:"Groq"}),"\n",(0,r.jsx)(n.p,{children:"This component generates text using Groq's language models."}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["To use this component in a flow, connect it as a ",(0,r.jsx)(n.strong,{children:"Model"})," in a flow like the ",(0,r.jsx)(n.a,{href:"/basic-prompting",children:"Basic prompting flow"}),", or select it as the ",(0,r.jsx)(n.strong,{children:"Model Provider"})," if you're using an ",(0,r.jsx)(n.strong,{children:"Agent"})," component."]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.img,{alt:"Groq component in a basic prompting flow",src:t(23592).A+"",width:"1982",height:"1194"})}),"\n",(0,r.jsxs)(n.ol,{start:"2",children:["\n",(0,r.jsxs)(n.li,{children:["In the ",(0,r.jsx)(n.strong,{children:"Groq API Key"})," field, paste your Groq API key.\nThe Groq model component automatically retrieves a list of the latest models.\nTo refresh your list of models, click ",(0,r.jsx)(l.A,{name:"RefreshCw","aria-hidden":"true"})," ",(0,r.jsx)(n.strong,{children:"Refresh"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["In the ",(0,r.jsx)(n.strong,{children:"Model"})," field, select the model you want to use for your LLM.\nThis example uses ",(0,r.jsx)(n.a,{href:"https://console.groq.com/docs/model/llama-3.1-8b-instant",children:"llama-3.1-8b-instant"}),", which Groq recommends for real-time conversational interfaces."]}),"\n",(0,r.jsxs)(n.li,{children:["In the ",(0,r.jsx)(n.strong,{children:"Prompt"})," component, enter:"]}),"\n"]}),"\n",(0,r.jsx)(a.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"You are a helpful assistant who supports their claims with sources.",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsxs)(n.ol,{start:"5",children:["\n",(0,r.jsxs)(n.li,{children:["Click ",(0,r.jsx)(n.strong,{children:"Playground"})," and ask your Groq LLM a question.\nThe responses include a list of sources."]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see the ",(0,r.jsx)(n.a,{href:"https://groq.com/",children:"Groq documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:"groq_api_key"}),(0,r.jsx)(n.td,{children:"SecretString"}),(0,r.jsx)(n.td,{children:"API key for the Groq API."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"groq_api_base"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsxs)(n.td,{children:["Base URL path for API requests. Default: ",(0,r.jsx)(n.code,{children:"https://api.groq.com"}),"."]})]}),(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:"The maximum number of tokens to generate."})]}),(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:["Controls randomness in the output. Range: ",(0,r.jsx)(n.code,{children:"[0.0, 1.0]"}),". Default: ",(0,r.jsx)(n.code,{children:"0.1"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"n"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsx)(n.td,{children:"Number of chat completions to generate for each prompt."})]}),(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:"The name of the Groq model to use. Options are dynamically fetched from the Groq API."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"tool_mode_enabled"}),(0,r.jsx)(n.td,{children:"Bool"}),(0,r.jsx)(n.td,{children:"If enabled, the component only displays models that work with tools."})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of ChatGroq configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"hugging-face-api",children:"Hugging Face API"}),"\n",(0,r.jsxs)(n.p,{children:["This component sends requests to the Hugging Face API to generate text using the model specified in the ",(0,r.jsx)(n.strong,{children:"Model ID"})," field."]}),"\n",(0,r.jsxs)(n.p,{children:["The Hugging Face API is a hosted inference API for models hosted on Hugging Face, and requires a ",(0,r.jsx)(n.a,{href:"https://huggingface.co/docs/hub/security-tokens",children:"Hugging Face API token"})," to authenticate."]}),"\n",(0,r.jsxs)(n.p,{children:["In this example based on the ",(0,r.jsx)(n.a,{href:"/basic-prompting",children:"Basic prompting flow"}),", the ",(0,r.jsx)(n.strong,{children:"Hugging Face API"})," model component replaces the ",(0,r.jsx)(n.strong,{children:"Open AI"})," model. By selecting different hosted models, you can see how different models return different results."]}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Create a ",(0,r.jsx)(n.a,{href:"/basic-prompting",children:"Basic prompting flow"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Replace the ",(0,r.jsx)(n.strong,{children:"OpenAI"})," model component with a ",(0,r.jsx)(n.strong,{children:"Hugging Face API"})," model component."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["In the ",(0,r.jsx)(n.strong,{children:"Hugging Face API"})," component, add your Hugging Face API token to the ",(0,r.jsx)(n.strong,{children:"API Token"})," field."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Open the ",(0,r.jsx)(n.strong,{children:"Playground"})," and ask a question to the model, and see how it responds."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Try different models, and see how they perform differently."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see the ",(0,r.jsx)(n.a,{href:"https://huggingface.co/",children:"Hugging Face documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:'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.jsx)(n.td,{children:"Your 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:"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:"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:"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:"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:"Additional keyword arguments to pass to the model."})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of HuggingFaceHub configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"ibm-watsonxai",children:"IBM watsonx.ai"}),"\n",(0,r.jsxs)(n.p,{children:["This component generates text using ",(0,r.jsx)(n.a,{href:"https://www.ibm.com/watsonx",children:"IBM watsonx.ai"})," foundation models."]}),"\n",(0,r.jsxs)(n.p,{children:["To use ",(0,r.jsx)(n.strong,{children:"IBM watsonx.ai"})," model components, replace a model component with the IBM watsonx.ai component in a flow."]}),"\n",(0,r.jsx)(n.p,{children:"An example flow looks like the following:"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.img,{alt:"IBM watsonx model component in a basic prompting flow",src:t(68799).A+"",width:"2364",height:"1562"})}),"\n",(0,r.jsxs)(n.p,{children:["The values for ",(0,r.jsx)(n.strong,{children:"API endpoint"}),", ",(0,r.jsx)(n.strong,{children:"Project ID"}),", ",(0,r.jsx)(n.strong,{children:"API key"}),", and ",(0,r.jsx)(n.strong,{children:"Model Name"})," are found in your IBM watsonx.ai deployment.\nFor more information, see the ",(0,r.jsx)(n.a,{href:"https://python.langchain.com/docs/integrations/chat/ibm_watsonx/",children:"Langchain documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:"url"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"The base URL of the watsonx API."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"project_id"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"Your watsonx Project ID."})]}),(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:"Your IBM watsonx API Key."})]}),(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:"The name of the watsonx model to use. Options are dynamically fetched from the API."})]}),(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:["The maximum number of tokens to generate. Default: ",(0,r.jsx)(n.code,{children:"1000"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"stop_sequence"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"The sequence where generation should stop."})]}),(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:["Controls randomness in the output. Default: ",(0,r.jsx)(n.code,{children:"0.1"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"top_p"}),(0,r.jsx)(n.td,{children:"Float"}),(0,r.jsxs)(n.td,{children:["Controls nucleus sampling, which limits the model to tokens whose probability is below the ",(0,r.jsx)(n.code,{children:"top_p"})," value. Range: Default: ",(0,r.jsx)(n.code,{children:"0.9"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"frequency_penalty"}),(0,r.jsx)(n.td,{children:"Float"}),(0,r.jsxs)(n.td,{children:["Controls frequency penalty. A positive value decreases the probability of repeating tokens, and a negative value increases the probability. Range: Default: ",(0,r.jsx)(n.code,{children:"0.5"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"presence_penalty"}),(0,r.jsx)(n.td,{children:"Float"}),(0,r.jsxs)(n.td,{children:["Controls presence penalty. A positive value increases the likelihood of new topics being introduced. Default: ",(0,r.jsx)(n.code,{children:"0.3"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"seed"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsxs)(n.td,{children:["A random seed for the model. Default: ",(0,r.jsx)(n.code,{children:"8"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"logprobs"}),(0,r.jsx)(n.td,{children:"Boolean"}),(0,r.jsxs)(n.td,{children:["Whether to return log probabilities of output tokens or not. Default: ",(0,r.jsx)(n.code,{children:"True"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"top_logprobs"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsxs)(n.td,{children:["The number of most likely tokens to return at each position. Default: ",(0,r.jsx)(n.code,{children:"3"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"logit_bias"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"A JSON string of token IDs to bias or suppress."})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsxs)(n.td,{children:["An instance of ",(0,r.jsx)(n.a,{href:"https://python.langchain.com/docs/integrations/chat/ibm_watsonx/",children:"ChatWatsonx"})," configured with the specified parameters."]})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"language-model",children:"Language model"}),"\n",(0,r.jsx)(n.p,{children:"This component generates text using either OpenAI or Anthropic language models."}),"\n",(0,r.jsx)(n.p,{children:"Use this component as a drop-in replacement for LLM models to switch between different model providers and models."}),"\n",(0,r.jsx)(n.p,{children:"Instead of swapping out model components when you want to try a different provider, like switching between OpenAI and Anthropic components, change the provider dropdown in this single component. This makes it easier to experiment with and compare different models while keeping the rest of your flow intact."}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see the ",(0,r.jsx)(n.a,{href:"https://platform.openai.com/docs",children:"OpenAI documentation"})," and ",(0,r.jsx)(n.a,{href:"https://docs.anthropic.com/",children:"Anthropic documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:"provider"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:'The model provider to use. Options: "OpenAI", "Anthropic". Default: "OpenAI".'})]}),(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:"The name of the model to use. Options depend on the selected provider."})]}),(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:"The API Key for authentication with the selected provider."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"input_value"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"The input text to send to the model."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"system_message"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"A system message that helps set the behavior of the assistant (advanced)."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"stream"}),(0,r.jsx)(n.td,{children:"Boolean"}),(0,r.jsxs)(n.td,{children:["Whether to stream the response. Default: ",(0,r.jsx)(n.code,{children:"False"})," (advanced)."]})]}),(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:["Controls randomness in responses. Range: ",(0,r.jsx)(n.code,{children:"[0.0, 1.0]"}),". Default: ",(0,r.jsx)(n.code,{children:"0.1"})," (advanced)."]})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of ChatOpenAI or ChatAnthropic configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"lmstudio",children:"LMStudio"}),"\n",(0,r.jsx)(n.p,{children:"This component generates text using LM Studio's local language models."}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see ",(0,r.jsx)(n.a,{href:"https://lmstudio.ai/",children:"LM Studio documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:"base_url"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsxs)(n.td,{children:["The URL where LM Studio is running. Default: ",(0,r.jsx)(n.code,{children:'"http://localhost:1234"'}),"."]})]}),(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:["Maximum number of tokens to generate in the response. Default: ",(0,r.jsx)(n.code,{children:"512"}),"."]})]}),(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:["Controls randomness in the output. Range: ",(0,r.jsx)(n.code,{children:"[0.0, 2.0]"}),". Default: ",(0,r.jsx)(n.code,{children:"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.jsxs)(n.td,{children:["Controls diversity via nucleus sampling. Range: ",(0,r.jsx)(n.code,{children:"[0.0, 1.0]"}),". Default: ",(0,r.jsx)(n.code,{children:"1.0"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"stop"}),(0,r.jsx)(n.td,{children:"List[String]"}),(0,r.jsx)(n.td,{children:"List of strings that stop generation when encountered."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"stream"}),(0,r.jsx)(n.td,{children:"Boolean"}),(0,r.jsxs)(n.td,{children:["Whether to stream the response. Default: ",(0,r.jsx)(n.code,{children:"False"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"presence_penalty"}),(0,r.jsx)(n.td,{children:"Float"}),(0,r.jsxs)(n.td,{children:["Penalizes repeated tokens. Range: ",(0,r.jsx)(n.code,{children:"[-2.0, 2.0]"}),". Default: ",(0,r.jsx)(n.code,{children:"0.0"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"frequency_penalty"}),(0,r.jsx)(n.td,{children:"Float"}),(0,r.jsxs)(n.td,{children:["Penalizes frequent tokens. Range: ",(0,r.jsx)(n.code,{children:"[-2.0, 2.0]"}),". Default: ",(0,r.jsx)(n.code,{children:"0.0"}),"."]})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of LMStudio configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"maritalk",children:"Maritalk"}),"\n",(0,r.jsx)(n.p,{children:"This component generates text using Maritalk LLMs."}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see ",(0,r.jsx)(n.a,{href:"https://www.maritalk.com/",children:"Maritalk documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:["The maximum number of tokens to generate. Set to ",(0,r.jsx)(n.code,{children:"0"})," for unlimited tokens. Default: ",(0,r.jsx)(n.code,{children:"512"}),"."]})]}),(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:["The name of the Maritalk model to use. Options: ",(0,r.jsx)(n.code,{children:"sabia-2-small"}),", ",(0,r.jsx)(n.code,{children:"sabia-2-medium"}),". Default: ",(0,r.jsx)(n.code,{children:"sabia-2-small"}),"."]})]}),(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:"The Maritalk API Key to use 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:["Controls randomness in the output. Range: ",(0,r.jsx)(n.code,{children:"[0.0, 1.0]"}),". Default: ",(0,r.jsx)(n.code,{children:"0.5"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"endpoint_url"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsxs)(n.td,{children:["The Maritalk API endpoint. Default: ",(0,r.jsx)(n.code,{children:"https://api.maritalk.com"}),"."]})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of ChatMaritalk configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"mistral",children:"Mistral"}),"\n",(0,r.jsx)(n.p,{children:"This component generates text using MistralAI LLMs."}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see ",(0,r.jsx)(n.a,{href:"https://docs.mistral.ai/",children:"Mistral AI documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:"The maximum number of tokens to generate. Set to 0 for unlimited tokens (advanced)."})]}),(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:["The name of the Mistral AI model to use. Options include ",(0,r.jsx)(n.code,{children:"open-mixtral-8x7b"}),", ",(0,r.jsx)(n.code,{children:"open-mixtral-8x22b"}),", ",(0,r.jsx)(n.code,{children:"mistral-small-latest"}),", ",(0,r.jsx)(n.code,{children:"mistral-medium-latest"}),", ",(0,r.jsx)(n.code,{children:"mistral-large-latest"}),", and ",(0,r.jsx)(n.code,{children:"codestral-latest"}),". Default: ",(0,r.jsx)(n.code,{children:"codestral-latest"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"mistral_api_base"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsxs)(n.td,{children:["The base URL of the Mistral API. Defaults to ",(0,r.jsx)(n.code,{children:"https://api.mistral.ai/v1"})," (advanced)."]})]}),(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:"The Mistral API Key to use 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:"Controls randomness in the output. Default: 0.5."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"max_retries"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsx)(n.td,{children:"Maximum number of retries for API calls. Default: 5 (advanced)."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"timeout"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsx)(n.td,{children:"Timeout for API calls in seconds. Default: 60 (advanced)."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"max_concurrent_requests"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsx)(n.td,{children:"Maximum number of concurrent API requests. Default: 3 (advanced)."})]}),(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:"Nucleus sampling parameter. Default: 1 (advanced)."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"random_seed"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsx)(n.td,{children:"Seed for random number generation. Default: 1 (advanced)."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"safe_mode"}),(0,r.jsx)(n.td,{children:"Boolean"}),(0,r.jsx)(n.td,{children:"Enables safe mode for content generation (advanced)."})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of ChatMistralAI configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"novita-ai",children:"Novita AI"}),"\n",(0,r.jsx)(n.p,{children:"This component generates text using Novita AI's language models."}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see ",(0,r.jsx)(n.a,{href:"https://novita.ai/docs/model-api/reference/llm/llm.html?utm_source=github_langflow&utm_medium=github_readme&utm_campaign=link",children:"Novita AI documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:"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:"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:"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:"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:"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:"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:"Controls the presence penalty. Range: [0.0, 2.0]. Default: 0.0."})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of Novita AI model configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"nvidia",children:"NVIDIA"}),"\n",(0,r.jsx)(n.p,{children:"This component generates text using NVIDIA LLMs."}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see ",(0,r.jsx)(n.a,{href:"https://developer.nvidia.com/generative-ai",children:"NVIDIA AI documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:["The maximum number of tokens to generate. Set to ",(0,r.jsx)(n.code,{children:"0"})," for unlimited tokens (advanced)."]})]}),(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:["The name of the NVIDIA model to use. Default: ",(0,r.jsx)(n.code,{children:"mistralai/mixtral-8x7b-instruct-v0.1"}),"."]})]}),(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:["The base URL of the NVIDIA API. Default: ",(0,r.jsx)(n.code,{children:"https://integrate.api.nvidia.com/v1"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"nvidia_api_key"}),(0,r.jsx)(n.td,{children:"SecretString"}),(0,r.jsx)(n.td,{children:"The NVIDIA 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:["Controls randomness in the output. 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.jsxs)(n.td,{children:["The seed controls the reproducibility of the job (advanced). Default: ",(0,r.jsx)(n.code,{children:"1"}),"."]})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of ChatNVIDIA configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"ollama",children:"Ollama"}),"\n",(0,r.jsx)(n.p,{children:"This component generates text using Ollama's language models."}),"\n",(0,r.jsx)(n.p,{children:"To use this component in a flow, connect Langflow to your locally running Ollama server and select a model."}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["In the Ollama component, in the ",(0,r.jsx)(n.strong,{children:"Base URL"})," field, enter the address for your locally running Ollama server.\nThis value is set as the ",(0,r.jsx)(n.code,{children:"OLLAMA_HOST"})," environment variable in Ollama.\nThe default base URL is ",(0,r.jsx)(n.code,{children:"http://localhost:11434"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["To refresh the server's list of models, click ",(0,r.jsx)(l.A,{name:"RefreshCw","aria-hidden":"true"})," ",(0,r.jsx)(n.strong,{children:"Refresh"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["In the ",(0,r.jsx)(n.strong,{children:"Model Name"})," field, select a model. This example uses ",(0,r.jsx)(n.code,{children:"llama3.2:latest"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["Connect the ",(0,r.jsx)(n.strong,{children:"Ollama"})," model component to a flow. For example, this flow connects a local Ollama server running a Llama 3.2 model as the custom model for an ",(0,r.jsx)(n.a,{href:"/components-agents",children:"Agent"})," component."]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.img,{alt:"Ollama model as Agent custom model",src:t(92757).A+"",width:"4000",height:"2668"})}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see the ",(0,r.jsx)(n.a,{href:"https://ollama.com/",children:"Ollama documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:"Base URL"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"Endpoint of the Ollama API."})]}),(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:"The model name to use."})]}),(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:"Controls the creativity of model responses."})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of an Ollama model configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"openai",children:"OpenAI"}),"\n",(0,r.jsx)(n.p,{children:"This component generates text using OpenAI's language models."}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see ",(0,r.jsx)(n.a,{href:"https://beta.openai.com/docs/",children:"OpenAI documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:"Your OpenAI 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:'The name of the OpenAI model to use. Options include "gpt-3.5-turbo" and "gpt-4".'})]}),(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:"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:"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:"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:"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:"Controls the presence penalty. Range: [0.0, 2.0]. Default: 0.0."})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of OpenAI model configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"openrouter",children:"OpenRouter"}),"\n",(0,r.jsx)(n.p,{children:"This component generates text using OpenRouter's unified API for multiple AI models from different providers."}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see ",(0,r.jsx)(n.a,{href:"https://openrouter.ai/docs",children:"OpenRouter documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:"Your OpenRouter API key for authentication."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"site_url"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"Your site URL for OpenRouter rankings (advanced)."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"app_name"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"Your app name for OpenRouter rankings (advanced)."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"provider"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"The AI model provider to use."})]}),(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:"The specific model to use for chat completion."})]}),(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:"Controls randomness in the output. Range: [0.0, 2.0]. Default: 0.7."})]}),(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:"The maximum number of tokens to generate (advanced)."})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of ChatOpenAI configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"perplexity",children:"Perplexity"}),"\n",(0,r.jsx)(n.p,{children:"This component generates text using Perplexity's language models."}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see ",(0,r.jsx)(n.a,{href:"https://perplexity.ai/",children:"Perplexity documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:"The name of the Perplexity model to use. Options include various Llama 3.1 models."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"max_output_tokens"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsx)(n.td,{children:"The maximum number of tokens to generate."})]}),(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:"The Perplexity 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.jsx)(n.td,{children:"Controls randomness in the output. Default: 0.75."})]}),(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:"The maximum cumulative probability of tokens to consider when sampling (advanced)."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"n"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsx)(n.td,{children:"Number of chat completions to generate for each prompt (advanced)."})]}),(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:"Number of top tokens to consider for top-k sampling. Must be positive (advanced)."})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of ChatPerplexity configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"qianfan",children:"Qianfan"}),"\n",(0,r.jsx)(n.p,{children:"This component generates text using Qianfan's language models."}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see ",(0,r.jsx)(n.a,{href:"https://github.com/baidubce/bce-qianfan-sdk",children:"Qianfan documentation"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"sambanova",children:"SambaNova"}),"\n",(0,r.jsx)(n.p,{children:"This component generates text using SambaNova LLMs."}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see ",(0,r.jsx)(n.a,{href:"https://cloud.sambanova.ai/",children:"Sambanova Cloud documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:"sambanova_url"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsxs)(n.td,{children:["Base URL path for API requests. Default: ",(0,r.jsx)(n.code,{children:"https://api.sambanova.ai/v1/chat/completions"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"sambanova_api_key"}),(0,r.jsx)(n.td,{children:"SecretString"}),(0,r.jsx)(n.td,{children:"Your SambaNova API Key."})]}),(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:"The name of the Sambanova model to use. Options include various Llama models."})]}),(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:"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:"Controls randomness in the output. Range: [0.0, 1.0]. Default: 0.07."})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of SambaNova model configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"vertexai",children:"VertexAI"}),"\n",(0,r.jsx)(n.p,{children:"This component generates text using Vertex AI LLMs."}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see ",(0,r.jsx)(n.a,{href:"https://cloud.google.com/vertex-ai",children:"Google Vertex AI documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:"credentials"}),(0,r.jsx)(n.td,{children:"File"}),(0,r.jsx)(n.td,{children:"JSON credentials file. Leave empty to fall back to environment variables. File type: JSON."})]}),(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:'The name of the Vertex AI model to use. Default: "gemini-1.5-pro".'})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"project"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"The project ID (advanced)."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"location"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:'The location for the Vertex AI API. Default: "us-central1" (advanced).'})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"max_output_tokens"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsx)(n.td,{children:"The maximum number of tokens to generate (advanced)."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"max_retries"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsx)(n.td,{children:"Maximum number of retries for API calls. Default: 1 (advanced)."})]}),(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:"Controls randomness in the output. Default: 0.0."})]}),(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:"The number of highest probability vocabulary tokens to keep for top-k-filtering (advanced)."})]}),(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:"The cumulative probability of parameter highest probability vocabulary tokens to keep for nucleus sampling. Default: 0.95 (advanced)."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"verbose"}),(0,r.jsx)(n.td,{children:"Boolean"}),(0,r.jsx)(n.td,{children:"Whether to print verbose output. Default: False (advanced)."})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of ChatVertexAI configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"xai",children:"xAI"}),"\n",(0,r.jsxs)(n.p,{children:["This 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:["For more information, see the ",(0,r.jsx)(n.a,{href:"https://x.ai/",children:"xAI documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:["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:"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:["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:["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:["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:"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:["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:"Controls reproducibility of the job."})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of ChatOpenAI configured with the specified parameters."})]})})]})]})]})}function p(e={}){const{wrapper:n}={...(0,d.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(m,{...e})}):m(e)}function u(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}},23592:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/component-groq-d3df19923f67805fd483632d537af9f4.png"},68799:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/component-watsonx-model-2f388a824b49f1c49287f07bc8738d0f.png"},90567:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/starter-flow-basic-prompting-09331815d7282bd6a3feedf84838ba20.png"},92757:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/component-ollama-model-5755eab19c67fb10ee0533b3f7ade726.png"}}]);
\ No newline at end of file
diff --git a/assets/js/0be1d5fe.e4fde301.js b/assets/js/0be1d5fe.e4fde301.js
deleted file mode 100644
index 7b9c63e0c8..0000000000
--- a/assets/js/0be1d5fe.e4fde301.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[145],{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}},20839:(e,n,t)=>{t.r(n),t.d(n,{CH:()=>a,assets:()=>o,chCodeConfig:()=>x,contentTitle:()=>c,default:()=>p,frontMatter:()=>h,metadata:()=>s,toc:()=>j});const s=JSON.parse('{"id":"Components/components-models","title":"Models","description":"Model components generate text using large language models.","source":"@site/docs/Components/components-models.md","sourceDirName":"Components","slug":"/components-models","permalink":"/components-models","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Models","slug":"/components-models"},"sidebar":"docs","previous":{"title":"Memories","permalink":"/components-memories"},"next":{"title":"Processing","permalink":"/components-processing"}}');var r=t(74848),d=t(28453),i=t(24754),l=t(17886);const h={title:"Models",slug:"/components-models"},c="Model components in Langflow",o={},a={annotations:i.hk,Code:i.Cy},x={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},j=[{value:"Use a model component in a flow",id:"use-a-model-component-in-a-flow",level:2},{value:"AIML",id:"aiml",level:2},{value:"Amazon Bedrock",id:"amazon-bedrock",level:2},{value:"Anthropic",id:"anthropic",level:2},{value:"Azure OpenAI",id:"azure-openai",level:2},{value:"Cohere",id:"cohere",level:2},{value:"DeepSeek",id:"deepseek",level:2},{value:"Google Generative AI",id:"google-generative-ai",level:2},{value:"Groq",id:"groq",level:2},{value:"Hugging Face API",id:"hugging-face-api",level:2},{value:"IBM watsonx.ai",id:"ibm-watsonxai",level:2},{value:"Language model",id:"language-model",level:2},{value:"LMStudio",id:"lmstudio",level:2},{value:"Maritalk",id:"maritalk",level:2},{value:"Mistral",id:"mistral",level:2},{value:"Novita AI",id:"novita-ai",level:2},{value:"NVIDIA",id:"nvidia",level:2},{value:"Ollama",id:"ollama",level:2},{value:"OpenAI",id:"openai",level:2},{value:"OpenRouter",id:"openrouter",level:2},{value:"Perplexity",id:"perplexity",level:2},{value:"Qianfan",id:"qianfan",level:2},{value:"SambaNova",id:"sambanova",level:2},{value:"VertexAI",id:"vertexai",level:2},{value:"xAI",id:"xai",level:2}];function m(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",header:"header",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,d.R)(),...e.components},{Details:s}=n;return a||u("CH",!1),a.Code||u("CH.Code",!0),s||u("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)(n.header,{children:(0,r.jsx)(n.h1,{id:"model-components-in-langflow",children:"Model components in Langflow"})}),"\n",(0,r.jsx)(n.p,{children:"Model components generate text using large language models."}),"\n",(0,r.jsx)(n.p,{children:"Refer to your specific component's documentation for more information on parameters."}),"\n",(0,r.jsx)(n.h2,{id:"use-a-model-component-in-a-flow",children:"Use a model component in a flow"}),"\n",(0,r.jsx)(n.p,{children:"Model components receive inputs and prompts for generating text, and the generated text is sent to an output component."}),"\n",(0,r.jsxs)(n.p,{children:["The model output can also be sent to the ",(0,r.jsx)(n.strong,{children:"Language Model"})," port and on to a ",(0,r.jsx)(n.strong,{children:"Parse Data"})," component, where the output can be parsed into structured ",(0,r.jsx)(n.a,{href:"/concepts-objects",children:"Data"})," objects."]}),"\n",(0,r.jsxs)(n.p,{children:["This example has the OpenAI model in a chatbot flow. For more information, see the ",(0,r.jsx)(n.a,{href:"/basic-prompting",children:"Basic prompting flow"}),"."]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.img,{src:t(90567).A+"",width:"2500",height:"1528"})}),"\n",(0,r.jsx)(n.h2,{id:"aiml",children:"AIML"}),"\n",(0,r.jsx)(n.p,{children:"This component creates a ChatOpenAI model instance using the AIML API."}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see ",(0,r.jsx)(n.a,{href:"https://docs.aimlapi.com/",children:"AIML documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:"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:"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:["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:["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:"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:["Controls randomness in the output. Default: ",(0,r.jsx)(n.code,{children:"0.1"}),"."]})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of ChatOpenAI configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"amazon-bedrock",children:"Amazon Bedrock"}),"\n",(0,r.jsx)(n.p,{children:"This component generates text using Amazon Bedrock LLMs."}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see ",(0,r.jsx)(n.a,{href:"https://docs.aws.amazon.com/bedrock",children:"Amazon Bedrock documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:"The ID of the Amazon Bedrock model to use. Options include various models."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"aws_access_key"}),(0,r.jsx)(n.td,{children:"SecretString"}),(0,r.jsx)(n.td,{children:"AWS Access Key for authentication."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"aws_secret_key"}),(0,r.jsx)(n.td,{children:"SecretString"}),(0,r.jsx)(n.td,{children:"AWS Secret Key for authentication."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"aws_session_token"}),(0,r.jsx)(n.td,{children:"SecretString"}),(0,r.jsx)(n.td,{children:"The session key for your AWS account."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"credentials_profile_name"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"Name of the AWS credentials profile to use."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"region_name"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsxs)(n.td,{children:["AWS region name. Default: ",(0,r.jsx)(n.code,{children:"us-east-1"}),"."]})]}),(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:"Additional keyword arguments for the model."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"endpoint_url"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"Custom endpoint URL for the Bedrock service."})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of ChatBedrock configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"anthropic",children:"Anthropic"}),"\n",(0,r.jsx)(n.p,{children:"This component allows the generation of text using Anthropic Chat and Language models."}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see the ",(0,r.jsx)(n.a,{href:"https://docs.anthropic.com/en/docs/welcome",children:"Anthropic documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:["The maximum number of tokens to generate. Set to 0 for unlimited tokens. Default: ",(0,r.jsx)(n.code,{children:"4096"}),"."]})]}),(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:"The name of the Anthropic model to use. Options include various Claude 3 models."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"anthropic_api_key"}),(0,r.jsx)(n.td,{children:"SecretString"}),(0,r.jsx)(n.td,{children:"Your Anthropic 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:["Controls randomness in the output. Default: ",(0,r.jsx)(n.code,{children:"0.1"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"anthropic_api_url"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsxs)(n.td,{children:["Endpoint of the Anthropic API. Defaults to ",(0,r.jsx)(n.code,{children:"https://api.anthropic.com"})," if not specified (advanced)."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"prefill"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"Prefill text to guide the model's response (advanced)."})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of ChatAnthropic configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"azure-openai",children:"Azure OpenAI"}),"\n",(0,r.jsx)(n.p,{children:"This component generates text using Azure OpenAI LLM."}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see the ",(0,r.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/azure/ai-services/openai/",children:"Azure OpenAI documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:"Specifies the name of the Azure OpenAI model to be used for text generation."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Azure Endpoint"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"Your Azure endpoint, including the resource."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Deployment Name"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"Specifies the name of the deployment."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"API Version"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"Specifies the version of the Azure OpenAI API to be used."})]}),(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:"Your Azure OpenAI API key."})]}),(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:["Specifies the sampling temperature. Defaults to ",(0,r.jsx)(n.code,{children:"0.7"}),"."]})]}),(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:["Specifies the maximum number of tokens to generate. Defaults to ",(0,r.jsx)(n.code,{children:"1000"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Input Value"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"Specifies the input text for text generation."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Stream"}),(0,r.jsx)(n.td,{children:"Boolean"}),(0,r.jsxs)(n.td,{children:["Specifies whether to stream the response from the model. Defaults to ",(0,r.jsx)(n.code,{children:"False"}),"."]})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of AzureOpenAI configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"cohere",children:"Cohere"}),"\n",(0,r.jsx)(n.p,{children:"This component generates text using Cohere's language models."}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see the ",(0,r.jsx)(n.a,{href:"https://cohere.ai/",children:"Cohere documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:"Cohere API Key"}),(0,r.jsx)(n.td,{children:"SecretString"}),(0,r.jsx)(n.td,{children:"Your Cohere API key."})]}),(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:["Specifies the maximum number of tokens to generate. Defaults to ",(0,r.jsx)(n.code,{children:"256"}),"."]})]}),(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:["Specifies the sampling temperature. Defaults to ",(0,r.jsx)(n.code,{children:"0.75"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Input Value"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"Specifies the input text for text generation."})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of the Cohere model configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"deepseek",children:"DeepSeek"}),"\n",(0,r.jsx)(n.p,{children:"This component generates text using DeepSeek's language models."}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see the ",(0,r.jsx)(n.a,{href:"https://api-docs.deepseek.com/",children:"DeepSeek documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:["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:"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:["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:["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:["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:"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:["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:"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."})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of ChatOpenAI configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"google-generative-ai",children:"Google Generative AI"}),"\n",(0,r.jsx)(n.p,{children:"This component generates text using Google's Generative AI models."}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see the ",(0,r.jsx)(n.a,{href:"https://cloud.google.com/vertex-ai/docs/",children:"Google Generative AI documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:"Google API Key"}),(0,r.jsx)(n.td,{children:"SecretString"}),(0,r.jsx)(n.td,{children:"Your Google API key to use for the Google Generative AI."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Model"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsxs)(n.td,{children:["The name of the model to use, such as ",(0,r.jsx)(n.code,{children:'"gemini-pro"'}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Max Output Tokens"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsx)(n.td,{children:"The maximum number of tokens to generate."})]}),(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:"Run inference with this temperature."})]}),(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:"Consider the set of top K most probable tokens."})]}),(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:"The maximum cumulative probability of tokens to consider when sampling."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"N"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsx)(n.td,{children:"Number of chat completions to generate for each prompt."})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of ChatGoogleGenerativeAI configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"groq",children:"Groq"}),"\n",(0,r.jsx)(n.p,{children:"This component generates text using Groq's language models."}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["To use this component in a flow, connect it as a ",(0,r.jsx)(n.strong,{children:"Model"})," in a flow like the ",(0,r.jsx)(n.a,{href:"/basic-prompting",children:"Basic prompting flow"}),", or select it as the ",(0,r.jsx)(n.strong,{children:"Model Provider"})," if you're using an ",(0,r.jsx)(n.strong,{children:"Agent"})," component."]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.img,{alt:"Groq component in a basic prompting flow",src:t(23592).A+"",width:"1982",height:"1194"})}),"\n",(0,r.jsxs)(n.ol,{start:"2",children:["\n",(0,r.jsxs)(n.li,{children:["In the ",(0,r.jsx)(n.strong,{children:"Groq API Key"})," field, paste your Groq API key.\nThe Groq model component automatically retrieves a list of the latest models.\nTo refresh your list of models, click ",(0,r.jsx)(l.A,{name:"RefreshCw","aria-label":"Refresh"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["In the ",(0,r.jsx)(n.strong,{children:"Model"})," field, select the model you want to use for your LLM.\nThis example uses ",(0,r.jsx)(n.a,{href:"https://console.groq.com/docs/model/llama-3.1-8b-instant",children:"llama-3.1-8b-instant"}),", which Groq recommends for real-time conversational interfaces."]}),"\n",(0,r.jsxs)(n.li,{children:["In the ",(0,r.jsx)(n.strong,{children:"Prompt"})," component, enter:"]}),"\n"]}),"\n",(0,r.jsx)(a.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"You are a helpful assistant who supports their claims with sources.",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsxs)(n.ol,{start:"5",children:["\n",(0,r.jsxs)(n.li,{children:["Click ",(0,r.jsx)(n.strong,{children:"Playground"})," and ask your Groq LLM a question.\nThe responses include a list of sources."]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see the ",(0,r.jsx)(n.a,{href:"https://groq.com/",children:"Groq documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:"groq_api_key"}),(0,r.jsx)(n.td,{children:"SecretString"}),(0,r.jsx)(n.td,{children:"API key for the Groq API."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"groq_api_base"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsxs)(n.td,{children:["Base URL path for API requests. Default: ",(0,r.jsx)(n.code,{children:"https://api.groq.com"}),"."]})]}),(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:"The maximum number of tokens to generate."})]}),(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:["Controls randomness in the output. Range: ",(0,r.jsx)(n.code,{children:"[0.0, 1.0]"}),". Default: ",(0,r.jsx)(n.code,{children:"0.1"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"n"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsx)(n.td,{children:"Number of chat completions to generate for each prompt."})]}),(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:"The name of the Groq model to use. Options are dynamically fetched from the Groq API."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"tool_mode_enabled"}),(0,r.jsx)(n.td,{children:"Bool"}),(0,r.jsx)(n.td,{children:"If enabled, the component only displays models that work with tools."})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of ChatGroq configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"hugging-face-api",children:"Hugging Face API"}),"\n",(0,r.jsxs)(n.p,{children:["This component sends requests to the Hugging Face API to generate text using the model specified in the ",(0,r.jsx)(n.strong,{children:"Model ID"})," field."]}),"\n",(0,r.jsxs)(n.p,{children:["The Hugging Face API is a hosted inference API for models hosted on Hugging Face, and requires a ",(0,r.jsx)(n.a,{href:"https://huggingface.co/docs/hub/security-tokens",children:"Hugging Face API token"})," to authenticate."]}),"\n",(0,r.jsxs)(n.p,{children:["In this example based on the ",(0,r.jsx)(n.a,{href:"/basic-prompting",children:"Basic prompting flow"}),", the ",(0,r.jsx)(n.strong,{children:"Hugging Face API"})," model component replaces the ",(0,r.jsx)(n.strong,{children:"Open AI"})," model. By selecting different hosted models, you can see how different models return different results."]}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Create a ",(0,r.jsx)(n.a,{href:"/basic-prompting",children:"Basic prompting flow"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Replace the ",(0,r.jsx)(n.strong,{children:"OpenAI"})," model component with a ",(0,r.jsx)(n.strong,{children:"Hugging Face API"})," model component."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["In the ",(0,r.jsx)(n.strong,{children:"Hugging Face API"})," component, add your Hugging Face API token to the ",(0,r.jsx)(n.strong,{children:"API Token"})," field."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Open the ",(0,r.jsx)(n.strong,{children:"Playground"})," and ask a question to the model, and see how it responds."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Try different models, and see how they perform differently."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see the ",(0,r.jsx)(n.a,{href:"https://huggingface.co/",children:"Hugging Face documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:'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.jsx)(n.td,{children:"Your 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:"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:"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:"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:"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:"Additional keyword arguments to pass to the model."})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of HuggingFaceHub configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"ibm-watsonxai",children:"IBM watsonx.ai"}),"\n",(0,r.jsxs)(n.p,{children:["This component generates text using ",(0,r.jsx)(n.a,{href:"https://www.ibm.com/watsonx",children:"IBM watsonx.ai"})," foundation models."]}),"\n",(0,r.jsxs)(n.p,{children:["To use ",(0,r.jsx)(n.strong,{children:"IBM watsonx.ai"})," model components, replace a model component with the IBM watsonx.ai component in a flow."]}),"\n",(0,r.jsx)(n.p,{children:"An example flow looks like the following:"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.img,{alt:"IBM watsonx model component in a basic prompting flow",src:t(68799).A+"",width:"2364",height:"1562"})}),"\n",(0,r.jsxs)(n.p,{children:["The values for ",(0,r.jsx)(n.strong,{children:"API endpoint"}),", ",(0,r.jsx)(n.strong,{children:"Project ID"}),", ",(0,r.jsx)(n.strong,{children:"API key"}),", and ",(0,r.jsx)(n.strong,{children:"Model Name"})," are found in your IBM watsonx.ai deployment.\nFor more information, see the ",(0,r.jsx)(n.a,{href:"https://python.langchain.com/docs/integrations/chat/ibm_watsonx/",children:"Langchain documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:"url"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"The base URL of the watsonx API."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"project_id"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"Your watsonx Project ID."})]}),(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:"Your IBM watsonx API Key."})]}),(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:"The name of the watsonx model to use. Options are dynamically fetched from the API."})]}),(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:["The maximum number of tokens to generate. Default: ",(0,r.jsx)(n.code,{children:"1000"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"stop_sequence"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"The sequence where generation should stop."})]}),(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:["Controls randomness in the output. Default: ",(0,r.jsx)(n.code,{children:"0.1"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"top_p"}),(0,r.jsx)(n.td,{children:"Float"}),(0,r.jsxs)(n.td,{children:["Controls nucleus sampling, which limits the model to tokens whose probability is below the ",(0,r.jsx)(n.code,{children:"top_p"})," value. Range: Default: ",(0,r.jsx)(n.code,{children:"0.9"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"frequency_penalty"}),(0,r.jsx)(n.td,{children:"Float"}),(0,r.jsxs)(n.td,{children:["Controls frequency penalty. A positive value decreases the probability of repeating tokens, and a negative value increases the probability. Range: Default: ",(0,r.jsx)(n.code,{children:"0.5"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"presence_penalty"}),(0,r.jsx)(n.td,{children:"Float"}),(0,r.jsxs)(n.td,{children:["Controls presence penalty. A positive value increases the likelihood of new topics being introduced. Default: ",(0,r.jsx)(n.code,{children:"0.3"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"seed"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsxs)(n.td,{children:["A random seed for the model. Default: ",(0,r.jsx)(n.code,{children:"8"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"logprobs"}),(0,r.jsx)(n.td,{children:"Boolean"}),(0,r.jsxs)(n.td,{children:["Whether to return log probabilities of output tokens or not. Default: ",(0,r.jsx)(n.code,{children:"True"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"top_logprobs"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsxs)(n.td,{children:["The number of most likely tokens to return at each position. Default: ",(0,r.jsx)(n.code,{children:"3"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"logit_bias"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"A JSON string of token IDs to bias or suppress."})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsxs)(n.td,{children:["An instance of ",(0,r.jsx)(n.a,{href:"https://python.langchain.com/docs/integrations/chat/ibm_watsonx/",children:"ChatWatsonx"})," configured with the specified parameters."]})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"language-model",children:"Language model"}),"\n",(0,r.jsx)(n.p,{children:"This component generates text using either OpenAI or Anthropic language models."}),"\n",(0,r.jsx)(n.p,{children:"Use this component as a drop-in replacement for LLM models to switch between different model providers and models."}),"\n",(0,r.jsx)(n.p,{children:"Instead of swapping out model components when you want to try a different provider, like switching between OpenAI and Anthropic components, change the provider dropdown in this single component. This makes it easier to experiment with and compare different models while keeping the rest of your flow intact."}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see the ",(0,r.jsx)(n.a,{href:"https://platform.openai.com/docs",children:"OpenAI documentation"})," and ",(0,r.jsx)(n.a,{href:"https://docs.anthropic.com/",children:"Anthropic documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:"provider"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:'The model provider to use. Options: "OpenAI", "Anthropic". Default: "OpenAI".'})]}),(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:"The name of the model to use. Options depend on the selected provider."})]}),(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:"The API Key for authentication with the selected provider."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"input_value"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"The input text to send to the model."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"system_message"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"A system message that helps set the behavior of the assistant (advanced)."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"stream"}),(0,r.jsx)(n.td,{children:"Boolean"}),(0,r.jsxs)(n.td,{children:["Whether to stream the response. Default: ",(0,r.jsx)(n.code,{children:"False"})," (advanced)."]})]}),(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:["Controls randomness in responses. Range: ",(0,r.jsx)(n.code,{children:"[0.0, 1.0]"}),". Default: ",(0,r.jsx)(n.code,{children:"0.1"})," (advanced)."]})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of ChatOpenAI or ChatAnthropic configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"lmstudio",children:"LMStudio"}),"\n",(0,r.jsx)(n.p,{children:"This component generates text using LM Studio's local language models."}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see ",(0,r.jsx)(n.a,{href:"https://lmstudio.ai/",children:"LM Studio documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:"base_url"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsxs)(n.td,{children:["The URL where LM Studio is running. Default: ",(0,r.jsx)(n.code,{children:'"http://localhost:1234"'}),"."]})]}),(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:["Maximum number of tokens to generate in the response. Default: ",(0,r.jsx)(n.code,{children:"512"}),"."]})]}),(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:["Controls randomness in the output. Range: ",(0,r.jsx)(n.code,{children:"[0.0, 2.0]"}),". Default: ",(0,r.jsx)(n.code,{children:"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.jsxs)(n.td,{children:["Controls diversity via nucleus sampling. Range: ",(0,r.jsx)(n.code,{children:"[0.0, 1.0]"}),". Default: ",(0,r.jsx)(n.code,{children:"1.0"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"stop"}),(0,r.jsx)(n.td,{children:"List[String]"}),(0,r.jsx)(n.td,{children:"List of strings that stop generation when encountered."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"stream"}),(0,r.jsx)(n.td,{children:"Boolean"}),(0,r.jsxs)(n.td,{children:["Whether to stream the response. Default: ",(0,r.jsx)(n.code,{children:"False"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"presence_penalty"}),(0,r.jsx)(n.td,{children:"Float"}),(0,r.jsxs)(n.td,{children:["Penalizes repeated tokens. Range: ",(0,r.jsx)(n.code,{children:"[-2.0, 2.0]"}),". Default: ",(0,r.jsx)(n.code,{children:"0.0"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"frequency_penalty"}),(0,r.jsx)(n.td,{children:"Float"}),(0,r.jsxs)(n.td,{children:["Penalizes frequent tokens. Range: ",(0,r.jsx)(n.code,{children:"[-2.0, 2.0]"}),". Default: ",(0,r.jsx)(n.code,{children:"0.0"}),"."]})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of LMStudio configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"maritalk",children:"Maritalk"}),"\n",(0,r.jsx)(n.p,{children:"This component generates text using Maritalk LLMs."}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see ",(0,r.jsx)(n.a,{href:"https://www.maritalk.com/",children:"Maritalk documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:["The maximum number of tokens to generate. Set to ",(0,r.jsx)(n.code,{children:"0"})," for unlimited tokens. Default: ",(0,r.jsx)(n.code,{children:"512"}),"."]})]}),(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:["The name of the Maritalk model to use. Options: ",(0,r.jsx)(n.code,{children:"sabia-2-small"}),", ",(0,r.jsx)(n.code,{children:"sabia-2-medium"}),". Default: ",(0,r.jsx)(n.code,{children:"sabia-2-small"}),"."]})]}),(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:"The Maritalk API Key to use 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:["Controls randomness in the output. Range: ",(0,r.jsx)(n.code,{children:"[0.0, 1.0]"}),". Default: ",(0,r.jsx)(n.code,{children:"0.5"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"endpoint_url"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsxs)(n.td,{children:["The Maritalk API endpoint. Default: ",(0,r.jsx)(n.code,{children:"https://api.maritalk.com"}),"."]})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of ChatMaritalk configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"mistral",children:"Mistral"}),"\n",(0,r.jsx)(n.p,{children:"This component generates text using MistralAI LLMs."}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see ",(0,r.jsx)(n.a,{href:"https://docs.mistral.ai/",children:"Mistral AI documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:"The maximum number of tokens to generate. Set to 0 for unlimited tokens (advanced)."})]}),(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:["The name of the Mistral AI model to use. Options include ",(0,r.jsx)(n.code,{children:"open-mixtral-8x7b"}),", ",(0,r.jsx)(n.code,{children:"open-mixtral-8x22b"}),", ",(0,r.jsx)(n.code,{children:"mistral-small-latest"}),", ",(0,r.jsx)(n.code,{children:"mistral-medium-latest"}),", ",(0,r.jsx)(n.code,{children:"mistral-large-latest"}),", and ",(0,r.jsx)(n.code,{children:"codestral-latest"}),". Default: ",(0,r.jsx)(n.code,{children:"codestral-latest"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"mistral_api_base"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsxs)(n.td,{children:["The base URL of the Mistral API. Defaults to ",(0,r.jsx)(n.code,{children:"https://api.mistral.ai/v1"})," (advanced)."]})]}),(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:"The Mistral API Key to use 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:"Controls randomness in the output. Default: 0.5."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"max_retries"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsx)(n.td,{children:"Maximum number of retries for API calls. Default: 5 (advanced)."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"timeout"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsx)(n.td,{children:"Timeout for API calls in seconds. Default: 60 (advanced)."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"max_concurrent_requests"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsx)(n.td,{children:"Maximum number of concurrent API requests. Default: 3 (advanced)."})]}),(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:"Nucleus sampling parameter. Default: 1 (advanced)."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"random_seed"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsx)(n.td,{children:"Seed for random number generation. Default: 1 (advanced)."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"safe_mode"}),(0,r.jsx)(n.td,{children:"Boolean"}),(0,r.jsx)(n.td,{children:"Enables safe mode for content generation (advanced)."})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of ChatMistralAI configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"novita-ai",children:"Novita AI"}),"\n",(0,r.jsx)(n.p,{children:"This component generates text using Novita AI's language models."}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see ",(0,r.jsx)(n.a,{href:"https://novita.ai/docs/model-api/reference/llm/llm.html?utm_source=github_langflow&utm_medium=github_readme&utm_campaign=link",children:"Novita AI documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:"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:"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:"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:"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:"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:"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:"Controls the presence penalty. Range: [0.0, 2.0]. Default: 0.0."})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of Novita AI model configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"nvidia",children:"NVIDIA"}),"\n",(0,r.jsx)(n.p,{children:"This component generates text using NVIDIA LLMs."}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see ",(0,r.jsx)(n.a,{href:"https://developer.nvidia.com/generative-ai",children:"NVIDIA AI documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:["The maximum number of tokens to generate. Set to ",(0,r.jsx)(n.code,{children:"0"})," for unlimited tokens (advanced)."]})]}),(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:["The name of the NVIDIA model to use. Default: ",(0,r.jsx)(n.code,{children:"mistralai/mixtral-8x7b-instruct-v0.1"}),"."]})]}),(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:["The base URL of the NVIDIA API. Default: ",(0,r.jsx)(n.code,{children:"https://integrate.api.nvidia.com/v1"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"nvidia_api_key"}),(0,r.jsx)(n.td,{children:"SecretString"}),(0,r.jsx)(n.td,{children:"The NVIDIA 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:["Controls randomness in the output. 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.jsxs)(n.td,{children:["The seed controls the reproducibility of the job (advanced). Default: ",(0,r.jsx)(n.code,{children:"1"}),"."]})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of ChatNVIDIA configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"ollama",children:"Ollama"}),"\n",(0,r.jsx)(n.p,{children:"This component generates text using Ollama's language models."}),"\n",(0,r.jsx)(n.p,{children:"To use this component in a flow, connect Langflow to your locally running Ollama server and select a model."}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["In the Ollama component, in the ",(0,r.jsx)(n.strong,{children:"Base URL"})," field, enter the address for your locally running Ollama server.\nThis value is set as the ",(0,r.jsx)(n.code,{children:"OLLAMA_HOST"})," environment variable in Ollama.\nThe default base URL is ",(0,r.jsx)(n.code,{children:"http://localhost:11434"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["To refresh the server's list of models, click ",(0,r.jsx)(l.A,{name:"RefreshCw","aria-label":"Refresh"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["In the ",(0,r.jsx)(n.strong,{children:"Model Name"})," field, select a model. This example uses ",(0,r.jsx)(n.code,{children:"llama3.2:latest"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["Connect the ",(0,r.jsx)(n.strong,{children:"Ollama"})," model component to a flow. For example, this flow connects a local Ollama server running a Llama 3.2 model as the custom model for an ",(0,r.jsx)(n.a,{href:"/components-agents",children:"Agent"})," component."]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.img,{alt:"Ollama model as Agent custom model",src:t(92757).A+"",width:"4000",height:"2668"})}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see the ",(0,r.jsx)(n.a,{href:"https://ollama.com/",children:"Ollama documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:"Base URL"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"Endpoint of the Ollama API."})]}),(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:"The model name to use."})]}),(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:"Controls the creativity of model responses."})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of an Ollama model configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"openai",children:"OpenAI"}),"\n",(0,r.jsx)(n.p,{children:"This component generates text using OpenAI's language models."}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see ",(0,r.jsx)(n.a,{href:"https://beta.openai.com/docs/",children:"OpenAI documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:"Your OpenAI 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:'The name of the OpenAI model to use. Options include "gpt-3.5-turbo" and "gpt-4".'})]}),(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:"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:"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:"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:"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:"Controls the presence penalty. Range: [0.0, 2.0]. Default: 0.0."})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of OpenAI model configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"openrouter",children:"OpenRouter"}),"\n",(0,r.jsx)(n.p,{children:"This component generates text using OpenRouter's unified API for multiple AI models from different providers."}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see ",(0,r.jsx)(n.a,{href:"https://openrouter.ai/docs",children:"OpenRouter documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:"Your OpenRouter API key for authentication."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"site_url"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"Your site URL for OpenRouter rankings (advanced)."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"app_name"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"Your app name for OpenRouter rankings (advanced)."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"provider"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"The AI model provider to use."})]}),(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:"The specific model to use for chat completion."})]}),(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:"Controls randomness in the output. Range: [0.0, 2.0]. Default: 0.7."})]}),(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:"The maximum number of tokens to generate (advanced)."})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of ChatOpenAI configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"perplexity",children:"Perplexity"}),"\n",(0,r.jsx)(n.p,{children:"This component generates text using Perplexity's language models."}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see ",(0,r.jsx)(n.a,{href:"https://perplexity.ai/",children:"Perplexity documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:"The name of the Perplexity model to use. Options include various Llama 3.1 models."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"max_output_tokens"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsx)(n.td,{children:"The maximum number of tokens to generate."})]}),(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:"The Perplexity 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.jsx)(n.td,{children:"Controls randomness in the output. Default: 0.75."})]}),(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:"The maximum cumulative probability of tokens to consider when sampling (advanced)."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"n"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsx)(n.td,{children:"Number of chat completions to generate for each prompt (advanced)."})]}),(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:"Number of top tokens to consider for top-k sampling. Must be positive (advanced)."})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of ChatPerplexity configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"qianfan",children:"Qianfan"}),"\n",(0,r.jsx)(n.p,{children:"This component generates text using Qianfan's language models."}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see ",(0,r.jsx)(n.a,{href:"https://github.com/baidubce/bce-qianfan-sdk",children:"Qianfan documentation"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"sambanova",children:"SambaNova"}),"\n",(0,r.jsx)(n.p,{children:"This component generates text using SambaNova LLMs."}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see ",(0,r.jsx)(n.a,{href:"https://cloud.sambanova.ai/",children:"Sambanova Cloud documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:"sambanova_url"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsxs)(n.td,{children:["Base URL path for API requests. Default: ",(0,r.jsx)(n.code,{children:"https://api.sambanova.ai/v1/chat/completions"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"sambanova_api_key"}),(0,r.jsx)(n.td,{children:"SecretString"}),(0,r.jsx)(n.td,{children:"Your SambaNova API Key."})]}),(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:"The name of the Sambanova model to use. Options include various Llama models."})]}),(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:"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:"Controls randomness in the output. Range: [0.0, 1.0]. Default: 0.07."})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of SambaNova model configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"vertexai",children:"VertexAI"}),"\n",(0,r.jsx)(n.p,{children:"This component generates text using Vertex AI LLMs."}),"\n",(0,r.jsxs)(n.p,{children:["For more information, see ",(0,r.jsx)(n.a,{href:"https://cloud.google.com/vertex-ai",children:"Google Vertex AI documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:"credentials"}),(0,r.jsx)(n.td,{children:"File"}),(0,r.jsx)(n.td,{children:"JSON credentials file. Leave empty to fall back to environment variables. File type: JSON."})]}),(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:'The name of the Vertex AI model to use. Default: "gemini-1.5-pro".'})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"project"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:"The project ID (advanced)."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"location"}),(0,r.jsx)(n.td,{children:"String"}),(0,r.jsx)(n.td,{children:'The location for the Vertex AI API. Default: "us-central1" (advanced).'})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"max_output_tokens"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsx)(n.td,{children:"The maximum number of tokens to generate (advanced)."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"max_retries"}),(0,r.jsx)(n.td,{children:"Integer"}),(0,r.jsx)(n.td,{children:"Maximum number of retries for API calls. Default: 1 (advanced)."})]}),(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:"Controls randomness in the output. Default: 0.0."})]}),(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:"The number of highest probability vocabulary tokens to keep for top-k-filtering (advanced)."})]}),(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:"The cumulative probability of parameter highest probability vocabulary tokens to keep for nucleus sampling. Default: 0.95 (advanced)."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"verbose"}),(0,r.jsx)(n.td,{children:"Boolean"}),(0,r.jsx)(n.td,{children:"Whether to print verbose output. Default: False (advanced)."})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of ChatVertexAI configured with the specified parameters."})]})})]})]}),"\n",(0,r.jsx)(n.h2,{id:"xai",children:"xAI"}),"\n",(0,r.jsxs)(n.p,{children:["This 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:["For more information, see the ",(0,r.jsx)(n.a,{href:"https://x.ai/",children:"xAI documentation"}),"."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Inputs"})}),(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:["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:"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:["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:["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:["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:"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:["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:"Controls reproducibility of the job."})]})]})]}),(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Outputs"})}),(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.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"model"}),(0,r.jsx)(n.td,{children:"LanguageModel"}),(0,r.jsx)(n.td,{children:"An instance of ChatOpenAI configured with the specified parameters."})]})})]})]})]})}function p(e={}){const{wrapper:n}={...(0,d.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(m,{...e})}):m(e)}function u(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}},23592:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/component-groq-d3df19923f67805fd483632d537af9f4.png"},68799:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/component-watsonx-model-2f388a824b49f1c49287f07bc8738d0f.png"},90567:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/starter-flow-basic-prompting-09331815d7282bd6a3feedf84838ba20.png"},92757:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/component-ollama-model-5755eab19c67fb10ee0533b3f7ade726.png"}}]);
\ No newline at end of file
diff --git a/assets/js/0e5205b8.87751c5d.js b/assets/js/0e5205b8.87751c5d.js
new file mode 100644
index 0000000000..e1e788bc57
--- /dev/null
+++ b/assets/js/0e5205b8.87751c5d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[3968],{10233:(e,n,o)=>{o.r(n),o.d(n,{CH:()=>h,assets:()=>d,chCodeConfig:()=>p,contentTitle:()=>a,default:()=>m,frontMatter:()=>l,metadata:()=>t,toc:()=>u});const t=JSON.parse('{"id":"Concepts/concepts-playground","title":"Playground","description":"The\xa0Playground\xa0is a dynamic interface designed for real-time interaction with LLMs, allowing users to chat, access memories, and monitor inputs and outputs. Here, users can directly prototype their models, making adjustments and observing different outcomes.","source":"@site/docs/Concepts/concepts-playground.md","sourceDirName":"Concepts","slug":"/concepts-playground","permalink":"/concepts-playground","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Playground","slug":"/concepts-playground"},"sidebar":"docs","previous":{"title":"Langflow overview","permalink":"/concepts-overview"},"next":{"title":"Components","permalink":"/concepts-components"}}');var s=o(74848),i=o(28453),r=o(24754),c=o(17886);const l={title:"Playground",slug:"/concepts-playground"},a=void 0,d={},h={annotations:r.hk,Code:r.Cy},p={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},u=[{value:"Run a flow in the playgound",id:"run-a-flow-in-the-playgound",level:2},{value:"View playground messages by session ID",id:"view-playground-messages-by-session-id",level:2},{value:"Use custom Session IDs for multiple user interactions",id:"use-custom-session-ids-for-multiple-user-interactions",level:2},{value:"Work with images in the Playground",id:"work-with-images-in-the-playground",level:2},{value:"See also",id:"see-also",level:2}];function g(e){const n={a:"a",code:"code",h2:"h2",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return h||f("CH",!1),h.Code||f("CH.Code",!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.jsxs)(n.p,{children:["The\xa0",(0,s.jsx)(n.strong,{children:"Playground"}),"\xa0is a dynamic interface designed for real-time interaction with LLMs, allowing users to chat, access memories, and monitor inputs and outputs. Here, users can directly prototype their models, making adjustments and observing different outcomes."]}),"\n",(0,s.jsxs)(n.p,{children:["As long as you have an ",(0,s.jsx)(n.a,{href:"/components-io",children:"Input or Output"})," component working, you can open it by clicking the\xa0",(0,s.jsx)(n.strong,{children:"Playground"}),"\xa0button.\nThe Playground's window arrangement changes depending on what components are being used."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:o(75918).A+"",width:"3244",height:"1776"})}),"\n",(0,s.jsx)(n.h2,{id:"run-a-flow-in-the-playgound",children:"Run a flow in the playgound"}),"\n",(0,s.jsxs)(n.p,{children:["When you run a flow in the ",(0,s.jsx)(n.strong,{children:"Playground"}),", Langflow calls the ",(0,s.jsx)(n.code,{children:"/build/$FLOW_ID/flow"})," endpoint in ",(0,s.jsx)(n.a,{href:"https://github.com/langflow-ai/langflow/blob/main/src/backend/base/langflow/api/v1/chat.py#L162",children:"chat.py"}),". This call retrieves the flow data, builds a graph, and executes the graph. As each component (or node) is executed, the ",(0,s.jsx)(n.code,{children:"build_vertex"})," function calls ",(0,s.jsx)(n.code,{children:"build_and_run"}),", which may call the individual components' ",(0,s.jsx)(n.code,{children:"def_build"})," method, if it exists. If a component doesn't have a ",(0,s.jsx)(n.code,{children:"def_build"})," function, the build still returns a component."]}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.code,{children:"build"})," function allows components to execute logic at runtime. For example, the ",(0,s.jsx)(n.a,{href:"https://github.com/langflow-ai/langflow/blob/main/src/backend/base/langflow/components/langchain_utilities/recursive_character.py",children:"Recursive character text splitter"})," is a child of the ",(0,s.jsx)(n.code,{children:"LCTextSplitterComponent"})," class. When text needs to be processed, the parent class's ",(0,s.jsx)(n.code,{children:"build"})," method is called, which creates a ",(0,s.jsx)(n.code,{children:"RecursiveCharacterTextSplitter"})," object and uses it to split the text according to the defined parameters. The split text is then passed on to the next component. This all occurs when the component is built."]}),"\n",(0,s.jsx)(n.h2,{id:"view-playground-messages-by-session-id",children:"View playground messages by session ID"}),"\n",(0,s.jsxs)(n.p,{children:["When you send a message from the ",(0,s.jsx)(n.strong,{children:"Playground"})," interface, the interactions are stored in the ",(0,s.jsx)(n.strong,{children:"Message Logs"})," by ",(0,s.jsx)(n.code,{children:"session_id"}),".\nA single flow can have multiple chats, and different flows can share the same chat. Each chat will have a different ",(0,s.jsx)(n.code,{children:"session_id"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["To view messages by ",(0,s.jsx)(n.code,{children:"session_id"})," within the Playground, click the ",(0,s.jsx)(c.A,{name:"Ellipsis","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Options"})," menu of any chat session, and then select ",(0,s.jsx)(n.strong,{children:"Message Logs"}),"."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:o(85629).A+"",width:"3250",height:"1778"})}),"\n",(0,s.jsx)(n.p,{children:"Individual messages in chat memory can be edited or deleted. Modifying these memories influences the behavior of the chatbot responses."}),"\n",(0,s.jsxs)(n.p,{children:["To learn more about chat memories in Langflow, see ",(0,s.jsx)(n.a,{href:"/components-memories",children:"Memory components"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"use-custom-session-ids-for-multiple-user-interactions",children:"Use custom Session IDs for multiple user interactions"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"session_id"})," values are used to track user interactions in a flow.\nBy default, if the ",(0,s.jsx)(n.code,{children:"session_id"})," value is empty, it is set to the same value as the ",(0,s.jsx)(n.code,{children:"flow_id"}),". In this case, every chat call uses the same ",(0,s.jsx)(n.code,{children:"session_id"}),", and you effectively have one chat session."]}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.code,{children:"session_id"})," value can be configured in the ",(0,s.jsx)(n.strong,{children:"Advanced Settings"})," of the ",(0,s.jsx)(n.strong,{children:"Chat Input"})," and ",(0,s.jsx)(n.strong,{children:"Chat Output"})," components."]}),"\n",(0,s.jsxs)(n.p,{children:["To have more than one session in a single flow, pass a specific session ID to a flow with the ",(0,s.jsx)(n.code,{children:"session_id"})," parameter in the URL. All the components in the flow will automatically use this ",(0,s.jsx)(n.code,{children:"session_id"})," value."]}),"\n",(0,s.jsx)(n.p,{children:"To post a message to a flow with a specific Session ID with curl, enter the following command:"}),"\n",(0,s.jsx)(h.Code,{codeConfig:p,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://localhost:7860/api/v1/run/',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:"#79C0FF"}}},{content:"'Content-Type: application/json' ",props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" -d ",props:{style:{color:"#79C0FF"}}},{content:"'{",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "session_id": "custom_session_123",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "input_value": "message",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "input_type": "chat",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "output_type": "chat"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" }'",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,s.jsxs)(n.p,{children:["Check your flow's ",(0,s.jsx)(n.strong,{children:"Playground"}),". In addition to the messages stored for the Default Session, a new session is started with your custom Session ID."]}),"\n",(0,s.jsx)(n.h2,{id:"work-with-images-in-the-playground",children:"Work with images in the Playground"}),"\n",(0,s.jsx)(n.p,{children:"The Playground supports handling images in base64 format, allowing you to work with image data directly in your flows."}),"\n",(0,s.jsx)(n.p,{children:"The Playground accepts the following image formats:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"PNG"}),"\n",(0,s.jsx)(n.li,{children:"JPG/JPEG"}),"\n",(0,s.jsx)(n.li,{children:"GIF"}),"\n",(0,s.jsx)(n.li,{children:"BMP"}),"\n",(0,s.jsx)(n.li,{children:"WebP"}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"You can work with base64 images in the Playground in several ways:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Direct Upload"}),": Use the image upload button in the chat interface to upload images directly."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Drag and Drop"}),": Drag and drop image files into the chat interface."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Programmatic Input"}),": Send base64-encoded images through the API."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"This example sends a base64-encoded image to the Playground using curl:"}),"\n",(0,s.jsx)(h.Code,{codeConfig:p,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://localhost:7860/api/v1/run/',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:"-d ",props:{style:{color:"#C9D1D9"}}},{content:"'{",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "session_id": "custom_session_123",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "input_value": "What is in this image?",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "input_type": "chat",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "output_type": "chat",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "files": ["data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."]',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"}'",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,s.jsx)(n.p,{children:"The image is displayed in the chat interface and can be processed by your flow components."}),"\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.jsx)(n.a,{href:"/session-id",children:"Session ID"})}),"\n"]})]})}function m(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(g,{...e})}):g(e)}function f(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}},17886:(e,n,o)=>{o.d(n,{A:()=>i});o(96540);var t=o(64058),s=o(74848);function i({name:e,...n}){const o=t[e];return o?(0,s.jsx)(o,{...n}):null}},75918:(e,n,o)=>{o.d(n,{A:()=>t});const t=o.p+"assets/images/playground-b2c623fb6849024570bc9bd5285309f5.png"},85629:(e,n,o)=>{o.d(n,{A:()=>t});const t=o.p+"assets/images/messages-logs-aec5213dc668ee51c2a40eab2ba0718c.png"}}]);
\ No newline at end of file
diff --git a/assets/js/0e5205b8.d620ee3e.js b/assets/js/0e5205b8.d620ee3e.js
deleted file mode 100644
index 8f75862b79..0000000000
--- a/assets/js/0e5205b8.d620ee3e.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[3968],{10233:(e,n,o)=>{o.r(n),o.d(n,{CH:()=>h,assets:()=>d,chCodeConfig:()=>p,contentTitle:()=>a,default:()=>m,frontMatter:()=>l,metadata:()=>s,toc:()=>u});const s=JSON.parse('{"id":"Concepts/concepts-playground","title":"Playground","description":"The\xa0Playground\xa0is a dynamic interface designed for real-time interaction with LLMs, allowing users to chat, access memories, and monitor inputs and outputs. Here, users can directly prototype their models, making adjustments and observing different outcomes.","source":"@site/docs/Concepts/concepts-playground.md","sourceDirName":"Concepts","slug":"/concepts-playground","permalink":"/concepts-playground","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Playground","slug":"/concepts-playground"},"sidebar":"docs","previous":{"title":"Langflow overview","permalink":"/concepts-overview"},"next":{"title":"Components","permalink":"/concepts-components"}}');var t=o(74848),i=o(28453),r=o(24754),c=o(17886);const l={title:"Playground",slug:"/concepts-playground"},a=void 0,d={},h={annotations:r.hk,Code:r.Cy},p={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},u=[{value:"Run a flow in the playgound",id:"run-a-flow-in-the-playgound",level:2},{value:"View playground messages by session ID",id:"view-playground-messages-by-session-id",level:2},{value:"Use custom Session IDs for multiple user interactions",id:"use-custom-session-ids-for-multiple-user-interactions",level:2},{value:"Work with images in the Playground",id:"work-with-images-in-the-playground",level:2},{value:"See also",id:"see-also",level:2}];function g(e){const n={a:"a",code:"code",h2:"h2",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return h||f("CH",!1),h.Code||f("CH.Code",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.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,t.jsxs)(n.p,{children:["The\xa0",(0,t.jsx)(n.strong,{children:"Playground"}),"\xa0is a dynamic interface designed for real-time interaction with LLMs, allowing users to chat, access memories, and monitor inputs and outputs. Here, users can directly prototype their models, making adjustments and observing different outcomes."]}),"\n",(0,t.jsxs)(n.p,{children:["As long as you have an ",(0,t.jsx)(n.a,{href:"/components-io",children:"Input or Output"})," component working, you can open it by clicking the\xa0",(0,t.jsx)(n.strong,{children:"Playground"}),"\xa0button.\nThe Playground's window arrangement changes depending on what components are being used."]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:o(75918).A+"",width:"3244",height:"1776"})}),"\n",(0,t.jsx)(n.h2,{id:"run-a-flow-in-the-playgound",children:"Run a flow in the playgound"}),"\n",(0,t.jsxs)(n.p,{children:["When you run a flow in the ",(0,t.jsx)(n.strong,{children:"Playground"}),", Langflow calls the ",(0,t.jsx)(n.code,{children:"/build/$FLOW_ID/flow"})," endpoint in ",(0,t.jsx)(n.a,{href:"https://github.com/langflow-ai/langflow/blob/main/src/backend/base/langflow/api/v1/chat.py#L162",children:"chat.py"}),". This call retrieves the flow data, builds a graph, and executes the graph. As each component (or node) is executed, the ",(0,t.jsx)(n.code,{children:"build_vertex"})," function calls ",(0,t.jsx)(n.code,{children:"build_and_run"}),", which may call the individual components' ",(0,t.jsx)(n.code,{children:"def_build"})," method, if it exists. If a component doesn't have a ",(0,t.jsx)(n.code,{children:"def_build"})," function, the build still returns a component."]}),"\n",(0,t.jsxs)(n.p,{children:["The ",(0,t.jsx)(n.code,{children:"build"})," function allows components to execute logic at runtime. For example, the ",(0,t.jsx)(n.a,{href:"https://github.com/langflow-ai/langflow/blob/main/src/backend/base/langflow/components/langchain_utilities/recursive_character.py",children:"Recursive character text splitter"})," is a child of the ",(0,t.jsx)(n.code,{children:"LCTextSplitterComponent"})," class. When text needs to be processed, the parent class's ",(0,t.jsx)(n.code,{children:"build"})," method is called, which creates a ",(0,t.jsx)(n.code,{children:"RecursiveCharacterTextSplitter"})," object and uses it to split the text according to the defined parameters. The split text is then passed on to the next component. This all occurs when the component is built."]}),"\n",(0,t.jsx)(n.h2,{id:"view-playground-messages-by-session-id",children:"View playground messages by session ID"}),"\n",(0,t.jsxs)(n.p,{children:["When you send a message from the ",(0,t.jsx)(n.strong,{children:"Playground"})," interface, the interactions are stored in the ",(0,t.jsx)(n.strong,{children:"Message Logs"})," by ",(0,t.jsx)(n.code,{children:"session_id"}),".\nA single flow can have multiple chats, and different flows can share the same chat. Each chat will have a different ",(0,t.jsx)(n.code,{children:"session_id"}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["To view messages by ",(0,t.jsx)(n.code,{children:"session_id"})," within the Playground, click the ",(0,t.jsx)(c.A,{name:"Ellipsis","aria-label":"Horizontal ellipsis"})," menu of any chat session, and then select ",(0,t.jsx)(n.strong,{children:"Message Logs"}),"."]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:o(85629).A+"",width:"3250",height:"1778"})}),"\n",(0,t.jsx)(n.p,{children:"Individual messages in chat memory can be edited or deleted. Modifying these memories influences the behavior of the chatbot responses."}),"\n",(0,t.jsxs)(n.p,{children:["To learn more about chat memories in Langflow, see ",(0,t.jsx)(n.a,{href:"/components-memories",children:"Memory components"}),"."]}),"\n",(0,t.jsx)(n.h2,{id:"use-custom-session-ids-for-multiple-user-interactions",children:"Use custom Session IDs for multiple user interactions"}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"session_id"})," values are used to track user interactions in a flow.\nBy default, if the ",(0,t.jsx)(n.code,{children:"session_id"})," value is empty, it is set to the same value as the ",(0,t.jsx)(n.code,{children:"flow_id"}),". In this case, every chat call uses the same ",(0,t.jsx)(n.code,{children:"session_id"}),", and you effectively have one chat session."]}),"\n",(0,t.jsxs)(n.p,{children:["The ",(0,t.jsx)(n.code,{children:"session_id"})," value can be configured in the ",(0,t.jsx)(n.strong,{children:"Advanced Settings"})," of the ",(0,t.jsx)(n.strong,{children:"Chat Input"})," and ",(0,t.jsx)(n.strong,{children:"Chat Output"})," components."]}),"\n",(0,t.jsxs)(n.p,{children:["To have more than one session in a single flow, pass a specific session ID to a flow with the ",(0,t.jsx)(n.code,{children:"session_id"})," parameter in the URL. All the components in the flow will automatically use this ",(0,t.jsx)(n.code,{children:"session_id"})," value."]}),"\n",(0,t.jsx)(n.p,{children:"To post a message to a flow with a specific Session ID with curl, enter the following command:"}),"\n",(0,t.jsx)(h.Code,{codeConfig:p,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://localhost:7860/api/v1/run/',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:"#79C0FF"}}},{content:"'Content-Type: application/json' ",props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" -d ",props:{style:{color:"#79C0FF"}}},{content:"'{",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "session_id": "custom_session_123",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "input_value": "message",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "input_type": "chat",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "output_type": "chat"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" }'",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,t.jsxs)(n.p,{children:["Check your flow's ",(0,t.jsx)(n.strong,{children:"Playground"}),". In addition to the messages stored for the Default Session, a new session is started with your custom Session ID."]}),"\n",(0,t.jsx)(n.h2,{id:"work-with-images-in-the-playground",children:"Work with images in the Playground"}),"\n",(0,t.jsx)(n.p,{children:"The Playground supports handling images in base64 format, allowing you to work with image data directly in your flows."}),"\n",(0,t.jsx)(n.p,{children:"The Playground accepts the following image formats:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"PNG"}),"\n",(0,t.jsx)(n.li,{children:"JPG/JPEG"}),"\n",(0,t.jsx)(n.li,{children:"GIF"}),"\n",(0,t.jsx)(n.li,{children:"BMP"}),"\n",(0,t.jsx)(n.li,{children:"WebP"}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:"You can work with base64 images in the Playground in several ways:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Direct Upload"}),": Use the image upload button in the chat interface to upload images directly."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Drag and Drop"}),": Drag and drop image files into the chat interface."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Programmatic Input"}),": Send base64-encoded images through the API."]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:"This example sends a base64-encoded image to the Playground using curl:"}),"\n",(0,t.jsx)(h.Code,{codeConfig:p,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://localhost:7860/api/v1/run/',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:"-d ",props:{style:{color:"#C9D1D9"}}},{content:"'{",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "session_id": "custom_session_123",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "input_value": "What is in this image?",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "input_type": "chat",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "output_type": "chat",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "files": ["data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."]',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"}'",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,t.jsx)(n.p,{children:"The image is displayed in the chat interface and can be processed by your flow components."}),"\n",(0,t.jsx)(n.h2,{id:"see-also",children:"See also"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.a,{href:"/session-id",children:"Session ID"})}),"\n"]})]})}function m(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(g,{...e})}):g(e)}function f(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}},17886:(e,n,o)=>{o.d(n,{A:()=>i});o(96540);var s=o(64058),t=o(74848);function i({name:e,...n}){const o=s[e];return o?(0,t.jsx)(o,{...n}):null}},75918:(e,n,o)=>{o.d(n,{A:()=>s});const s=o.p+"assets/images/playground-b2c623fb6849024570bc9bd5285309f5.png"},85629:(e,n,o)=>{o.d(n,{A:()=>s});const s=o.p+"assets/images/messages-logs-aec5213dc668ee51c2a40eab2ba0718c.png"}}]);
\ No newline at end of file
diff --git a/assets/js/2ab0d4f5.3496b231.js b/assets/js/2ab0d4f5.34f9cf71.js
similarity index 50%
rename from assets/js/2ab0d4f5.3496b231.js
rename to assets/js/2ab0d4f5.34f9cf71.js
index b6c3c06483..c761f07080 100644
--- a/assets/js/2ab0d4f5.3496b231.js
+++ b/assets/js/2ab0d4f5.34f9cf71.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.4.3"},"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 \\"ipsume\\": \\"\\"\\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.4.3"},"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 \\"adipisicing25\\": \\"\\",\\n \\"culpa1\\": \\"\\"\\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/3ae94ad4.53504ec0.js b/assets/js/3ae94ad4.39d01eb4.js
similarity index 76%
rename from assets/js/3ae94ad4.53504ec0.js
rename to assets/js/3ae94ad4.39d01eb4.js
index 68fd1f0796..81545c90b6 100644
--- a/assets/js/3ae94ad4.53504ec0.js
+++ b/assets/js/3ae94ad4.39d01eb4.js
@@ -1 +1 @@
-"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[7408],{6944:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/component-chat-io-9dc92d3f9e5da3722f2e4f4872e3ef59.png"},12018:(e,t,n)=>{n.r(t),n.d(t,{CH:()=>a,assets:()=>h,chCodeConfig:()=>p,contentTitle:()=>l,default:()=>u,frontMatter:()=>d,metadata:()=>s,toc:()=>x});const s=JSON.parse('{"id":"Components/components-io","title":"Inputs and outputs","description":"Input and output components define where data enters and exits your flow.","source":"@site/docs/Components/components-io.md","sourceDirName":"Components","slug":"/components-io","permalink":"/components-io","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Inputs and outputs","slug":"/components-io"},"sidebar":"docs","previous":{"title":"Helpers","permalink":"/components-helpers"},"next":{"title":"Logic","permalink":"/components-logic"}}');var o=n(74848),r=n(28453),c=n(24754),i=n(17886);const d={title:"Inputs and outputs",slug:"/components-io"},l="Input and output components in Langflow",h={},a={annotations:c.hk,Code:c.Cy},p={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},x=[{value:"Chat Input",id:"chat-input",level:2},{value:"Message method",id:"message-method",level:3},{value:"Text Input",id:"text-input",level:2},{value:"Chat Output",id:"chat-output",level:2},{value:"Text Output",id:"text-output",level:2},{value:"Chat components example flow",id:"chat-components-example-flow",level:2},{value:"Send chat messages with the API",id:"send-chat-messages-with-the-api",level:3},{value:"See also",id:"see-also",level:2}];function j(e){const t={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components},{Details:s}=t;return a||g("CH",!1),a.Code||g("CH.Code",!0),s||g("Details",!0),(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("style",{dangerouslySetInnerHTML:{__html:'[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }'}}),"\n","\n",(0,o.jsx)(t.header,{children:(0,o.jsx)(t.h1,{id:"input-and-output-components-in-langflow",children:"Input and output components in Langflow"})}),"\n",(0,o.jsx)(t.p,{children:"Input and output components define where data enters and exits your flow."}),"\n",(0,o.jsxs)(t.p,{children:["Both components accept user input and return a ",(0,o.jsx)(t.code,{children:"Message"})," object, but serve different purposes."]}),"\n",(0,o.jsxs)(t.p,{children:["The ",(0,o.jsx)(t.strong,{children:"Text Input"})," component accepts a text string input and returns a ",(0,o.jsx)(t.code,{children:"Message"})," object containing only the input text. The output does not appear in the ",(0,o.jsx)(t.strong,{children:"Playground"}),"."]}),"\n",(0,o.jsxs)(t.p,{children:["The ",(0,o.jsx)(t.strong,{children:"Chat Input"})," component accepts multiple input types including text, files, and metadata, and returns a ",(0,o.jsx)(t.code,{children:"Message"})," object containing the text along with sender information, session ID, and file attachments."]}),"\n",(0,o.jsxs)(t.p,{children:["The ",(0,o.jsx)(t.strong,{children:"Chat Input"})," component provides an interactive chat interface in the ",(0,o.jsx)(t.strong,{children:"Playground"}),"."]}),"\n",(0,o.jsx)(t.h2,{id:"chat-input",children:"Chat Input"}),"\n",(0,o.jsxs)(t.p,{children:["This component collects user input as ",(0,o.jsx)(t.code,{children:"Text"})," strings from the chat and wraps it in a ",(0,o.jsx)(t.a,{href:"/concepts-objects#message-object",children:"Message"})," object that includes the input text, sender information, session ID, file attachments, and styling properties."]}),"\n",(0,o.jsx)(t.p,{children:"It can optionally store the message in a chat history."}),"\n",(0,o.jsxs)(s,{children:[(0,o.jsx)("summary",{children:"Parameters"}),(0,o.jsx)(t.p,{children:(0,o.jsx)(t.strong,{children:"Inputs"})}),(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Name"}),(0,o.jsx)(t.th,{children:"Display Name"}),(0,o.jsx)(t.th,{children:"Info"})]})}),(0,o.jsxs)(t.tbody,{children:[(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"input_value"}),(0,o.jsx)(t.td,{children:"Text"}),(0,o.jsx)(t.td,{children:"The Message to be passed as input."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"should_store_message"}),(0,o.jsx)(t.td,{children:"Store Messages"}),(0,o.jsx)(t.td,{children:"Store the message in the history."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"sender"}),(0,o.jsx)(t.td,{children:"Sender Type"}),(0,o.jsx)(t.td,{children:"The type of sender."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"sender_name"}),(0,o.jsx)(t.td,{children:"Sender Name"}),(0,o.jsx)(t.td,{children:"The name of the sender."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"session_id"}),(0,o.jsx)(t.td,{children:"Session ID"}),(0,o.jsx)(t.td,{children:"The unique identifier for the chat session. If empty, the current session ID parameter is used."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"files"}),(0,o.jsx)(t.td,{children:"Files"}),(0,o.jsx)(t.td,{children:"The files to be sent with the message."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"background_color"}),(0,o.jsx)(t.td,{children:"Background Color"}),(0,o.jsx)(t.td,{children:"The background color of the icon."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"chat_icon"}),(0,o.jsx)(t.td,{children:"Icon"}),(0,o.jsx)(t.td,{children:"The icon of the message."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"text_color"}),(0,o.jsx)(t.td,{children:"Text Color"}),(0,o.jsx)(t.td,{children:"The text color of the name."})]})]})]}),(0,o.jsx)(t.p,{children:(0,o.jsx)(t.strong,{children:"Outputs"})}),(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Name"}),(0,o.jsx)(t.th,{children:"Display Name"}),(0,o.jsx)(t.th,{children:"Info"})]})}),(0,o.jsx)(t.tbody,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"message"}),(0,o.jsx)(t.td,{children:"Message"}),(0,o.jsx)(t.td,{children:"The resulting chat message object with all specified properties."})]})})]})]}),"\n",(0,o.jsx)(t.h3,{id:"message-method",children:"Message method"}),"\n",(0,o.jsxs)(t.p,{children:["The ",(0,o.jsx)(t.code,{children:"ChatInput"})," class provides an asynchronous method to create and store a ",(0,o.jsx)(t.code,{children:"Message"})," object based on the input parameters.\nThe ",(0,o.jsx)(t.code,{children:"Message"})," object is created in the ",(0,o.jsx)(t.code,{children:"message_response"})," method of the ChatInput class using the ",(0,o.jsx)(t.code,{children:"Message.create()"})," factory method."]}),"\n",(0,o.jsx)(a.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"message ",props:{style:{color:"#C9D1D9"}}},{content:"= await",props:{style:{color:"#FF7B72"}}},{content:" Message.create(",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" text",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"self",props:{style:{color:"#79C0FF"}}},{content:".input_value,",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" sender",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"self",props:{style:{color:"#79C0FF"}}},{content:".sender,",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" sender_name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"self",props:{style:{color:"#79C0FF"}}},{content:".sender_name,",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" session_id",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"self",props:{style:{color:"#79C0FF"}}},{content:".session_id,",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" files",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"self",props:{style:{color:"#79C0FF"}}},{content:".files,",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" properties",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"{",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "background_color"',props:{style:{color:"#A5D6FF"}}},{content:": background_color,",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "text_color"',props:{style:{color:"#A5D6FF"}}},{content:": text_color,",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "icon"',props:{style:{color:"#A5D6FF"}}},{content:": icon,",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" },",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:")",props:{style:{color:"#C9D1D9"}}}]}],lang:"python"},annotations:[]}]}),"\n",(0,o.jsx)(t.h2,{id:"text-input",children:"Text Input"}),"\n",(0,o.jsxs)(t.p,{children:["The ",(0,o.jsx)(t.strong,{children:"Text Input"})," component accepts a text string input and returns a ",(0,o.jsx)(t.code,{children:"Message"})," object containing only the input text."]}),"\n",(0,o.jsxs)(t.p,{children:["The output does not appear in the ",(0,o.jsx)(t.strong,{children:"Playground"}),"."]}),"\n",(0,o.jsxs)(s,{children:[(0,o.jsx)("summary",{children:"Parameters"}),(0,o.jsx)(t.p,{children:(0,o.jsx)(t.strong,{children:"Inputs"})}),(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Name"}),(0,o.jsx)(t.th,{children:"Display Name"}),(0,o.jsx)(t.th,{children:"Info"})]})}),(0,o.jsx)(t.tbody,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"input_value"}),(0,o.jsx)(t.td,{children:"Text"}),(0,o.jsx)(t.td,{children:"The text/content to be passed as output."})]})})]}),(0,o.jsx)(t.p,{children:(0,o.jsx)(t.strong,{children:"Outputs"})}),(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Name"}),(0,o.jsx)(t.th,{children:"Display Name"}),(0,o.jsx)(t.th,{children:"Info"})]})}),(0,o.jsx)(t.tbody,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"text"}),(0,o.jsx)(t.td,{children:"Text"}),(0,o.jsx)(t.td,{children:"The resulting text message."})]})})]})]}),"\n",(0,o.jsx)(t.h2,{id:"chat-output",children:"Chat Output"}),"\n",(0,o.jsxs)(t.p,{children:["The ",(0,o.jsx)(t.strong,{children:"Chat Output"})," component creates a ",(0,o.jsx)(t.a,{href:"/concepts-objects#message-object",children:"Message"})," object that includes the input text, sender information, session ID, and styling properties."]}),"\n",(0,o.jsx)(t.p,{children:"The component accepts the following input types."}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})}),"\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"/concepts-objects#dataframe-object",children:"DataFrame"})}),"\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"/concepts-objects#message-object",children:"Message"})}),"\n"]}),"\n",(0,o.jsxs)(s,{children:[(0,o.jsx)("summary",{children:"Parameters"}),(0,o.jsx)(t.p,{children:(0,o.jsx)(t.strong,{children:"Inputs"})}),(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Name"}),(0,o.jsx)(t.th,{children:"Display Name"}),(0,o.jsx)(t.th,{children:"Info"})]})}),(0,o.jsxs)(t.tbody,{children:[(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"input_value"}),(0,o.jsx)(t.td,{children:"Text"}),(0,o.jsx)(t.td,{children:"The message to be passed as output."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"should_store_message"}),(0,o.jsx)(t.td,{children:"Store Messages"}),(0,o.jsx)(t.td,{children:"The flag to store the message in the history."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"sender"}),(0,o.jsx)(t.td,{children:"Sender Type"}),(0,o.jsx)(t.td,{children:"The type of sender."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"sender_name"}),(0,o.jsx)(t.td,{children:"Sender Name"}),(0,o.jsx)(t.td,{children:"The name of the sender."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"session_id"}),(0,o.jsx)(t.td,{children:"Session ID"}),(0,o.jsx)(t.td,{children:"The unique identifier for the chat session. If empty, the current session ID parameter is used."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"data_template"}),(0,o.jsx)(t.td,{children:"Data Template"}),(0,o.jsx)(t.td,{children:"The template to convert Data to Text. If the option is left empty, it is dynamically set to the Data's text key."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"background_color"}),(0,o.jsx)(t.td,{children:"Background Color"}),(0,o.jsx)(t.td,{children:"The background color of the icon."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"chat_icon"}),(0,o.jsx)(t.td,{children:"Icon"}),(0,o.jsx)(t.td,{children:"The icon of the message."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"text_color"}),(0,o.jsx)(t.td,{children:"Text Color"}),(0,o.jsx)(t.td,{children:"The text color of the name."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"clean_data"}),(0,o.jsx)(t.td,{children:"Basic Clean Data"}),(0,o.jsxs)(t.td,{children:["When enabled, ",(0,o.jsx)(t.code,{children:"DataFrame"})," inputs are cleaned when converted to text. Cleaning removes empty rows, empty lines in cells, and multiple newlines."]})]})]})]}),(0,o.jsx)(t.p,{children:(0,o.jsx)(t.strong,{children:"Outputs"})}),(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Name"}),(0,o.jsx)(t.th,{children:"Display Name"}),(0,o.jsx)(t.th,{children:"Info"})]})}),(0,o.jsx)(t.tbody,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"message"}),(0,o.jsx)(t.td,{children:"Message"}),(0,o.jsx)(t.td,{children:"The resulting chat message object with all specified properties."})]})})]})]}),"\n",(0,o.jsx)(t.h2,{id:"text-output",children:"Text Output"}),"\n",(0,o.jsxs)(t.p,{children:["The ",(0,o.jsx)(t.strong,{children:"Text Output"})," takes a single input of text and returns a ",(0,o.jsx)(t.a,{href:"/concepts-objects#message-object",children:"Message"})," object containing that text."]}),"\n",(0,o.jsxs)(t.p,{children:["The output does not appear in the ",(0,o.jsx)(t.strong,{children:"Playground"}),"."]}),"\n",(0,o.jsxs)(s,{children:[(0,o.jsx)("summary",{children:"Parameters"}),(0,o.jsx)(t.p,{children:(0,o.jsx)(t.strong,{children:"Inputs"})}),(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Name"}),(0,o.jsx)(t.th,{children:"Display Name"}),(0,o.jsx)(t.th,{children:"Info"})]})}),(0,o.jsx)(t.tbody,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"input_value"}),(0,o.jsx)(t.td,{children:"Text"}),(0,o.jsx)(t.td,{children:"The text to be passed as output."})]})})]}),(0,o.jsx)(t.p,{children:(0,o.jsx)(t.strong,{children:"Outputs"})}),(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Name"}),(0,o.jsx)(t.th,{children:"Display Name"}),(0,o.jsx)(t.th,{children:"Info"})]})}),(0,o.jsx)(t.tbody,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"text"}),(0,o.jsx)(t.td,{children:"Text"}),(0,o.jsx)(t.td,{children:"The resulting text message."})]})})]})]}),"\n",(0,o.jsx)(t.h2,{id:"chat-components-example-flow",children:"Chat components example flow"}),"\n",(0,o.jsxs)(t.ol,{children:["\n",(0,o.jsxs)(t.li,{children:["To use the ",(0,o.jsx)(t.strong,{children:"Chat Input"})," and ",(0,o.jsx)(t.strong,{children:"Chat Output"})," components in a flow, connect them to components that accept or send the ",(0,o.jsx)(t.a,{href:"/concepts-objects#message-object",children:"Message"})," type."]}),"\n"]}),"\n",(0,o.jsxs)(t.p,{children:["For this example, connect a ",(0,o.jsx)(t.strong,{children:"Chat Input"})," component to an ",(0,o.jsx)(t.strong,{children:"OpenAI"})," model component's ",(0,o.jsx)(t.strong,{children:"Input"})," port, and then connect the ",(0,o.jsx)(t.strong,{children:"OpenAI"})," model component's ",(0,o.jsx)(t.strong,{children:"Message"})," port to the ",(0,o.jsx)(t.strong,{children:"Chat Output"})," component."]}),"\n",(0,o.jsxs)(t.ol,{start:"2",children:["\n",(0,o.jsxs)(t.li,{children:["In the ",(0,o.jsx)(t.strong,{children:"OpenAI"})," model component, in the ",(0,o.jsx)(t.strong,{children:"OpenAI API Key"})," field, add your ",(0,o.jsx)(t.strong,{children:"OpenAI API key"}),"."]}),"\n"]}),"\n",(0,o.jsx)(t.p,{children:"The flow looks like this:"}),"\n",(0,o.jsx)(t.p,{children:(0,o.jsx)(t.img,{alt:"Chat input and output components connected to an OpenAI model",src:n(6944).A+"",width:"4000",height:"2574"})}),"\n",(0,o.jsxs)(t.ol,{start:"3",children:["\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsxs)(t.p,{children:["To send a message to your flow, open the ",(0,o.jsx)(t.strong,{children:"Playground"}),", and then enter a message.\nThe ",(0,o.jsx)(t.strong,{children:"OpenAI"})," model component responds.\nOptionally, in the ",(0,o.jsx)(t.strong,{children:"OpenAI"})," model component, enter a ",(0,o.jsx)(t.strong,{children:"System Message"})," to control the model's response."]}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsxs)(t.p,{children:["In the Langflow UI, click your flow name, and then click ",(0,o.jsx)(t.strong,{children:"Logs"}),".\nThe ",(0,o.jsx)(t.strong,{children:"Logs"})," pane opens.\nHere, you can inspect your component logs.\n",(0,o.jsx)(t.img,{alt:"Logs pane",src:n(77232).A+"",width:"3200",height:"1716"})]}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsxs)(t.p,{children:["Your first message was sent by the ",(0,o.jsx)(t.strong,{children:"Chat Input"})," component to the ",(0,o.jsx)(t.strong,{children:"OpenAI"})," model component.\nClick ",(0,o.jsx)(t.strong,{children:"Outputs"})," to view the sent message:"]}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(a.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:' "messages": [',props:{}}]},{tokens:[{content:" {",props:{}}]},{tokens:[{content:' "message": "What\'s the recommended way to install Docker on Mac M1?",',props:{}}]},{tokens:[{content:' "sender": "User",',props:{}}]},{tokens:[{content:' "sender_name": "User",',props:{}}]},{tokens:[{content:' "session_id": "Session Apr 21, 17:37:04",',props:{}}]},{tokens:[{content:' "stream_url": null,',props:{}}]},{tokens:[{content:' "component_id": "ChatInput-4WKag",',props:{}}]},{tokens:[{content:' "files": [],',props:{}}]},{tokens:[{content:' "type": "text"',props:{}}]},{tokens:[{content:" }",props:{}}]},{tokens:[{content:" ],",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,o.jsxs)(t.ol,{start:"6",children:["\n",(0,o.jsxs)(t.li,{children:["Your second message was sent by the ",(0,o.jsx)(t.strong,{children:"OpenAI"})," model component to the ",(0,o.jsx)(t.strong,{children:"Chat Output"})," component.\nThis is the raw text output of the model's response.\nThe ",(0,o.jsx)(t.strong,{children:"Chat Output"})," component accepts this text as input and presents it as a formatted message.\nClick ",(0,o.jsx)(t.strong,{children:"Outputs"})," to view the sent message:"]}),"\n"]}),"\n",(0,o.jsx)(a.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:' "outputs":',props:{}}]},{tokens:[{content:' "text_output":',props:{}}]},{tokens:[{content:' "message": "To install Docker on a Mac with an M1 chip, you should use Docker Desktop for Mac, which is optimized for Apple Silicon. Here\'s a step-by-step guide to installing Docker on your M1 Mac:\\n\\n1.',props:{}}]},{tokens:[{content:" ...",props:{}}]},{tokens:[{content:' "type": "text"',props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,o.jsx)(t.admonition,{type:"tip",children:(0,o.jsxs)(t.p,{children:["Optionally, to view the outputs of each component in the flow, click ",(0,o.jsx)(i.A,{name:"TextSearch","aria-label":"Inspect icon"}),"."]})}),"\n",(0,o.jsx)(t.h3,{id:"send-chat-messages-with-the-api",children:"Send chat messages with the API"}),"\n",(0,o.jsxs)(t.p,{children:["The ",(0,o.jsx)(t.strong,{children:"Chat Input"})," component is often the entry point for passing messages to the Langflow API.\nTo send the same example messages programmatically to your Langflow server, do the following:"]}),"\n",(0,o.jsxs)(t.ol,{children:["\n",(0,o.jsxs)(t.li,{children:["To get your Langflow endpoint, click ",(0,o.jsx)(t.strong,{children:"Publish"}),", and then click ",(0,o.jsx)(t.strong,{children:"API access"}),"."]}),"\n",(0,o.jsxs)(t.li,{children:["Copy the command from the ",(0,o.jsx)(t.strong,{children:"cURL"})," tab, and then paste it in your terminal.\nIt looks similar to this:"]}),"\n"]}),"\n",(0,o.jsx)(a.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"curl --request POST \\",props:{}}]},{tokens:[{content:" --url 'http://localhost:7860/api/v1/run/51eed711-4530-4fdc-9bce-5db4351cc73a?stream=false' \\",props:{}}]},{tokens:[{content:" --header 'Content-Type: application/json' \\",props:{}}]},{tokens:[{content:" --data '{",props:{}}]},{tokens:[{content:' "input_value": "What\'s the recommended way to install Docker on Mac M1?",',props:{}}]},{tokens:[{content:' "output_type": "chat",',props:{}}]},{tokens:[{content:' "input_type": "chat"',props:{}}]},{tokens:[{content:"}'",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,o.jsxs)(t.ol,{start:"3",children:["\n",(0,o.jsxs)(t.li,{children:["Modify ",(0,o.jsx)(t.code,{children:"input_value"})," so it contains the question, ",(0,o.jsx)(t.code,{children:"What's the recommended way to install Docker on Mac M1?"}),"."]}),"\n"]}),"\n",(0,o.jsxs)(t.p,{children:["Note the ",(0,o.jsx)(t.code,{children:"output_type"})," and ",(0,o.jsx)(t.code,{children:"input_type"})," parameters that are passed with the message. The ",(0,o.jsx)(t.code,{children:"chat"})," type provides additional configuration options, and the messages appear in the ",(0,o.jsx)(t.strong,{children:"Playground"}),". The ",(0,o.jsx)(t.code,{children:"text"})," type returns only text strings, and does not appear in the ",(0,o.jsx)(t.strong,{children:"Playground"}),"."]}),"\n",(0,o.jsxs)(t.ol,{start:"4",children:["\n",(0,o.jsxs)(t.li,{children:["Add a custom ",(0,o.jsx)(t.code,{children:"session_id"})," to the message's ",(0,o.jsx)(t.code,{children:"data"})," object."]}),"\n"]}),"\n",(0,o.jsx)(a.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"curl --request POST \\",props:{}}]},{tokens:[{content:" --url 'http://localhost:7860/api/v1/run/51eed711-4530-4fdc-9bce-5db4351cc73a?stream=false' \\",props:{}}]},{tokens:[{content:" --header 'Content-Type: application/json' \\",props:{}}]},{tokens:[{content:" --data '{",props:{}}]},{tokens:[{content:' "input_value": "Whats the recommended way to install Docker on Mac M1",',props:{}}]},{tokens:[{content:' "session_id": "docker-question-on-m1",',props:{}}]},{tokens:[{content:' "output_type": "chat",',props:{}}]},{tokens:[{content:' "input_type": "chat"',props:{}}]},{tokens:[{content:"}'",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,o.jsxs)(t.p,{children:["The custom ",(0,o.jsx)(t.code,{children:"session_id"})," value starts a new chat session between your client and the Langflow server, and can be useful in keeping conversations and AI context separate."]}),"\n",(0,o.jsxs)(t.ol,{start:"5",children:["\n",(0,o.jsx)(t.li,{children:"Send the POST request.\nYour request is answered."}),"\n",(0,o.jsxs)(t.li,{children:["Navigate to the ",(0,o.jsx)(t.strong,{children:"Playground"}),".\nA new chat session called ",(0,o.jsx)(t.code,{children:"docker-question-on-m1"})," has appeared, using your unique ",(0,o.jsx)(t.code,{children:"session_id"}),"."]}),"\n",(0,o.jsxs)(t.li,{children:["To modify additional parameters with ",(0,o.jsx)(t.strong,{children:"Tweaks"})," for your ",(0,o.jsx)(t.strong,{children:"Chat Input"})," and ",(0,o.jsx)(t.strong,{children:"Chat Output"})," components, click ",(0,o.jsx)(t.strong,{children:"Publish"}),", and then click ",(0,o.jsx)(t.strong,{children:"API access"}),"."]}),"\n",(0,o.jsxs)(t.li,{children:["Click ",(0,o.jsx)(t.strong,{children:"Tweaks"})," to modify parameters in the component's ",(0,o.jsx)(t.code,{children:"data"})," object.\nFor example, disabling storing messages from the ",(0,o.jsx)(t.strong,{children:"Chat Input"})," component adds a ",(0,o.jsx)(t.strong,{children:"Tweak"})," to your command:"]}),"\n"]}),"\n",(0,o.jsx)(a.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"curl --request POST \\",props:{}}]},{tokens:[{content:" --url 'http://localhost:7860/api/v1/run/51eed711-4530-4fdc-9bce-5db4351cc73a?stream=false' \\",props:{}}]},{tokens:[{content:" --header 'Content-Type: application/json' \\",props:{}}]},{tokens:[{content:" --data '{",props:{}}]},{tokens:[{content:' "input_value": "Text to input to the flow",',props:{}}]},{tokens:[{content:' "output_type": "chat",',props:{}}]},{tokens:[{content:' "input_type": "chat",',props:{}}]},{tokens:[{content:' "tweaks": {',props:{}}]},{tokens:[{content:' "ChatInput-4WKag": {',props:{}}]},{tokens:[{content:' "should_store_message": false',props:{}}]},{tokens:[{content:" }",props:{}}]},{tokens:[{content:" }",props:{}}]},{tokens:[{content:"}'",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,o.jsxs)(t.p,{children:["To confirm your command is using the tweak, navigate to the ",(0,o.jsx)(t.strong,{children:"Logs"})," pane and view the request from the ",(0,o.jsx)(t.strong,{children:"Chat Input"})," component.\nThe value for ",(0,o.jsx)(t.code,{children:"should_store_message"})," is ",(0,o.jsx)(t.code,{children:"false"}),"."]}),"\n",(0,o.jsx)(t.h2,{id:"see-also",children:"See also"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"/session-id",children:"Session ID"})}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(j,{...e})}):j(e)}function g(e,t){throw new Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}},17886:(e,t,n)=>{n.d(t,{A:()=>r});n(96540);var s=n(64058),o=n(74848);function r({name:e,...t}){const n=s[e];return n?(0,o.jsx)(n,{...t}):null}},77232:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/logs-6ae22cc6a87b128cbc0c7f4559b47f10.png"}}]);
\ No newline at end of file
+"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[7408],{6944:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/component-chat-io-9dc92d3f9e5da3722f2e4f4872e3ef59.png"},12018:(e,t,n)=>{n.r(t),n.d(t,{CH:()=>a,assets:()=>h,chCodeConfig:()=>p,contentTitle:()=>l,default:()=>u,frontMatter:()=>d,metadata:()=>s,toc:()=>x});const s=JSON.parse('{"id":"Components/components-io","title":"Inputs and outputs","description":"Input and output components define where data enters and exits your flow.","source":"@site/docs/Components/components-io.md","sourceDirName":"Components","slug":"/components-io","permalink":"/components-io","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Inputs and outputs","slug":"/components-io"},"sidebar":"docs","previous":{"title":"Helpers","permalink":"/components-helpers"},"next":{"title":"Logic","permalink":"/components-logic"}}');var o=n(74848),r=n(28453),c=n(24754),i=n(17886);const d={title:"Inputs and outputs",slug:"/components-io"},l="Input and output components in Langflow",h={},a={annotations:c.hk,Code:c.Cy},p={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},x=[{value:"Chat Input",id:"chat-input",level:2},{value:"Message method",id:"message-method",level:3},{value:"Text Input",id:"text-input",level:2},{value:"Chat Output",id:"chat-output",level:2},{value:"Text Output",id:"text-output",level:2},{value:"Chat components example flow",id:"chat-components-example-flow",level:2},{value:"Send chat messages with the API",id:"send-chat-messages-with-the-api",level:3},{value:"See also",id:"see-also",level:2}];function j(e){const t={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components},{Details:s}=t;return a||g("CH",!1),a.Code||g("CH.Code",!0),s||g("Details",!0),(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("style",{dangerouslySetInnerHTML:{__html:'[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }'}}),"\n","\n",(0,o.jsx)(t.header,{children:(0,o.jsx)(t.h1,{id:"input-and-output-components-in-langflow",children:"Input and output components in Langflow"})}),"\n",(0,o.jsx)(t.p,{children:"Input and output components define where data enters and exits your flow."}),"\n",(0,o.jsxs)(t.p,{children:["Both components accept user input and return a ",(0,o.jsx)(t.code,{children:"Message"})," object, but serve different purposes."]}),"\n",(0,o.jsxs)(t.p,{children:["The ",(0,o.jsx)(t.strong,{children:"Text Input"})," component accepts a text string input and returns a ",(0,o.jsx)(t.code,{children:"Message"})," object containing only the input text. The output does not appear in the ",(0,o.jsx)(t.strong,{children:"Playground"}),"."]}),"\n",(0,o.jsxs)(t.p,{children:["The ",(0,o.jsx)(t.strong,{children:"Chat Input"})," component accepts multiple input types including text, files, and metadata, and returns a ",(0,o.jsx)(t.code,{children:"Message"})," object containing the text along with sender information, session ID, and file attachments."]}),"\n",(0,o.jsxs)(t.p,{children:["The ",(0,o.jsx)(t.strong,{children:"Chat Input"})," component provides an interactive chat interface in the ",(0,o.jsx)(t.strong,{children:"Playground"}),"."]}),"\n",(0,o.jsx)(t.h2,{id:"chat-input",children:"Chat Input"}),"\n",(0,o.jsxs)(t.p,{children:["This component collects user input as ",(0,o.jsx)(t.code,{children:"Text"})," strings from the chat and wraps it in a ",(0,o.jsx)(t.a,{href:"/concepts-objects#message-object",children:"Message"})," object that includes the input text, sender information, session ID, file attachments, and styling properties."]}),"\n",(0,o.jsx)(t.p,{children:"It can optionally store the message in a chat history."}),"\n",(0,o.jsxs)(s,{children:[(0,o.jsx)("summary",{children:"Parameters"}),(0,o.jsx)(t.p,{children:(0,o.jsx)(t.strong,{children:"Inputs"})}),(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Name"}),(0,o.jsx)(t.th,{children:"Display Name"}),(0,o.jsx)(t.th,{children:"Info"})]})}),(0,o.jsxs)(t.tbody,{children:[(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"input_value"}),(0,o.jsx)(t.td,{children:"Text"}),(0,o.jsx)(t.td,{children:"The Message to be passed as input."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"should_store_message"}),(0,o.jsx)(t.td,{children:"Store Messages"}),(0,o.jsx)(t.td,{children:"Store the message in the history."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"sender"}),(0,o.jsx)(t.td,{children:"Sender Type"}),(0,o.jsx)(t.td,{children:"The type of sender."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"sender_name"}),(0,o.jsx)(t.td,{children:"Sender Name"}),(0,o.jsx)(t.td,{children:"The name of the sender."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"session_id"}),(0,o.jsx)(t.td,{children:"Session ID"}),(0,o.jsx)(t.td,{children:"The unique identifier for the chat session. If empty, the current session ID parameter is used."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"files"}),(0,o.jsx)(t.td,{children:"Files"}),(0,o.jsx)(t.td,{children:"The files to be sent with the message."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"background_color"}),(0,o.jsx)(t.td,{children:"Background Color"}),(0,o.jsx)(t.td,{children:"The background color of the icon."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"chat_icon"}),(0,o.jsx)(t.td,{children:"Icon"}),(0,o.jsx)(t.td,{children:"The icon of the message."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"text_color"}),(0,o.jsx)(t.td,{children:"Text Color"}),(0,o.jsx)(t.td,{children:"The text color of the name."})]})]})]}),(0,o.jsx)(t.p,{children:(0,o.jsx)(t.strong,{children:"Outputs"})}),(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Name"}),(0,o.jsx)(t.th,{children:"Display Name"}),(0,o.jsx)(t.th,{children:"Info"})]})}),(0,o.jsx)(t.tbody,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"message"}),(0,o.jsx)(t.td,{children:"Message"}),(0,o.jsx)(t.td,{children:"The resulting chat message object with all specified properties."})]})})]})]}),"\n",(0,o.jsx)(t.h3,{id:"message-method",children:"Message method"}),"\n",(0,o.jsxs)(t.p,{children:["The ",(0,o.jsx)(t.code,{children:"ChatInput"})," class provides an asynchronous method to create and store a ",(0,o.jsx)(t.code,{children:"Message"})," object based on the input parameters.\nThe ",(0,o.jsx)(t.code,{children:"Message"})," object is created in the ",(0,o.jsx)(t.code,{children:"message_response"})," method of the ChatInput class using the ",(0,o.jsx)(t.code,{children:"Message.create()"})," factory method."]}),"\n",(0,o.jsx)(a.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"message ",props:{style:{color:"#C9D1D9"}}},{content:"= await",props:{style:{color:"#FF7B72"}}},{content:" Message.create(",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" text",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"self",props:{style:{color:"#79C0FF"}}},{content:".input_value,",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" sender",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"self",props:{style:{color:"#79C0FF"}}},{content:".sender,",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" sender_name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"self",props:{style:{color:"#79C0FF"}}},{content:".sender_name,",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" session_id",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"self",props:{style:{color:"#79C0FF"}}},{content:".session_id,",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" files",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"self",props:{style:{color:"#79C0FF"}}},{content:".files,",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" properties",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"{",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "background_color"',props:{style:{color:"#A5D6FF"}}},{content:": background_color,",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "text_color"',props:{style:{color:"#A5D6FF"}}},{content:": text_color,",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "icon"',props:{style:{color:"#A5D6FF"}}},{content:": icon,",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" },",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:")",props:{style:{color:"#C9D1D9"}}}]}],lang:"python"},annotations:[]}]}),"\n",(0,o.jsx)(t.h2,{id:"text-input",children:"Text Input"}),"\n",(0,o.jsxs)(t.p,{children:["The ",(0,o.jsx)(t.strong,{children:"Text Input"})," component accepts a text string input and returns a ",(0,o.jsx)(t.code,{children:"Message"})," object containing only the input text."]}),"\n",(0,o.jsxs)(t.p,{children:["The output does not appear in the ",(0,o.jsx)(t.strong,{children:"Playground"}),"."]}),"\n",(0,o.jsxs)(s,{children:[(0,o.jsx)("summary",{children:"Parameters"}),(0,o.jsx)(t.p,{children:(0,o.jsx)(t.strong,{children:"Inputs"})}),(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Name"}),(0,o.jsx)(t.th,{children:"Display Name"}),(0,o.jsx)(t.th,{children:"Info"})]})}),(0,o.jsx)(t.tbody,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"input_value"}),(0,o.jsx)(t.td,{children:"Text"}),(0,o.jsx)(t.td,{children:"The text/content to be passed as output."})]})})]}),(0,o.jsx)(t.p,{children:(0,o.jsx)(t.strong,{children:"Outputs"})}),(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Name"}),(0,o.jsx)(t.th,{children:"Display Name"}),(0,o.jsx)(t.th,{children:"Info"})]})}),(0,o.jsx)(t.tbody,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"text"}),(0,o.jsx)(t.td,{children:"Text"}),(0,o.jsx)(t.td,{children:"The resulting text message."})]})})]})]}),"\n",(0,o.jsx)(t.h2,{id:"chat-output",children:"Chat Output"}),"\n",(0,o.jsxs)(t.p,{children:["The ",(0,o.jsx)(t.strong,{children:"Chat Output"})," component creates a ",(0,o.jsx)(t.a,{href:"/concepts-objects#message-object",children:"Message"})," object that includes the input text, sender information, session ID, and styling properties."]}),"\n",(0,o.jsx)(t.p,{children:"The component accepts the following input types."}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})}),"\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"/concepts-objects#dataframe-object",children:"DataFrame"})}),"\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"/concepts-objects#message-object",children:"Message"})}),"\n"]}),"\n",(0,o.jsxs)(s,{children:[(0,o.jsx)("summary",{children:"Parameters"}),(0,o.jsx)(t.p,{children:(0,o.jsx)(t.strong,{children:"Inputs"})}),(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Name"}),(0,o.jsx)(t.th,{children:"Display Name"}),(0,o.jsx)(t.th,{children:"Info"})]})}),(0,o.jsxs)(t.tbody,{children:[(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"input_value"}),(0,o.jsx)(t.td,{children:"Text"}),(0,o.jsx)(t.td,{children:"The message to be passed as output."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"should_store_message"}),(0,o.jsx)(t.td,{children:"Store Messages"}),(0,o.jsx)(t.td,{children:"The flag to store the message in the history."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"sender"}),(0,o.jsx)(t.td,{children:"Sender Type"}),(0,o.jsx)(t.td,{children:"The type of sender."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"sender_name"}),(0,o.jsx)(t.td,{children:"Sender Name"}),(0,o.jsx)(t.td,{children:"The name of the sender."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"session_id"}),(0,o.jsx)(t.td,{children:"Session ID"}),(0,o.jsx)(t.td,{children:"The unique identifier for the chat session. If empty, the current session ID parameter is used."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"data_template"}),(0,o.jsx)(t.td,{children:"Data Template"}),(0,o.jsx)(t.td,{children:"The template to convert Data to Text. If the option is left empty, it is dynamically set to the Data's text key."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"background_color"}),(0,o.jsx)(t.td,{children:"Background Color"}),(0,o.jsx)(t.td,{children:"The background color of the icon."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"chat_icon"}),(0,o.jsx)(t.td,{children:"Icon"}),(0,o.jsx)(t.td,{children:"The icon of the message."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"text_color"}),(0,o.jsx)(t.td,{children:"Text Color"}),(0,o.jsx)(t.td,{children:"The text color of the name."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"clean_data"}),(0,o.jsx)(t.td,{children:"Basic Clean Data"}),(0,o.jsxs)(t.td,{children:["When enabled, ",(0,o.jsx)(t.code,{children:"DataFrame"})," inputs are cleaned when converted to text. Cleaning removes empty rows, empty lines in cells, and multiple newlines."]})]})]})]}),(0,o.jsx)(t.p,{children:(0,o.jsx)(t.strong,{children:"Outputs"})}),(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Name"}),(0,o.jsx)(t.th,{children:"Display Name"}),(0,o.jsx)(t.th,{children:"Info"})]})}),(0,o.jsx)(t.tbody,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"message"}),(0,o.jsx)(t.td,{children:"Message"}),(0,o.jsx)(t.td,{children:"The resulting chat message object with all specified properties."})]})})]})]}),"\n",(0,o.jsx)(t.h2,{id:"text-output",children:"Text Output"}),"\n",(0,o.jsxs)(t.p,{children:["The ",(0,o.jsx)(t.strong,{children:"Text Output"})," takes a single input of text and returns a ",(0,o.jsx)(t.a,{href:"/concepts-objects#message-object",children:"Message"})," object containing that text."]}),"\n",(0,o.jsxs)(t.p,{children:["The output does not appear in the ",(0,o.jsx)(t.strong,{children:"Playground"}),"."]}),"\n",(0,o.jsxs)(s,{children:[(0,o.jsx)("summary",{children:"Parameters"}),(0,o.jsx)(t.p,{children:(0,o.jsx)(t.strong,{children:"Inputs"})}),(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Name"}),(0,o.jsx)(t.th,{children:"Display Name"}),(0,o.jsx)(t.th,{children:"Info"})]})}),(0,o.jsx)(t.tbody,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"input_value"}),(0,o.jsx)(t.td,{children:"Text"}),(0,o.jsx)(t.td,{children:"The text to be passed as output."})]})})]}),(0,o.jsx)(t.p,{children:(0,o.jsx)(t.strong,{children:"Outputs"})}),(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Name"}),(0,o.jsx)(t.th,{children:"Display Name"}),(0,o.jsx)(t.th,{children:"Info"})]})}),(0,o.jsx)(t.tbody,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"text"}),(0,o.jsx)(t.td,{children:"Text"}),(0,o.jsx)(t.td,{children:"The resulting text message."})]})})]})]}),"\n",(0,o.jsx)(t.h2,{id:"chat-components-example-flow",children:"Chat components example flow"}),"\n",(0,o.jsxs)(t.ol,{children:["\n",(0,o.jsxs)(t.li,{children:["To use the ",(0,o.jsx)(t.strong,{children:"Chat Input"})," and ",(0,o.jsx)(t.strong,{children:"Chat Output"})," components in a flow, connect them to components that accept or send the ",(0,o.jsx)(t.a,{href:"/concepts-objects#message-object",children:"Message"})," type."]}),"\n"]}),"\n",(0,o.jsxs)(t.p,{children:["For this example, connect a ",(0,o.jsx)(t.strong,{children:"Chat Input"})," component to an ",(0,o.jsx)(t.strong,{children:"OpenAI"})," model component's ",(0,o.jsx)(t.strong,{children:"Input"})," port, and then connect the ",(0,o.jsx)(t.strong,{children:"OpenAI"})," model component's ",(0,o.jsx)(t.strong,{children:"Message"})," port to the ",(0,o.jsx)(t.strong,{children:"Chat Output"})," component."]}),"\n",(0,o.jsxs)(t.ol,{start:"2",children:["\n",(0,o.jsxs)(t.li,{children:["In the ",(0,o.jsx)(t.strong,{children:"OpenAI"})," model component, in the ",(0,o.jsx)(t.strong,{children:"OpenAI API Key"})," field, add your ",(0,o.jsx)(t.strong,{children:"OpenAI API key"}),"."]}),"\n"]}),"\n",(0,o.jsx)(t.p,{children:"The flow looks like this:"}),"\n",(0,o.jsx)(t.p,{children:(0,o.jsx)(t.img,{alt:"Chat input and output components connected to an OpenAI model",src:n(6944).A+"",width:"4000",height:"2574"})}),"\n",(0,o.jsxs)(t.ol,{start:"3",children:["\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsxs)(t.p,{children:["To send a message to your flow, open the ",(0,o.jsx)(t.strong,{children:"Playground"}),", and then enter a message.\nThe ",(0,o.jsx)(t.strong,{children:"OpenAI"})," model component responds.\nOptionally, in the ",(0,o.jsx)(t.strong,{children:"OpenAI"})," model component, enter a ",(0,o.jsx)(t.strong,{children:"System Message"})," to control the model's response."]}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsxs)(t.p,{children:["In the Langflow UI, click your flow name, and then click ",(0,o.jsx)(t.strong,{children:"Logs"}),".\nThe ",(0,o.jsx)(t.strong,{children:"Logs"})," pane opens.\nHere, you can inspect your component logs.\n",(0,o.jsx)(t.img,{alt:"Logs pane",src:n(77232).A+"",width:"3200",height:"1716"})]}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsxs)(t.p,{children:["Your first message was sent by the ",(0,o.jsx)(t.strong,{children:"Chat Input"})," component to the ",(0,o.jsx)(t.strong,{children:"OpenAI"})," model component.\nClick ",(0,o.jsx)(t.strong,{children:"Outputs"})," to view the sent message:"]}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(a.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:' "messages": [',props:{}}]},{tokens:[{content:" {",props:{}}]},{tokens:[{content:' "message": "What\'s the recommended way to install Docker on Mac M1?",',props:{}}]},{tokens:[{content:' "sender": "User",',props:{}}]},{tokens:[{content:' "sender_name": "User",',props:{}}]},{tokens:[{content:' "session_id": "Session Apr 21, 17:37:04",',props:{}}]},{tokens:[{content:' "stream_url": null,',props:{}}]},{tokens:[{content:' "component_id": "ChatInput-4WKag",',props:{}}]},{tokens:[{content:' "files": [],',props:{}}]},{tokens:[{content:' "type": "text"',props:{}}]},{tokens:[{content:" }",props:{}}]},{tokens:[{content:" ],",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,o.jsxs)(t.ol,{start:"6",children:["\n",(0,o.jsxs)(t.li,{children:["Your second message was sent by the ",(0,o.jsx)(t.strong,{children:"OpenAI"})," model component to the ",(0,o.jsx)(t.strong,{children:"Chat Output"})," component.\nThis is the raw text output of the model's response.\nThe ",(0,o.jsx)(t.strong,{children:"Chat Output"})," component accepts this text as input and presents it as a formatted message.\nClick ",(0,o.jsx)(t.strong,{children:"Outputs"})," to view the sent message:"]}),"\n"]}),"\n",(0,o.jsx)(a.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:' "outputs":',props:{}}]},{tokens:[{content:' "text_output":',props:{}}]},{tokens:[{content:' "message": "To install Docker on a Mac with an M1 chip, you should use Docker Desktop for Mac, which is optimized for Apple Silicon. Here\'s a step-by-step guide to installing Docker on your M1 Mac:\\n\\n1.',props:{}}]},{tokens:[{content:" ...",props:{}}]},{tokens:[{content:' "type": "text"',props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,o.jsx)(t.admonition,{type:"tip",children:(0,o.jsxs)(t.p,{children:["Optionally, to view the outputs of each component in the flow, click ",(0,o.jsx)(i.A,{name:"TextSearch","aria-hidden":"true"})," ",(0,o.jsx)(t.strong,{children:"Inspect output"}),"."]})}),"\n",(0,o.jsx)(t.h3,{id:"send-chat-messages-with-the-api",children:"Send chat messages with the API"}),"\n",(0,o.jsxs)(t.p,{children:["The ",(0,o.jsx)(t.strong,{children:"Chat Input"})," component is often the entry point for passing messages to the Langflow API.\nTo send the same example messages programmatically to your Langflow server, do the following:"]}),"\n",(0,o.jsxs)(t.ol,{children:["\n",(0,o.jsxs)(t.li,{children:["To get your Langflow endpoint, click ",(0,o.jsx)(t.strong,{children:"Publish"}),", and then click ",(0,o.jsx)(t.strong,{children:"API access"}),"."]}),"\n",(0,o.jsxs)(t.li,{children:["Copy the command from the ",(0,o.jsx)(t.strong,{children:"cURL"})," tab, and then paste it in your terminal.\nIt looks similar to this:"]}),"\n"]}),"\n",(0,o.jsx)(a.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"curl --request POST \\",props:{}}]},{tokens:[{content:" --url 'http://localhost:7860/api/v1/run/51eed711-4530-4fdc-9bce-5db4351cc73a?stream=false' \\",props:{}}]},{tokens:[{content:" --header 'Content-Type: application/json' \\",props:{}}]},{tokens:[{content:" --data '{",props:{}}]},{tokens:[{content:' "input_value": "What\'s the recommended way to install Docker on Mac M1?",',props:{}}]},{tokens:[{content:' "output_type": "chat",',props:{}}]},{tokens:[{content:' "input_type": "chat"',props:{}}]},{tokens:[{content:"}'",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,o.jsxs)(t.ol,{start:"3",children:["\n",(0,o.jsxs)(t.li,{children:["Modify ",(0,o.jsx)(t.code,{children:"input_value"})," so it contains the question, ",(0,o.jsx)(t.code,{children:"What's the recommended way to install Docker on Mac M1?"}),"."]}),"\n"]}),"\n",(0,o.jsxs)(t.p,{children:["Note the ",(0,o.jsx)(t.code,{children:"output_type"})," and ",(0,o.jsx)(t.code,{children:"input_type"})," parameters that are passed with the message. The ",(0,o.jsx)(t.code,{children:"chat"})," type provides additional configuration options, and the messages appear in the ",(0,o.jsx)(t.strong,{children:"Playground"}),". The ",(0,o.jsx)(t.code,{children:"text"})," type returns only text strings, and does not appear in the ",(0,o.jsx)(t.strong,{children:"Playground"}),"."]}),"\n",(0,o.jsxs)(t.ol,{start:"4",children:["\n",(0,o.jsxs)(t.li,{children:["Add a custom ",(0,o.jsx)(t.code,{children:"session_id"})," to the message's ",(0,o.jsx)(t.code,{children:"data"})," object."]}),"\n"]}),"\n",(0,o.jsx)(a.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"curl --request POST \\",props:{}}]},{tokens:[{content:" --url 'http://localhost:7860/api/v1/run/51eed711-4530-4fdc-9bce-5db4351cc73a?stream=false' \\",props:{}}]},{tokens:[{content:" --header 'Content-Type: application/json' \\",props:{}}]},{tokens:[{content:" --data '{",props:{}}]},{tokens:[{content:' "input_value": "Whats the recommended way to install Docker on Mac M1",',props:{}}]},{tokens:[{content:' "session_id": "docker-question-on-m1",',props:{}}]},{tokens:[{content:' "output_type": "chat",',props:{}}]},{tokens:[{content:' "input_type": "chat"',props:{}}]},{tokens:[{content:"}'",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,o.jsxs)(t.p,{children:["The custom ",(0,o.jsx)(t.code,{children:"session_id"})," value starts a new chat session between your client and the Langflow server, and can be useful in keeping conversations and AI context separate."]}),"\n",(0,o.jsxs)(t.ol,{start:"5",children:["\n",(0,o.jsx)(t.li,{children:"Send the POST request.\nYour request is answered."}),"\n",(0,o.jsxs)(t.li,{children:["Navigate to the ",(0,o.jsx)(t.strong,{children:"Playground"}),".\nA new chat session called ",(0,o.jsx)(t.code,{children:"docker-question-on-m1"})," has appeared, using your unique ",(0,o.jsx)(t.code,{children:"session_id"}),"."]}),"\n",(0,o.jsxs)(t.li,{children:["To modify additional parameters with ",(0,o.jsx)(t.strong,{children:"Tweaks"})," for your ",(0,o.jsx)(t.strong,{children:"Chat Input"})," and ",(0,o.jsx)(t.strong,{children:"Chat Output"})," components, click ",(0,o.jsx)(t.strong,{children:"Publish"}),", and then click ",(0,o.jsx)(t.strong,{children:"API access"}),"."]}),"\n",(0,o.jsxs)(t.li,{children:["Click ",(0,o.jsx)(t.strong,{children:"Tweaks"})," to modify parameters in the component's ",(0,o.jsx)(t.code,{children:"data"})," object.\nFor example, disabling storing messages from the ",(0,o.jsx)(t.strong,{children:"Chat Input"})," component adds a ",(0,o.jsx)(t.strong,{children:"Tweak"})," to your command:"]}),"\n"]}),"\n",(0,o.jsx)(a.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"curl --request POST \\",props:{}}]},{tokens:[{content:" --url 'http://localhost:7860/api/v1/run/51eed711-4530-4fdc-9bce-5db4351cc73a?stream=false' \\",props:{}}]},{tokens:[{content:" --header 'Content-Type: application/json' \\",props:{}}]},{tokens:[{content:" --data '{",props:{}}]},{tokens:[{content:' "input_value": "Text to input to the flow",',props:{}}]},{tokens:[{content:' "output_type": "chat",',props:{}}]},{tokens:[{content:' "input_type": "chat",',props:{}}]},{tokens:[{content:' "tweaks": {',props:{}}]},{tokens:[{content:' "ChatInput-4WKag": {',props:{}}]},{tokens:[{content:' "should_store_message": false',props:{}}]},{tokens:[{content:" }",props:{}}]},{tokens:[{content:" }",props:{}}]},{tokens:[{content:"}'",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,o.jsxs)(t.p,{children:["To confirm your command is using the tweak, navigate to the ",(0,o.jsx)(t.strong,{children:"Logs"})," pane and view the request from the ",(0,o.jsx)(t.strong,{children:"Chat Input"})," component.\nThe value for ",(0,o.jsx)(t.code,{children:"should_store_message"})," is ",(0,o.jsx)(t.code,{children:"false"}),"."]}),"\n",(0,o.jsx)(t.h2,{id:"see-also",children:"See also"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"/session-id",children:"Session ID"})}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(j,{...e})}):j(e)}function g(e,t){throw new Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}},17886:(e,t,n)=>{n.d(t,{A:()=>r});n(96540);var s=n(64058),o=n(74848);function r({name:e,...t}){const n=s[e];return n?(0,o.jsx)(n,{...t}):null}},77232:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/logs-6ae22cc6a87b128cbc0c7f4559b47f10.png"}}]);
\ No newline at end of file
diff --git a/assets/js/4f1ba371.dd503df6.js b/assets/js/4f1ba371.f48824d5.js
similarity index 56%
rename from assets/js/4f1ba371.dd503df6.js
rename to assets/js/4f1ba371.f48824d5.js
index fca4861ab7..f62223913c 100644
--- a/assets/js/4f1ba371.dd503df6.js
+++ b/assets/js/4f1ba371.f48824d5.js
@@ -1 +1 @@
-"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[9004],{11470:(e,n,t)=>{t.d(n,{A:()=>C});var o=t(96540),s=t(18215),r=t(23104),l=t(56347),a=t(205),c=t(57485),i=t(31682),d=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,i.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,l.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,c.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 f(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,r=u(e),[l,c]=(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})),[i,h]=m({queryString:t,groupId:s}),[f,x]=function({groupId:e}){const n=function(e){return e?`docusaurus.tab.${e}`:null}(e),[t,s]=(0,d.Dv)(n);return[t,(0,o.useCallback)(e=>{n&&s.set(e)},[n,s])]}({groupId:s}),j=(()=>{const e=i??f;return p({value:e,tabValues:r})?e:null})();(0,a.A)(()=>{j&&c(j)},[j]);return{selectedValue:l,selectValue:(0,o.useCallback)(e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);c(e),h(e),x(e)},[h,x,r]),tabValues:r}}var x=t(92303);const j={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=t(74848);function v({className:e,block:n,selectedValue:t,selectValue:o,tabValues:l}){const a=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),i=e=>{const n=e.currentTarget,s=a.indexOf(n),r=l[s].value;r!==t&&(c(n),o(r))},d=e=>{let n=null;switch(e.key){case"Enter":i(e);break;case"ArrowRight":{const t=a.indexOf(e.currentTarget)+1;n=a[t]??a[0];break}case"ArrowLeft":{const t=a.indexOf(e.currentTarget)-1;n=a[t]??a[a.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},e),children:l.map(({value:e,label:n,attributes:o})=>(0,g.jsx)("li",{role:"tab",tabIndex:t===e?0:-1,"aria-selected":t===e,ref:e=>{a.push(e)},onKeyDown:d,onClick:i,...o,className:(0,s.A)("tabs__item",j.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,g.jsx)("div",{className:"margin-top--md",children:r.map((e,n)=>(0,o.cloneElement)(e,{key:n,hidden:e.props.value!==t}))})}function w(e){const n=f(e);return(0,g.jsxs)("div",{className:(0,s.A)("tabs-container",j.tabList),children:[(0,g.jsx)(v,{...n,...e}),(0,g.jsx)(b,{...n,...e})]})}function C(e){const n=(0,x.A)();return(0,g.jsx)(w,{...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:()=>l});t(96540);var o=t(18215);const s={tabItem:"tabItem_Ymn6"};var r=t(74848);function l({children:e,hidden:n,className:t}){return(0,r.jsx)("div",{role:"tabpanel",className:(0,o.A)(s.tabItem,t),hidden:n,children:e})}},28453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>a});var o=t(96540);const s={},r=o.createContext(s);function l(e){const n=o.useContext(r);return o.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),o.createElement(r.Provider,{value:n},e.children)}},32644:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>i,contentTitle:()=>c,default:()=>u,frontMatter:()=>a,metadata:()=>o,toc:()=>d});const o=JSON.parse('{"id":"Components/mcp-client","title":"Use Langflow as an MCP client","description":"Langflow integrates with the Model Context Protocol (MCP) as both an MCP server and an MCP client.","source":"@site/docs/Components/mcp-client.md","sourceDirName":"Components","slug":"/mcp-client","permalink":"/mcp-client","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Use Langflow as an MCP client","slug":"/mcp-client"},"sidebar":"docs","previous":{"title":"Use Langflow as an MCP server","permalink":"/mcp-server"},"next":{"title":"API keys","permalink":"/configuration-api-keys"}}');var s=t(74848),r=t(28453),l=(t(11470),t(19365),t(17886));const a={title:"Use Langflow as an MCP client",slug:"/mcp-client"},c=void 0,i={},d=[{value:"Use the MCP connection component",id:"use-the-mcp-connection-component",level:2},{value:"Use Stdio mode",id:"mcp-stdio-mode",level:3},{value:"Use SSE mode",id:"mcp-sse-mode",level:3},{value:"MCP connection component parameters",id:"mcp-connection-component-parameters",level:2},{value:"See also",id:"see-also",level:2}];function h(e){const n={a:"a",admonition:"admonition",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,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:["Langflow integrates with the ",(0,s.jsx)(n.a,{href:"https://modelcontextprotocol.io/introduction",children:"Model Context Protocol (MCP)"})," as both an MCP server and an MCP client."]}),"\n",(0,s.jsxs)(n.p,{children:["This page describes how to use Langflow as an MCP client with the ",(0,s.jsx)(n.strong,{children:"MCP connection"})," component."]}),"\n",(0,s.jsxs)(n.p,{children:["For information about using Langflow as an MCP server, see ",(0,s.jsx)(n.a,{href:"/mcp-server",children:"Use Langflow as an MCP server"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"use-the-mcp-connection-component",children:"Use the MCP connection component"}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.strong,{children:"MCP connection"})," component connects to a ",(0,s.jsx)(n.a,{href:"https://modelcontextprotocol.io/introduction",children:"Model Context Protocol (MCP)"})," server and exposes the MCP server's tools as tools for ",(0,s.jsx)(n.a,{href:"/agents",children:"Langflow agents"}),"."]}),"\n",(0,s.jsx)(n.p,{children:"This component has two modes, depending on the type of server you want to access:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["To access tools provided by external, non-Langflow MCP servers, ",(0,s.jsx)(n.a,{href:"#mcp-stdio-mode",children:"use Stdio mode"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:["To use flows from your ",(0,s.jsx)(n.a,{href:"/concepts-overview#projects",children:"Langflow projects"})," as MCP tools, ",(0,s.jsx)(n.a,{href:"#mcp-sse-mode",children:"use SSE mode"}),"."]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"mcp-stdio-mode",children:"Use Stdio mode"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Add an ",(0,s.jsx)(n.strong,{children:"MCP connection"})," 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:"MCP Command"})," field, enter the command to start the MCP server. For example, to start a ",(0,s.jsx)(n.a,{href:"https://github.com/modelcontextprotocol/servers/tree/main/src/fetch",children:"Fetch"})," server, the command is ",(0,s.jsx)(n.code,{children:"uvx mcp-server-fetch"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"uvx"})," is included with ",(0,s.jsx)(n.code,{children:"uv"})," in the Langflow package.\nTo use ",(0,s.jsx)(n.code,{children:"npx"})," server commands, you must first install an LTS release of ",(0,s.jsx)(n.a,{href:"https://docs.npmjs.com/downloading-and-installing-node-js-and-npm",children:"Node.js"}),".\nFor an example of an ",(0,s.jsx)(n.code,{children:"npx"})," MCP server in Langflow, see ",(0,s.jsx)(n.a,{href:"/mcp-component-astra",children:"Connect an Astra DB MCP server to Langflow"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["To use environment variables in your server command, enter each variable in the ",(0,s.jsx)(n.strong,{children:"Env"})," fields as you would define them in a script, such as ",(0,s.jsx)(n.code,{children:"VARIABLE=value"}),". If the ",(0,s.jsx)(n.strong,{children:"Env"})," field isn't shown, enable it in the component's ",(0,s.jsx)(n.strong,{children:"Controls"})," in the ",(0,s.jsx)(n.a,{href:"/concepts-components#component-menu",children:"component menu"}),"."]}),"\n",(0,s.jsx)(n.admonition,{type:"important",children:(0,s.jsxs)(n.p,{children:["Langflow passes environment variables from the ",(0,s.jsx)(n.code,{children:".env"})," file to MCP, but it doesn't pass global variables declared in the Langflow UI.\nTo define an MCP server environment variable as a global variable, add it to Langflow's ",(0,s.jsx)(n.code,{children:".env"})," file at startup.\nFor more information, see ",(0,s.jsx)(n.a,{href:"/configuration-global-variables",children:"global variables"}),"."]})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Click ",(0,s.jsx)(l.A,{name:"RefreshCw","aria-label":"Refresh"})," to test the command and retrieve the list of tools provided by the MCP server."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["In the ",(0,s.jsx)(n.strong,{children:"Tool"})," field, select a tool that you want this component to use, or leave the field blank to allow access to all tools provided by the MCP server."]}),"\n",(0,s.jsx)(n.p,{children:"If you select a specific tool, you might need to configure additional tool-specific fields. For information about tool-specific fields, see your MCP server's documentation."}),"\n",(0,s.jsxs)(n.p,{children:["At this point, the ",(0,s.jsx)(n.strong,{children:"MCP connection"})," component is serving a tool, but nothing is using the tool. The next steps explain how to make the tool available to an ",(0,s.jsxs)(n.a,{href:"/components-agents",children:[(0,s.jsx)(n.strong,{children:"Agent"})," component"]})," so that the agent can use the tool in its responses."]}),"\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-menu",children:"component menu"}),", enable ",(0,s.jsx)(n.strong,{children:"Tool mode"})," so you can use the component with an agent."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Connect the ",(0,s.jsx)(n.strong,{children:"MCP connection"})," component's ",(0,s.jsx)(n.strong,{children:"Toolset"})," port to an ",(0,s.jsx)(n.strong,{children:"Agent"})," component's ",(0,s.jsx)(n.strong,{children:"Tools"})," port."]}),"\n",(0,s.jsxs)(n.p,{children:["If not already present in your flow, make sure you also attach ",(0,s.jsx)(n.strong,{children:"Chat input"})," and ",(0,s.jsx)(n.strong,{children:"Chat output"})," components to the ",(0,s.jsx)(n.strong,{children:"Agent"})," component."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"MCP connection component",src:t(63963).A+"",width:"4000",height:"2354"})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Test your flow to make sure the MCP server is connected and the selected tool is used by the agent: Click ",(0,s.jsx)(n.strong,{children:"Playground"}),", and then enter a prompt that uses the tool you connected through the ",(0,s.jsx)(n.strong,{children:"MCP connection"})," component.\nFor example, if you use ",(0,s.jsx)(n.code,{children:"mcp-server-fetch"})," with the ",(0,s.jsx)(n.code,{children:"fetch"})," tool, you could ask the agent to summarize recent tech news. The agent calls the MCP server function ",(0,s.jsx)(n.code,{children:"fetch"}),", and then returns the response."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["If you want the agent to be able to use more tools, repeat these steps to add more ",(0,s.jsx)(n.strong,{children:"MCP connection"})," components with different servers or tools."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"mcp-sse-mode",children:"Use SSE mode"}),"\n",(0,s.jsxs)(n.p,{children:["Every Langflow project runs a separate MCP server that exposes the project's flows as MCP tools.\nFor more information about your projects' MCP servers, including how to manage exposed flows, see ",(0,s.jsx)(n.a,{href:"/mcp-server",children:"Use Langflow as an MCP server"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["To leverage flows-as-tools, use the ",(0,s.jsx)(n.strong,{children:"MCP connection"})," component in ",(0,s.jsx)(n.strong,{children:"Server-Sent Events (SSE)"})," mode to connect to a project's ",(0,s.jsx)(n.code,{children:"/api/v1/mcp/sse"})," endpoint:"]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["Add an ",(0,s.jsx)(n.strong,{children:"MCP connection"})," component to your flow, and then select ",(0,s.jsx)(n.strong,{children:"SSE"})," mode.\nA default address appears in the ",(0,s.jsx)(n.strong,{children:"MCP SSE URL"})," field."]}),"\n",(0,s.jsxs)(n.li,{children:["In the ",(0,s.jsx)(n.strong,{children:"MCP SSE URL"})," field, modify the default address to point at your Langflow server's SSE endpoint. The default value for Langflow Desktop is ",(0,s.jsx)(n.code,{children:"http://localhost:7868/"}),". The default value for other Langflow installations is ",(0,s.jsx)(n.code,{children:"http://localhost:7860/api/v1/mcp/sse"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:["Click ",(0,s.jsx)(l.A,{name:"RefreshCw","aria-label":"Refresh"})," to test the endpoint and refresh the ",(0,s.jsx)(n.strong,{children:"Tools"})," list.\nIn SSE mode, all flows available from the targeted server are treated as tools."]}),"\n",(0,s.jsxs)(n.li,{children:["In the ",(0,s.jsx)(n.strong,{children:"Tool"})," field, select a flow that you want this component to use, or leave the field blank to allow access to all flows available from the targeted Langflow server."]}),"\n",(0,s.jsxs)(n.li,{children:["In the ",(0,s.jsx)(n.a,{href:"/concepts-components#component-menu",children:"component menu"}),", enable ",(0,s.jsx)(n.strong,{children:"Tool mode"})," so you can use the component with an agent."]}),"\n",(0,s.jsxs)(n.li,{children:["Connect the ",(0,s.jsx)(n.strong,{children:"MCP connection"})," component's ",(0,s.jsx)(n.strong,{children:"Toolset"})," port to an ",(0,s.jsx)(n.strong,{children:"Agent"})," component's ",(0,s.jsx)(n.strong,{children:"Tools"})," port. If not already present in your flow, make sure you also attach ",(0,s.jsx)(n.strong,{children:"Chat input"})," and ",(0,s.jsx)(n.strong,{children:"Chat output"})," components to the ",(0,s.jsx)(n.strong,{children:"Agent"})," component.\n",(0,s.jsx)(n.img,{alt:"MCP component with SSE mode enabled",src:t(68347).A+"",width:"4000",height:"2348"})]}),"\n",(0,s.jsxs)(n.li,{children:["Test your flow to make sure the agent uses your flows to respond to queries: Click ",(0,s.jsx)(n.strong,{children:"Playground"}),", and then enter a prompt that uses a flow that you connected through the ",(0,s.jsx)(n.strong,{children:"MCP connection"})," component."]}),"\n",(0,s.jsxs)(n.li,{children:["If you want the agent to be able to use more flows, repeat these steps to add more ",(0,s.jsx)(n.strong,{children:"MCP connection"})," components with different servers or tools selected."]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"mcp-connection-component-parameters",children:"MCP connection component parameters"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Inputs"})}),"\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:"command"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsxs)(n.td,{children:["Stdio mode only. The MCP server startup command. Default: ",(0,s.jsx)(n.code,{children:"uvx mcp-sse-shim@latest"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"sse_url"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsxs)(n.td,{children:["SSE mode only. The SSE URL for a Langflow project's MCP server. Default for Langflow Desktop: ",(0,s.jsx)(n.code,{children:"http://localhost:7868/"}),". Default for other installations: ",(0,s.jsx)(n.code,{children:"http://localhost:7860/api/v1/mcp/sse"})]})]})]})]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Outputs"})}),"\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.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"tools"}),(0,s.jsx)(n.td,{children:"List[Tool]"}),(0,s.jsx)(n.td,{children:"A list of tools exposed by the MCP server."})]})})]}),"\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.jsx)(n.a,{href:"/mcp-server",children:"Use Langflow as an MCP server"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"/mcp-component-astra",children:"Use a DataStax Astra DB MCP server with the MCP connection component"})}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},63963:(e,n,t)=>{t.d(n,{A:()=>o});const o=t.p+"assets/images/component-mcp-stdio-636cfeb73567d12b0a0761c8738cad17.png"},68347:(e,n,t)=>{t.d(n,{A:()=>o});const o=t.p+"assets/images/component-mcp-sse-mode-a9f0716d810589ea26be2805bc4ec9dd.png"}}]);
\ No newline at end of file
+"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[9004],{11470:(e,n,t)=>{t.d(n,{A:()=>C});var o=t(96540),s=t(18215),r=t(23104),l=t(56347),a=t(205),c=t(57485),i=t(31682),d=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,i.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,l.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,c.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 f(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,r=u(e),[l,c]=(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})),[i,h]=m({queryString:t,groupId:s}),[f,x]=function({groupId:e}){const n=function(e){return e?`docusaurus.tab.${e}`:null}(e),[t,s]=(0,d.Dv)(n);return[t,(0,o.useCallback)(e=>{n&&s.set(e)},[n,s])]}({groupId:s}),j=(()=>{const e=i??f;return p({value:e,tabValues:r})?e:null})();(0,a.A)(()=>{j&&c(j)},[j]);return{selectedValue:l,selectValue:(0,o.useCallback)(e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);c(e),h(e),x(e)},[h,x,r]),tabValues:r}}var x=t(92303);const j={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=t(74848);function v({className:e,block:n,selectedValue:t,selectValue:o,tabValues:l}){const a=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),i=e=>{const n=e.currentTarget,s=a.indexOf(n),r=l[s].value;r!==t&&(c(n),o(r))},d=e=>{let n=null;switch(e.key){case"Enter":i(e);break;case"ArrowRight":{const t=a.indexOf(e.currentTarget)+1;n=a[t]??a[0];break}case"ArrowLeft":{const t=a.indexOf(e.currentTarget)-1;n=a[t]??a[a.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},e),children:l.map(({value:e,label:n,attributes:o})=>(0,g.jsx)("li",{role:"tab",tabIndex:t===e?0:-1,"aria-selected":t===e,ref:e=>{a.push(e)},onKeyDown:d,onClick:i,...o,className:(0,s.A)("tabs__item",j.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,g.jsx)("div",{className:"margin-top--md",children:r.map((e,n)=>(0,o.cloneElement)(e,{key:n,hidden:e.props.value!==t}))})}function w(e){const n=f(e);return(0,g.jsxs)("div",{className:(0,s.A)("tabs-container",j.tabList),children:[(0,g.jsx)(v,{...n,...e}),(0,g.jsx)(b,{...n,...e})]})}function C(e){const n=(0,x.A)();return(0,g.jsx)(w,{...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:()=>l});t(96540);var o=t(18215);const s={tabItem:"tabItem_Ymn6"};var r=t(74848);function l({children:e,hidden:n,className:t}){return(0,r.jsx)("div",{role:"tabpanel",className:(0,o.A)(s.tabItem,t),hidden:n,children:e})}},28453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>a});var o=t(96540);const s={},r=o.createContext(s);function l(e){const n=o.useContext(r);return o.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),o.createElement(r.Provider,{value:n},e.children)}},32644:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>i,contentTitle:()=>c,default:()=>u,frontMatter:()=>a,metadata:()=>o,toc:()=>d});const o=JSON.parse('{"id":"Components/mcp-client","title":"Use Langflow as an MCP client","description":"Langflow integrates with the Model Context Protocol (MCP) as both an MCP server and an MCP client.","source":"@site/docs/Components/mcp-client.md","sourceDirName":"Components","slug":"/mcp-client","permalink":"/mcp-client","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Use Langflow as an MCP client","slug":"/mcp-client"},"sidebar":"docs","previous":{"title":"Use Langflow as an MCP server","permalink":"/mcp-server"},"next":{"title":"API keys","permalink":"/configuration-api-keys"}}');var s=t(74848),r=t(28453),l=(t(11470),t(19365),t(17886));const a={title:"Use Langflow as an MCP client",slug:"/mcp-client"},c=void 0,i={},d=[{value:"Use the MCP connection component",id:"use-the-mcp-connection-component",level:2},{value:"Use Stdio mode",id:"mcp-stdio-mode",level:3},{value:"Use SSE mode",id:"mcp-sse-mode",level:3},{value:"MCP connection component parameters",id:"mcp-connection-component-parameters",level:2},{value:"See also",id:"see-also",level:2}];function h(e){const n={a:"a",admonition:"admonition",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,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:["Langflow integrates with the ",(0,s.jsx)(n.a,{href:"https://modelcontextprotocol.io/introduction",children:"Model Context Protocol (MCP)"})," as both an MCP server and an MCP client."]}),"\n",(0,s.jsxs)(n.p,{children:["This page describes how to use Langflow as an MCP client with the ",(0,s.jsx)(n.strong,{children:"MCP connection"})," component."]}),"\n",(0,s.jsxs)(n.p,{children:["For information about using Langflow as an MCP server, see ",(0,s.jsx)(n.a,{href:"/mcp-server",children:"Use Langflow as an MCP server"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"use-the-mcp-connection-component",children:"Use the MCP connection component"}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.strong,{children:"MCP connection"})," component connects to a ",(0,s.jsx)(n.a,{href:"https://modelcontextprotocol.io/introduction",children:"Model Context Protocol (MCP)"})," server and exposes the MCP server's tools as tools for ",(0,s.jsx)(n.a,{href:"/agents",children:"Langflow agents"}),"."]}),"\n",(0,s.jsx)(n.p,{children:"This component has two modes, depending on the type of server you want to access:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["To access tools provided by external, non-Langflow MCP servers, ",(0,s.jsx)(n.a,{href:"#mcp-stdio-mode",children:"use Stdio mode"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:["To use flows from your ",(0,s.jsx)(n.a,{href:"/concepts-overview#projects",children:"Langflow projects"})," as MCP tools, ",(0,s.jsx)(n.a,{href:"#mcp-sse-mode",children:"use SSE mode"}),"."]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"mcp-stdio-mode",children:"Use Stdio mode"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Add an ",(0,s.jsx)(n.strong,{children:"MCP connection"})," 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:"MCP Command"})," field, enter the command to start the MCP server. For example, to start a ",(0,s.jsx)(n.a,{href:"https://github.com/modelcontextprotocol/servers/tree/main/src/fetch",children:"Fetch"})," server, the command is ",(0,s.jsx)(n.code,{children:"uvx mcp-server-fetch"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"uvx"})," is included with ",(0,s.jsx)(n.code,{children:"uv"})," in the Langflow package.\nTo use ",(0,s.jsx)(n.code,{children:"npx"})," server commands, you must first install an LTS release of ",(0,s.jsx)(n.a,{href:"https://docs.npmjs.com/downloading-and-installing-node-js-and-npm",children:"Node.js"}),".\nFor an example of an ",(0,s.jsx)(n.code,{children:"npx"})," MCP server in Langflow, see ",(0,s.jsx)(n.a,{href:"/mcp-component-astra",children:"Connect an Astra DB MCP server to Langflow"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["To use environment variables in your server command, enter each variable in the ",(0,s.jsx)(n.strong,{children:"Env"})," fields as you would define them in a script, such as ",(0,s.jsx)(n.code,{children:"VARIABLE=value"}),". If the ",(0,s.jsx)(n.strong,{children:"Env"})," field isn't shown, enable it in the component's ",(0,s.jsx)(n.strong,{children:"Controls"})," in the ",(0,s.jsx)(n.a,{href:"/concepts-components#component-menu",children:"component menu"}),"."]}),"\n",(0,s.jsx)(n.admonition,{type:"important",children:(0,s.jsxs)(n.p,{children:["Langflow passes environment variables from the ",(0,s.jsx)(n.code,{children:".env"})," file to MCP, but it doesn't pass global variables declared in the Langflow UI.\nTo define an MCP server environment variable as a global variable, add it to Langflow's ",(0,s.jsx)(n.code,{children:".env"})," file at startup.\nFor more information, see ",(0,s.jsx)(n.a,{href:"/configuration-global-variables",children:"global variables"}),"."]})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Click ",(0,s.jsx)(l.A,{name:"RefreshCw","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Refresh"})," to test the command and retrieve the list of tools provided by the MCP server."]}),"\n",(0,s.jsx)(n.p,{children:"If you select a specific tool, you might need to configure additional tool-specific fields. For information about tool-specific fields, see your MCP server's documentation."}),"\n",(0,s.jsxs)(n.p,{children:["At this point, the ",(0,s.jsx)(n.strong,{children:"MCP connection"})," component is serving a tool, but nothing is using the tool. The next steps explain how to make the tool available to an ",(0,s.jsxs)(n.a,{href:"/components-agents",children:[(0,s.jsx)(n.strong,{children:"Agent"})," component"]})," so that the agent can use the tool in its responses."]}),"\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-menu",children:"component menu"}),", enable ",(0,s.jsx)(n.strong,{children:"Tool mode"})," so you can use the component with an agent."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Connect the ",(0,s.jsx)(n.strong,{children:"MCP connection"})," component's ",(0,s.jsx)(n.strong,{children:"Toolset"})," port to an ",(0,s.jsx)(n.strong,{children:"Agent"})," component's ",(0,s.jsx)(n.strong,{children:"Tools"})," port."]}),"\n",(0,s.jsxs)(n.p,{children:["If not already present in your flow, make sure you also attach ",(0,s.jsx)(n.strong,{children:"Chat input"})," and ",(0,s.jsx)(n.strong,{children:"Chat output"})," components to the ",(0,s.jsx)(n.strong,{children:"Agent"})," component."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"MCP connection component",src:t(63963).A+"",width:"4000",height:"2354"})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Test your flow to make sure the MCP server is connected and the selected tool is used by the agent: Click ",(0,s.jsx)(n.strong,{children:"Playground"}),", and then enter a prompt that uses the tool you connected through the ",(0,s.jsx)(n.strong,{children:"MCP connection"})," component.\nFor example, if you use ",(0,s.jsx)(n.code,{children:"mcp-server-fetch"})," with the ",(0,s.jsx)(n.code,{children:"fetch"})," tool, you could ask the agent to summarize recent tech news. The agent calls the MCP server function ",(0,s.jsx)(n.code,{children:"fetch"}),", and then returns the response."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["If you want the agent to be able to use more tools, repeat these steps to add more ",(0,s.jsx)(n.strong,{children:"MCP connection"})," components with different servers or tools."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"mcp-sse-mode",children:"Use SSE mode"}),"\n",(0,s.jsxs)(n.p,{children:["Every Langflow project runs a separate MCP server that exposes the project's flows as MCP tools.\nFor more information about your projects' MCP servers, including how to manage exposed flows, see ",(0,s.jsx)(n.a,{href:"/mcp-server",children:"Use Langflow as an MCP server"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["To leverage flows-as-tools, use the ",(0,s.jsx)(n.strong,{children:"MCP connection"})," component in ",(0,s.jsx)(n.strong,{children:"Server-Sent Events (SSE)"})," mode to connect to a project's ",(0,s.jsx)(n.code,{children:"/api/v1/mcp/sse"})," endpoint:"]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["Add an ",(0,s.jsx)(n.strong,{children:"MCP connection"})," component to your flow, and then select ",(0,s.jsx)(n.strong,{children:"SSE"})," mode.\nA default address appears in the ",(0,s.jsx)(n.strong,{children:"MCP SSE URL"})," field."]}),"\n",(0,s.jsxs)(n.li,{children:["In the ",(0,s.jsx)(n.strong,{children:"MCP SSE URL"})," field, modify the default address to point at your Langflow server's SSE endpoint. The default value for Langflow Desktop is ",(0,s.jsx)(n.code,{children:"http://localhost:7868/"}),". The default value for other Langflow installations is ",(0,s.jsx)(n.code,{children:"http://localhost:7860/api/v1/mcp/sse"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:["Click ",(0,s.jsx)(l.A,{name:"RefreshCw","aria-label":"Refresh"})," to test the endpoint and refresh the ",(0,s.jsx)(n.strong,{children:"Tools"})," list.\nIn SSE mode, all flows available from the targeted server are treated as tools."]}),"\n",(0,s.jsxs)(n.li,{children:["In the ",(0,s.jsx)(n.strong,{children:"Tool"})," field, select a flow that you want this component to use, or leave the field blank to allow access to all flows available from the targeted Langflow server."]}),"\n",(0,s.jsxs)(n.li,{children:["In the ",(0,s.jsx)(n.a,{href:"/concepts-components#component-menu",children:"component menu"}),", enable ",(0,s.jsx)(n.strong,{children:"Tool mode"})," so you can use the component with an agent."]}),"\n",(0,s.jsxs)(n.li,{children:["Connect the ",(0,s.jsx)(n.strong,{children:"MCP connection"})," component's ",(0,s.jsx)(n.strong,{children:"Toolset"})," port to an ",(0,s.jsx)(n.strong,{children:"Agent"})," component's ",(0,s.jsx)(n.strong,{children:"Tools"})," port. If not already present in your flow, make sure you also attach ",(0,s.jsx)(n.strong,{children:"Chat input"})," and ",(0,s.jsx)(n.strong,{children:"Chat output"})," components to the ",(0,s.jsx)(n.strong,{children:"Agent"})," component.\n",(0,s.jsx)(n.img,{alt:"MCP component with SSE mode enabled",src:t(68347).A+"",width:"4000",height:"2348"})]}),"\n",(0,s.jsxs)(n.li,{children:["Test your flow to make sure the agent uses your flows to respond to queries: Click ",(0,s.jsx)(n.strong,{children:"Playground"}),", and then enter a prompt that uses a flow that you connected through the ",(0,s.jsx)(n.strong,{children:"MCP connection"})," component."]}),"\n",(0,s.jsxs)(n.li,{children:["If you want the agent to be able to use more flows, repeat these steps to add more ",(0,s.jsx)(n.strong,{children:"MCP connection"})," components with different servers or tools selected."]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"mcp-connection-component-parameters",children:"MCP connection component parameters"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Inputs"})}),"\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:"command"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsxs)(n.td,{children:["Stdio mode only. The MCP server startup command. Default: ",(0,s.jsx)(n.code,{children:"uvx mcp-sse-shim@latest"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"sse_url"}),(0,s.jsx)(n.td,{children:"String"}),(0,s.jsxs)(n.td,{children:["SSE mode only. The SSE URL for a Langflow project's MCP server. Default for Langflow Desktop: ",(0,s.jsx)(n.code,{children:"http://localhost:7868/"}),". Default for other installations: ",(0,s.jsx)(n.code,{children:"http://localhost:7860/api/v1/mcp/sse"})]})]})]})]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Outputs"})}),"\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.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"tools"}),(0,s.jsx)(n.td,{children:"List[Tool]"}),(0,s.jsx)(n.td,{children:"A list of tools exposed by the MCP server."})]})})]}),"\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.jsx)(n.a,{href:"/mcp-server",children:"Use Langflow as an MCP server"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"/mcp-component-astra",children:"Use a DataStax Astra DB MCP server with the MCP connection component"})}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},63963:(e,n,t)=>{t.d(n,{A:()=>o});const o=t.p+"assets/images/component-mcp-stdio-636cfeb73567d12b0a0761c8738cad17.png"},68347:(e,n,t)=>{t.d(n,{A:()=>o});const o=t.p+"assets/images/component-mcp-sse-mode-a9f0716d810589ea26be2805bc4ec9dd.png"}}]);
\ No newline at end of file
diff --git a/assets/js/6debce21.90150382.js b/assets/js/6debce21.90150382.js
deleted file mode 100644
index 53da0ab096..0000000000
--- a/assets/js/6debce21.90150382.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[4919],{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}},28453:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>a});var r=t(96540);const s={},o=r.createContext(s);function i(e){const n=r.useContext(o);return r.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),r.createElement(o.Provider,{value:n},e.children)}},76731:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>l,default:()=>g,frontMatter:()=>a,metadata:()=>r,toc:()=>c});const r=JSON.parse('{"id":"Templates/vector-store-rag","title":"Vector store RAG","description":"Retrieval Augmented Generation, or RAG, is a pattern for training LLMs on your data and querying it.","source":"@site/docs/Templates/vector-store-rag.md","sourceDirName":"Templates","slug":"/vector-store-rag","permalink":"/vector-store-rag","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Vector store RAG","slug":"/vector-store-rag"},"sidebar":"docs","previous":{"title":"Memory chatbot","permalink":"/memory-chatbot"},"next":{"title":"Financial report parser","permalink":"/financial-report-parser"}}');var s=t(74848),o=t(28453),i=t(17886);const a={title:"Vector store RAG",slug:"/vector-store-rag"},l=void 0,d={},c=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Open Langflow and start a new project",id:"open-langflow-and-start-a-new-project",level:2},{value:"Build the vector RAG flow",id:"build-the-vector-rag-flow",level:2},{value:"Run the Vector Store RAG flow",id:"run-the-vector-store-rag-flow",level:2}];function h(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"Retrieval Augmented Generation, or RAG, is a pattern for training LLMs on your data and querying it."}),"\n",(0,s.jsxs)(n.p,{children:["RAG is backed by a\xa0",(0,s.jsx)(n.strong,{children:"vector store"}),", a vector database which stores embeddings of the ingested data."]}),"\n",(0,s.jsxs)(n.p,{children:["This enables\xa0",(0,s.jsx)(n.strong,{children:"vector search"}),", a more powerful and context-aware search."]}),"\n",(0,s.jsxs)(n.p,{children:["We've chosen\xa0",(0,s.jsx)(n.a,{href:"https://astra.datastax.com/signup?utm_source=langflow-pre-release&utm_medium=referral&utm_campaign=langflow-announcement&utm_content=create-a-free-astra-db-account",children:"Astra DB"}),"\xa0as the vector database for this starter flow, but you can follow along with any of Langflow's vector database options."]}),"\n",(0,s.jsx)(n.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"/get-started-installation",children:"A running Langflow instance"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://platform.openai.com/",children:"An OpenAI API key"})}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"https://docs.datastax.com/en/astra-db-serverless/get-started/quickstart.html",children:"An Astra DB vector database"}),"\xa0with the following:","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"An Astra DB application token scoped to read and write to the database"}),"\n",(0,s.jsxs)(n.li,{children:["A collection created in ",(0,s.jsx)(n.a,{href:"https://docs.datastax.com/en/astra-db-serverless/databases/manage-collections.html#create-collection",children:"Astra"})," or a new collection created in the ",(0,s.jsx)(n.strong,{children:"Astra DB"})," component"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"open-langflow-and-start-a-new-project",children:"Open Langflow and start a new project"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["From the Langflow dashboard, click\xa0",(0,s.jsx)(n.strong,{children:"New Flow"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:["Select\xa0",(0,s.jsx)(n.strong,{children:"Vector Store RAG"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:["The\xa0",(0,s.jsx)(n.strong,{children:"Vector Store RAG"}),"\xa0flow is created."]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"build-the-vector-rag-flow",children:"Build the vector RAG flow"}),"\n",(0,s.jsx)(n.p,{children:"The vector store RAG flow is built of two separate flows for ingestion and query."}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(85410).A+"",width:"2694",height:"1558"})}),"\n",(0,s.jsxs)(n.p,{children:["The\xa0",(0,s.jsx)(n.strong,{children:"Load Data Flow"})," (bottom of the screen) creates a searchable index to be queried for contextual similarity.\nThis flow populates the vector store with data from a local file.\nIt ingests data from a local file, splits it into chunks, indexes it in Astra DB, and computes embeddings for the chunks using the OpenAI embeddings model."]}),"\n",(0,s.jsxs)(n.p,{children:["The\xa0",(0,s.jsx)(n.strong,{children:"Retriever Flow"})," (top of the screen) embeds the user's queries into vectors, which are compared to the vector store data from the ",(0,s.jsx)(n.strong,{children:"Load Data Flow"})," for contextual similarity."]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Chat Input"})," receives user input from the ",(0,s.jsx)(n.strong,{children:"Playground"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"OpenAI Embeddings"})," converts the user query into vector form."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Astra DB"})," performs similarity search using the query vector."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Parser"})," processes the retrieved chunks."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Prompt"})," combines the user query with relevant context."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"OpenAI"})," generates the response using the prompt."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Chat Output"})," returns the response to the ",(0,s.jsx)(n.strong,{children:"Playground"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Configure the ",(0,s.jsx)(n.strong,{children:"OpenAI"})," model component."]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["To create a global variable for the\xa0",(0,s.jsx)(n.strong,{children:"OpenAI"}),"\xa0component, in the\xa0",(0,s.jsx)(n.strong,{children:"OpenAI API Key"}),"\xa0field, click the\xa0",(0,s.jsx)(i.A,{name:"Globe","aria-label":"Globe"})," ",(0,s.jsx)(n.strong,{children:"Globe"}),"\xa0button, and then click\xa0",(0,s.jsx)(n.strong,{children:"Add New Variable"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:["In the\xa0",(0,s.jsx)(n.strong,{children:"Variable Name"}),"\xa0field, enter\xa0",(0,s.jsx)(n.code,{children:"openai_api_key"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:["In the\xa0",(0,s.jsx)(n.strong,{children:"Value"}),"\xa0field, paste your OpenAI API Key (",(0,s.jsx)(n.code,{children:"sk-..."}),")."]}),"\n",(0,s.jsxs)(n.li,{children:["Click\xa0",(0,s.jsx)(n.strong,{children:"Save Variable"}),"."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Configure the ",(0,s.jsx)(n.strong,{children:"Astra DB"})," component."]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["In the ",(0,s.jsx)(n.strong,{children:"Astra DB Application Token"})," field, add your ",(0,s.jsx)(n.strong,{children:"Astra DB"})," application token.\nThe component connects to your database and populates the menus with existing databases and collections."]}),"\n",(0,s.jsxs)(n.li,{children:["Select your ",(0,s.jsx)(n.strong,{children:"Database"}),".\nIf you don't have a collection, select ",(0,s.jsx)(n.strong,{children:"New database"}),".\nComplete the ",(0,s.jsx)(n.strong,{children:"Name"}),", ",(0,s.jsx)(n.strong,{children:"Cloud provider"}),", and ",(0,s.jsx)(n.strong,{children:"Region"})," fields, and then click ",(0,s.jsx)(n.strong,{children:"Create"}),". ",(0,s.jsx)(n.strong,{children:"Database creation takes a few minutes"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:["Select your ",(0,s.jsx)(n.strong,{children:"Collection"}),". Collections are created in your ",(0,s.jsx)(n.a,{href:"https://astra.datastax.com",children:"Astra DB deployment"})," for storing vector data."]}),"\n"]}),"\n",(0,s.jsx)(n.admonition,{type:"info",children:(0,s.jsxs)(n.p,{children:["If you select a collection embedded with Nvidia through Astra's vectorize service, the ",(0,s.jsx)(n.strong,{children:"Embedding Model"})," port is removed, because you have already generated embeddings for this collection with the Nvidia ",(0,s.jsx)(n.code,{children:"NV-Embed-QA"})," model. The component fetches the data from the collection, and uses the same embeddings for queries."]})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"If you don't have a collection, create a new one within the component."}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Select ",(0,s.jsx)(n.strong,{children:"New collection"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Complete the ",(0,s.jsx)(n.strong,{children:"Name"}),", ",(0,s.jsx)(n.strong,{children:"Embedding generation method"}),", ",(0,s.jsx)(n.strong,{children:"Embedding model"}),", and ",(0,s.jsx)(n.strong,{children:"Dimensions"})," fields, and then click ",(0,s.jsx)(n.strong,{children:"Create"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["Your choice for the ",(0,s.jsx)(n.strong,{children:"Embedding generation method"})," and ",(0,s.jsx)(n.strong,{children:"Embedding model"})," depends on whether you want to use embeddings generated by a provider through Astra's vectorize service, or generated by a component in Langflow."]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["To use embeddings generated by a provider through Astra's vectorize service, select the model from the ",(0,s.jsx)(n.strong,{children:"Embedding generation method"})," dropdown menu, and then select the model from the ",(0,s.jsx)(n.strong,{children:"Embedding model"})," dropdown menu."]}),"\n",(0,s.jsxs)(n.li,{children:["To use embeddings generated by a component in Langflow, select ",(0,s.jsx)(n.strong,{children:"Bring your own"})," for both the ",(0,s.jsx)(n.strong,{children:"Embedding generation method"})," and ",(0,s.jsx)(n.strong,{children:"Embedding model"})," fields. In this starter project, the option for the embeddings method and model is the ",(0,s.jsx)(n.strong,{children:"OpenAI Embeddings"})," component connected to the ",(0,s.jsx)(n.strong,{children:"Astra DB"})," component."]}),"\n",(0,s.jsxs)(n.li,{children:["The ",(0,s.jsx)(n.strong,{children:"Dimensions"})," value must match the dimensions of your collection. This field is ",(0,s.jsx)(n.strong,{children:"not required"})," if you use embeddings generated through Astra's vectorize service. You can find this value in the ",(0,s.jsx)(n.strong,{children:"Collection"})," in your ",(0,s.jsx)(n.a,{href:"https://astra.datastax.com",children:"Astra DB deployment"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["For more information, see the ",(0,s.jsx)(n.a,{href:"https://docs.datastax.com/en/astra-db-serverless/databases/embedding-generation.html",children:"DataStax Astra DB Serverless documentation"}),"."]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["If you used Langflow's ",(0,s.jsx)(n.strong,{children:"Global Variables"})," feature, the RAG application flow components are already configured with the necessary credentials."]}),"\n",(0,s.jsx)(n.h2,{id:"run-the-vector-store-rag-flow",children:"Run the Vector Store RAG flow"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["Click the\xa0",(0,s.jsx)(n.strong,{children:"Playground"}),"\xa0button. Here you can chat with the AI that uses context from the database you created."]}),"\n",(0,s.jsx)(n.li,{children:'Type a message and press Enter. (Try something like "What topics do you know about?")'}),"\n",(0,s.jsx)(n.li,{children:"The bot will respond with a summary of the data you've embedded."}),"\n"]})]})}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)}},85410:(e,n,t)=>{t.d(n,{A:()=>r});const r=t.p+"assets/images/starter-flow-vector-rag-53aa6c362abccc7e01e69c80d6194315.png"}}]);
\ No newline at end of file
diff --git a/assets/js/6debce21.baa31064.js b/assets/js/6debce21.baa31064.js
new file mode 100644
index 0000000000..59ab844bfa
--- /dev/null
+++ b/assets/js/6debce21.baa31064.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[4919],{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}},28453:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>a});var r=t(96540);const s={},o=r.createContext(s);function i(e){const n=r.useContext(o);return r.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),r.createElement(o.Provider,{value:n},e.children)}},76731:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>l,default:()=>g,frontMatter:()=>a,metadata:()=>r,toc:()=>c});const r=JSON.parse('{"id":"Templates/vector-store-rag","title":"Vector store RAG","description":"Retrieval Augmented Generation, or RAG, is a pattern for training LLMs on your data and querying it.","source":"@site/docs/Templates/vector-store-rag.md","sourceDirName":"Templates","slug":"/vector-store-rag","permalink":"/vector-store-rag","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Vector store RAG","slug":"/vector-store-rag"},"sidebar":"docs","previous":{"title":"Memory chatbot","permalink":"/memory-chatbot"},"next":{"title":"Financial report parser","permalink":"/financial-report-parser"}}');var s=t(74848),o=t(28453),i=t(17886);const a={title:"Vector store RAG",slug:"/vector-store-rag"},l=void 0,d={},c=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Open Langflow and start a new project",id:"open-langflow-and-start-a-new-project",level:2},{value:"Build the vector RAG flow",id:"build-the-vector-rag-flow",level:2},{value:"Run the Vector Store RAG flow",id:"run-the-vector-store-rag-flow",level:2}];function h(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"Retrieval Augmented Generation, or RAG, is a pattern for training LLMs on your data and querying it."}),"\n",(0,s.jsxs)(n.p,{children:["RAG is backed by a ",(0,s.jsx)(n.strong,{children:"vector store"}),", a vector database which stores embeddings of the ingested data."]}),"\n",(0,s.jsxs)(n.p,{children:["This enables ",(0,s.jsx)(n.strong,{children:"vector search"}),", a more powerful and context-aware search."]}),"\n",(0,s.jsxs)(n.p,{children:["We've chosen ",(0,s.jsx)(n.a,{href:"https://astra.datastax.com/signup?utm_source=langflow-pre-release&utm_medium=referral&utm_campaign=langflow-announcement&utm_content=create-a-free-astra-db-account",children:"Astra DB"})," as the vector database for this starter flow, but you can follow along with any of Langflow's vector database options."]}),"\n",(0,s.jsx)(n.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"/get-started-installation",children:"A running Langflow instance"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://platform.openai.com/",children:"An OpenAI API key"})}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"https://docs.datastax.com/en/astra-db-serverless/get-started/quickstart.html",children:"An Astra DB vector database"})," with the following:","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"An Astra DB application token scoped to read and write to the database"}),"\n",(0,s.jsxs)(n.li,{children:["A collection created in ",(0,s.jsx)(n.a,{href:"https://docs.datastax.com/en/astra-db-serverless/databases/manage-collections.html#create-collection",children:"Astra"})," or a new collection created in the ",(0,s.jsx)(n.strong,{children:"Astra DB"})," component"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"open-langflow-and-start-a-new-project",children:"Open Langflow and start a new project"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["From the Langflow dashboard, click ",(0,s.jsx)(n.strong,{children:"New Flow"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:["Select ",(0,s.jsx)(n.strong,{children:"Vector Store RAG"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:["The ",(0,s.jsx)(n.strong,{children:"Vector Store RAG"})," flow is created."]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"build-the-vector-rag-flow",children:"Build the vector RAG flow"}),"\n",(0,s.jsx)(n.p,{children:"The vector store RAG flow is built of two separate flows for ingestion and query."}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(85410).A+"",width:"2694",height:"1558"})}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.strong,{children:"Load Data Flow"})," (bottom of the screen) creates a searchable index to be queried for contextual similarity.\nThis flow populates the vector store with data from a local file.\nIt ingests data from a local file, splits it into chunks, indexes it in Astra DB, and computes embeddings for the chunks using the OpenAI embeddings model."]}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.strong,{children:"Retriever Flow"})," (top of the screen) embeds the user's queries into vectors, which are compared to the vector store data from the ",(0,s.jsx)(n.strong,{children:"Load Data Flow"})," for contextual similarity."]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Chat Input"})," receives user input from the ",(0,s.jsx)(n.strong,{children:"Playground"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"OpenAI Embeddings"})," converts the user query into vector form."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Astra DB"})," performs similarity search using the query vector."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Parser"})," processes the retrieved chunks."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Prompt"})," combines the user query with relevant context."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"OpenAI"})," generates the response using the prompt."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Chat Output"})," returns the response to the ",(0,s.jsx)(n.strong,{children:"Playground"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Configure the ",(0,s.jsx)(n.strong,{children:"OpenAI"})," model component."]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["To create a global variable for the ",(0,s.jsx)(n.strong,{children:"OpenAI"})," component, in the ",(0,s.jsx)(n.strong,{children:"OpenAI API Key"})," field, click the ",(0,s.jsx)(i.A,{name:"Globe","aria-hidden":"True"})," ",(0,s.jsx)(n.strong,{children:"Globe"})," button, and then click ",(0,s.jsx)(n.strong,{children:"Add New Variable"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:["In the ",(0,s.jsx)(n.strong,{children:"Variable Name"})," field, enter ",(0,s.jsx)(n.code,{children:"openai_api_key"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:["In the ",(0,s.jsx)(n.strong,{children:"Value"})," field, paste your OpenAI API Key (",(0,s.jsx)(n.code,{children:"sk-..."}),")."]}),"\n",(0,s.jsxs)(n.li,{children:["Click ",(0,s.jsx)(n.strong,{children:"Save Variable"}),"."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Configure the ",(0,s.jsx)(n.strong,{children:"Astra DB"})," component."]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["In the ",(0,s.jsx)(n.strong,{children:"Astra DB Application Token"})," field, add your ",(0,s.jsx)(n.strong,{children:"Astra DB"})," application token.\nThe component connects to your database and populates the menus with existing databases and collections."]}),"\n",(0,s.jsxs)(n.li,{children:["Select your ",(0,s.jsx)(n.strong,{children:"Database"}),".\nIf you don't have a collection, select ",(0,s.jsx)(n.strong,{children:"New database"}),".\nComplete the ",(0,s.jsx)(n.strong,{children:"Name"}),", ",(0,s.jsx)(n.strong,{children:"Cloud provider"}),", and ",(0,s.jsx)(n.strong,{children:"Region"})," fields, and then click ",(0,s.jsx)(n.strong,{children:"Create"}),". ",(0,s.jsx)(n.strong,{children:"Database creation takes a few minutes"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:["Select your ",(0,s.jsx)(n.strong,{children:"Collection"}),". Collections are created in your ",(0,s.jsx)(n.a,{href:"https://astra.datastax.com",children:"Astra DB deployment"})," for storing vector data."]}),"\n"]}),"\n",(0,s.jsx)(n.admonition,{type:"info",children:(0,s.jsxs)(n.p,{children:["If you select a collection embedded with Nvidia through Astra's vectorize service, the ",(0,s.jsx)(n.strong,{children:"Embedding Model"})," port is removed, because you have already generated embeddings for this collection with the Nvidia ",(0,s.jsx)(n.code,{children:"NV-Embed-QA"})," model. The component fetches the data from the collection, and uses the same embeddings for queries."]})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"If you don't have a collection, create a new one within the component."}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Select ",(0,s.jsx)(n.strong,{children:"New collection"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Complete the ",(0,s.jsx)(n.strong,{children:"Name"}),", ",(0,s.jsx)(n.strong,{children:"Embedding generation method"}),", ",(0,s.jsx)(n.strong,{children:"Embedding model"}),", and ",(0,s.jsx)(n.strong,{children:"Dimensions"})," fields, and then click ",(0,s.jsx)(n.strong,{children:"Create"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["Your choice for the ",(0,s.jsx)(n.strong,{children:"Embedding generation method"})," and ",(0,s.jsx)(n.strong,{children:"Embedding model"})," depends on whether you want to use embeddings generated by a provider through Astra's vectorize service, or generated by a component in Langflow."]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["To use embeddings generated by a provider through Astra's vectorize service, select the model from the ",(0,s.jsx)(n.strong,{children:"Embedding generation method"})," dropdown menu, and then select the model from the ",(0,s.jsx)(n.strong,{children:"Embedding model"})," dropdown menu."]}),"\n",(0,s.jsxs)(n.li,{children:["To use embeddings generated by a component in Langflow, select ",(0,s.jsx)(n.strong,{children:"Bring your own"})," for both the ",(0,s.jsx)(n.strong,{children:"Embedding generation method"})," and ",(0,s.jsx)(n.strong,{children:"Embedding model"})," fields. In this starter project, the option for the embeddings method and model is the ",(0,s.jsx)(n.strong,{children:"OpenAI Embeddings"})," component connected to the ",(0,s.jsx)(n.strong,{children:"Astra DB"})," component."]}),"\n",(0,s.jsxs)(n.li,{children:["The ",(0,s.jsx)(n.strong,{children:"Dimensions"})," value must match the dimensions of your collection. This field is ",(0,s.jsx)(n.strong,{children:"not required"})," if you use embeddings generated through Astra's vectorize service. You can find this value in the ",(0,s.jsx)(n.strong,{children:"Collection"})," in your ",(0,s.jsx)(n.a,{href:"https://astra.datastax.com",children:"Astra DB deployment"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["For more information, see the ",(0,s.jsx)(n.a,{href:"https://docs.datastax.com/en/astra-db-serverless/databases/embedding-generation.html",children:"DataStax Astra DB Serverless documentation"}),"."]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["If you used Langflow's ",(0,s.jsx)(n.strong,{children:"Global Variables"})," feature, the RAG application flow components are already configured with the necessary credentials."]}),"\n",(0,s.jsx)(n.h2,{id:"run-the-vector-store-rag-flow",children:"Run the Vector Store RAG flow"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["Click ",(0,s.jsx)(n.strong,{children:"Playground"}),". Here you can chat with the AI that uses context from the database you created."]}),"\n",(0,s.jsx)(n.li,{children:'Type a message and press Enter. (Try something like "What topics do you know about?")'}),"\n",(0,s.jsx)(n.li,{children:"The bot will respond with a summary of the data you've embedded."}),"\n"]})]})}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)}},85410:(e,n,t)=>{t.d(n,{A:()=>r});const r=t.p+"assets/images/starter-flow-vector-rag-53aa6c362abccc7e01e69c80d6194315.png"}}]);
\ No newline at end of file
diff --git a/assets/js/6e1a9721.114d93d5.js b/assets/js/6e1a9721.114d93d5.js
new file mode 100644
index 0000000000..8e47cc5d00
--- /dev/null
+++ b/assets/js/6e1a9721.114d93d5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[321],{7685:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/vector-store-document-ingestion-fce32e9be440846a2545397e3a18b7bf.png"},8886:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/component-url-regex-8cae4a8d6491d360115ad552f0c467d3.png"},13533:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/component-dataframe-operations-86f6e1111b6f414989aca7b5fe625830.png"},17886:(e,t,n)=>{n.d(t,{A:()=>i});n(96540);var s=n(64058),r=n(74848);function i({name:e,...t}){const n=s[e];return n?(0,r.jsx)(n,{...t}):null}},35073:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/component-save-to-file-67ebbb733732670897bedd9fd1b87583.png"},41502:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/component-combine-text-a73b71c22cc8099bf2a9ba22170ea701.png"},45709:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/component-data-to-dataframe-3e921379e4e86fedf0e34e3ffae46b51.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-741a1ac37f9a2d6591ead075acc66b65.png"},66539:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/component-lambda-filter-c409acffcea6f80062295f4d8de4e881.png"},96218:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/component-parser-5f97943bbc863cee6b02c74d325a062f.png"},97050:(e,t,n)=>{n.r(t),n.d(t,{CH:()=>h,assets:()=>a,chCodeConfig:()=>x,contentTitle:()=>l,default:()=>m,frontMatter:()=>c,metadata:()=>s,toc:()=>j});const s=JSON.parse('{"id":"Components/components-processing","title":"Processing","description":"Processing components process and transform data within a flow.","source":"@site/docs/Components/components-processing.md","sourceDirName":"Components","slug":"/components-processing","permalink":"/components-processing","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Processing","slug":"/components-processing"},"sidebar":"docs","previous":{"title":"Models","permalink":"/components-models"},"next":{"title":"Prompts","permalink":"/components-prompts"}}');var r=n(74848),i=n(28453),o=n(24754),d=n(17886);const c={title:"Processing",slug:"/components-processing"},l=void 0,a={},h={annotations:o.hk,Code:o.Cy},x={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},j=[{value:"Use a processing component in a flow",id:"use-a-processing-component-in-a-flow",level:2},{value:"DataFrame operations",id:"dataframe-operations",level:2},{value:"Operations",id:"operations",level:3},{value:"Data operations",id:"data-operations",level:2},{value:"Operations",id:"operations-1",level:3},{value:"Data to DataFrame",id:"data-to-dataframe",level:2},{value:"LLM router",id:"llm-router",level:2},{value:"Message to data",id:"message-to-data",level:2},{value:"Parser",id:"parser",level:2},{value:"Regex extractor",id:"regex-extractor",level:2},{value:"Save to File",id:"save-to-file",level:2},{value:"File input format options",id:"file-input-format-options",level:3},{value:"Smart function",id:"smart-function",level:2},{value:"Split text",id:"split-text",level:2},{value:"Update data",id:"update-data",level:2},{value:"Legacy components",id:"legacy-components",level:2},{value:"Alter metadata",id:"alter-metadata",level:3},{value:"Combine data",id:"combine-data",level:3},{value:"Combine text",id:"combine-text",level:3},{value:"Create data",id:"create-data",level:3},{value:"Filter data",id:"filter-data",level:3},{value:"Filter values",id:"filter-values",level:3},{value:"JSON cleaner",id:"json-cleaner",level:3},{value:"Parse DataFrame",id:"parse-dataframe",level:3},{value:"Parse JSON",id:"parse-json",level:3},{value:"Select data",id:"select-data",level:3}];function p(e){const t={a:"a",admonition:"admonition",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,i.R)(),...e.components},{Details:s}=t;return h||u("CH",!1),h.Code||u("CH.Code",!0),s||u("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."}),"\n",(0,r.jsx)(t.h2,{id:"use-a-processing-component-in-a-flow",children:"Use a processing component in a flow"}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Split Text"})," processing component in this flow splits the incoming ",(0,r.jsx)(t.a,{href:"/concepts-objects",children:"Data"})," into chunks to be embedded into the vector store component."]}),"\n",(0,r.jsx)(t.p,{children:"The component offers control over chunk size, overlap, and separator, which affect context and granularity in vector store retrieval results."}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{src:n(7685).A+"",width:"1804",height:"1546"})}),"\n",(0,r.jsx)(t.h2,{id:"dataframe-operations",children:"DataFrame operations"}),"\n",(0,r.jsxs)(t.p,{children:["This component performs operations on ",(0,r.jsx)(t.a,{href:"https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html",children:"DataFrame"})," rows and columns."]}),"\n",(0,r.jsxs)(t.p,{children:["To use this component in a flow, connect a component that outputs ",(0,r.jsx)(t.a,{href:"/concepts-objects#dataframe-object",children:"DataFrame"})," to the ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," component."]}),"\n",(0,r.jsxs)(t.p,{children:["This example fetches JSON data from an API. The ",(0,r.jsx)(t.strong,{children:"Smart function"})," component extracts and flattens the results into a tabular DataFrame. The ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," component can then work with the retrieved data."]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"Dataframe operations with flattened dataframe",src:n(13533).A+"",width:"983",height:"696"})}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["The ",(0,r.jsx)(t.strong,{children:"API Request"})," component retrieves data with only ",(0,r.jsx)(t.code,{children:"source"})," and ",(0,r.jsx)(t.code,{children:"result"})," fields.\nFor this example, the desired data is nested within the ",(0,r.jsx)(t.code,{children:"result"})," field."]}),"\n",(0,r.jsxs)(t.li,{children:["Connect a ",(0,r.jsx)(t.strong,{children:"Smart function"})," to the API request component, and a ",(0,r.jsx)(t.strong,{children:"Language model"})," to the ",(0,r.jsx)(t.strong,{children:"Smart function"}),". This example connects a ",(0,r.jsx)(t.strong,{children:"Groq"})," model component."]}),"\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:"Groq"})," model component, add your ",(0,r.jsx)(t.strong,{children:"Groq"})," API key."]}),"\n",(0,r.jsxs)(t.li,{children:["To filter the data, in the ",(0,r.jsx)(t.strong,{children:"Smart function"})," component, in the ",(0,r.jsx)(t.strong,{children:"Instructions"})," field, use natural language to describe how the data should be filtered.\nFor this example, enter:"]}),"\n"]}),"\n",(0,r.jsx)(h.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"I want to explode the result column out into a Data object",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsx)(t.admonition,{type:"tip",children:(0,r.jsxs)(t.p,{children:["Avoid punctuation in the ",(0,r.jsx)(t.strong,{children:"Instructions"})," field, as it can cause errors."]})}),"\n",(0,r.jsxs)(t.ol,{start:"5",children:["\n",(0,r.jsxs)(t.li,{children:["To run the flow, in the ",(0,r.jsx)(t.strong,{children:"Smart function"})," component, click ",(0,r.jsx)(d.A,{name:"Play","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Run component"}),"."]}),"\n",(0,r.jsxs)(t.li,{children:["To inspect the filtered data, in the ",(0,r.jsx)(t.strong,{children:"Smart function"})," component, click ",(0,r.jsx)(d.A,{name:"TextSearch","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Inspect output"}),".\nThe result is a structured DataFrame."]}),"\n"]}),"\n",(0,r.jsx)(h.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"id | name | company | username | email | address | zip",props:{}}]},{tokens:[{content:"---|------------------|----------------------|-----------------|------------------------------------|-------------------|-------",props:{}}]},{tokens:[{content:"1 | Emily Johnson | ABC Corporation | emily_johnson | emily.johnson@abccorporation.com | 123 Main St | 12345",props:{}}]},{tokens:[{content:"2 | Michael Williams | XYZ Corp | michael_williams| michael.williams@xyzcorp.com | 456 Elm Ave | 67890",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsxs)(t.ol,{start:"7",children:["\n",(0,r.jsxs)(t.li,{children:["Add the ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," component, and a ",(0,r.jsx)(t.strong,{children:"Chat Output"})," component to the flow."]}),"\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," component, in the ",(0,r.jsx)(t.strong,{children:"Operation"})," field, select ",(0,r.jsx)(t.strong,{children:"Filter"}),"."]}),"\n",(0,r.jsxs)(t.li,{children:["To apply a filter, in the ",(0,r.jsx)(t.strong,{children:"Column Name"})," field, enter a column to filter on. This example filters by ",(0,r.jsx)(t.code,{children:"name"}),"."]}),"\n",(0,r.jsxs)(t.li,{children:["Click ",(0,r.jsx)(t.strong,{children:"Playground"}),", and then click ",(0,r.jsx)(t.strong,{children:"Run Flow"}),".\nThe flow extracts the values from the ",(0,r.jsx)(t.code,{children:"name"})," column."]}),"\n"]}),"\n",(0,r.jsx)(h.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"name",props:{}}]},{tokens:[{content:"Emily Johnson",props:{}}]},{tokens:[{content:"Michael Williams",props:{}}]},{tokens:[{content:"John Smith",props:{}}]},{tokens:[{content:"...",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsx)(t.h3,{id:"operations",children:"Operations"}),"\n",(0,r.jsxs)(t.p,{children:["This component can perform the following operations on Pandas ",(0,r.jsx)(t.a,{href:"https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html",children:"DataFrame"}),"."]}),"\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:"Operation"}),(0,r.jsx)(t.th,{children:"Required Inputs"}),(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:"Add Column"}),(0,r.jsx)(t.td,{children:"new_column_name, new_column_value"}),(0,r.jsx)(t.td,{children:"Adds a new column with a constant value."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Drop Column"}),(0,r.jsx)(t.td,{children:"column_name"}),(0,r.jsx)(t.td,{children:"Removes a specified column."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Filter"}),(0,r.jsx)(t.td,{children:"column_name, filter_value"}),(0,r.jsx)(t.td,{children:"Filters rows based on column value."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Head"}),(0,r.jsx)(t.td,{children:"num_rows"}),(0,r.jsxs)(t.td,{children:["Returns first ",(0,r.jsx)(t.code,{children:"n"})," rows."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Rename Column"}),(0,r.jsx)(t.td,{children:"column_name, new_column_name"}),(0,r.jsx)(t.td,{children:"Renames an existing column."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Replace Value"}),(0,r.jsx)(t.td,{children:"column_name, replace_value, replacement_value"}),(0,r.jsx)(t.td,{children:"Replaces values in a column."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Select Columns"}),(0,r.jsx)(t.td,{children:"columns_to_select"}),(0,r.jsx)(t.td,{children:"Selects specific columns."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Sort"}),(0,r.jsx)(t.td,{children:"column_name, ascending"}),(0,r.jsx)(t.td,{children:"Sorts DataFrame by column."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Tail"}),(0,r.jsx)(t.td,{children:"num_rows"}),(0,r.jsxs)(t.td,{children:["Returns last ",(0,r.jsx)(t.code,{children:"n"})," rows."]})]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"The input DataFrame 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.jsx)(t.td,{children:"The DataFrame operation to perform. Options include Add Column, Drop Column, Filter, Head, Rename Column, Replace Value, Select Columns, Sort, and Tail."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"column_name"}),(0,r.jsx)(t.td,{children:"Column Name"}),(0,r.jsx)(t.td,{children:"The column name to use for the operation."})]}),(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:"The value to filter rows by."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"ascending"}),(0,r.jsx)(t.td,{children:"Sort Ascending"}),(0,r.jsx)(t.td,{children:"Whether to sort in ascending order."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"new_column_name"}),(0,r.jsx)(t.td,{children:"New Column Name"}),(0,r.jsx)(t.td,{children:"The new column name when renaming or adding a column."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"new_column_value"}),(0,r.jsx)(t.td,{children:"New Column Value"}),(0,r.jsx)(t.td,{children:"The value to populate the new column with."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"columns_to_select"}),(0,r.jsx)(t.td,{children:"Columns to Select"}),(0,r.jsx)(t.td,{children:"A list of column names to select."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"num_rows"}),(0,r.jsx)(t.td,{children:"Number of Rows"}),(0,r.jsx)(t.td,{children:"The number of rows to return for head/tail operations. The default is 5."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"replace_value"}),(0,r.jsx)(t.td,{children:"Value to Replace"}),(0,r.jsx)(t.td,{children:"The value to replace in the column."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"replacement_value"}),(0,r.jsx)(t.td,{children:"Replacement Value"}),(0,r.jsx)(t.td,{children:"The value to replace with."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"output"}),(0,r.jsx)(t.td,{children:"DataFrame"}),(0,r.jsx)(t.td,{children:"The resulting DataFrame after the operation."})]})})]})]}),"\n",(0,r.jsx)(t.h2,{id:"data-operations",children:"Data operations"}),"\n",(0,r.jsxs)(t.p,{children:["This component performs operations on ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," objects, including selecting keys, evaluating literals, combining data, filtering values, appending/updating data, removing keys, and renaming keys."]}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["To use this component in a flow, connect a component that outputs ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," to the ",(0,r.jsx)(t.strong,{children:"Data Operations"})," component's input.\nAll operations in the component require at least one ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," input."]}),"\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:"Operations"})," field, select the operation you want to perform.\nFor example, send this request to the ",(0,r.jsx)(t.strong,{children:"Webhook"})," component.\nReplace ",(0,r.jsx)(t.code,{children:"YOUR_FLOW_ID"})," with your flow ID."]}),"\n"]}),"\n",(0,r.jsx)(h.Code,{codeConfig:x,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://localhost:7860/api/v1/webhook/YOUR_FLOW_ID" ',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:"-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": "Kulas Light",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "suite": "Apt. 556",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "city": "Gwenborough",',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": "Romaguera-Crona",',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",(0,r.jsxs)(t.ol,{start:"3",children:["\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:"Data Operations"})," component, select the ",(0,r.jsx)(t.strong,{children:"Select Keys"})," operation to extract specific user information.\nTo add additional keys, click ",(0,r.jsx)(d.A,{name:"Plus","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Add More"}),".\n",(0,r.jsx)(t.img,{alt:"A webhook and data operations component",src:n(46445).A+"",width:"4000",height:"1920"})]}),"\n",(0,r.jsxs)(t.li,{children:["Filter by ",(0,r.jsx)(t.code,{children:"name"}),", ",(0,r.jsx)(t.code,{children:"username"}),", and ",(0,r.jsx)(t.code,{children:"email"})," to select the values from the request."]}),"\n"]}),"\n",(0,r.jsx)(h.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"{",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "name"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"Leanne Graham"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "username"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"Bret"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "email"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"Sincere@april.biz"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"}",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]}),"\n",(0,r.jsx)(t.h3,{id:"operations-1",children:"Operations"}),"\n",(0,r.jsxs)(t.p,{children:["The component supports the following operations.\nAll operations in the ",(0,r.jsx)(t.strong,{children:"Data operations"})," component require at least one ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," input."]}),"\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:"Operation"}),(0,r.jsx)(t.th,{children:"Required Inputs"}),(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:"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.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:["The ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," object to operate on."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"operations"}),(0,r.jsx)(t.td,{children:"Operations"}),(0,r.jsx)(t.td,{children:"The operation to perform on the data."})]}),(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:"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:"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:"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:"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:"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:"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:"A list of keys to rename in the data."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"data_output"}),(0,r.jsx)(t.td,{children:"Data"}),(0,r.jsx)(t.td,{children:"The resulting Data object after the operation."})]})})]})]}),"\n",(0,r.jsx)(t.h2,{id:"data-to-dataframe",children:"Data to DataFrame"}),"\n",(0,r.jsxs)(t.p,{children:["This component converts one or multiple ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," objects into a ",(0,r.jsx)(t.a,{href:"/concepts-objects#dataframe-object",children:"DataFrame"}),". Each Data object corresponds to one row in the resulting DataFrame. Fields 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 'text' column."]}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["To use this component in a flow, connect a component that outputs ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," to the ",(0,r.jsx)(t.strong,{children:"Data to Dataframe"})," component's input.\nThis example connects a ",(0,r.jsx)(t.strong,{children:"Webhook"})," component to convert ",(0,r.jsx)(t.code,{children:"text"})," and ",(0,r.jsx)(t.code,{children:"data"})," into a DataFrame."]}),"\n",(0,r.jsxs)(t.li,{children:["To view the flow's output, connect a ",(0,r.jsx)(t.strong,{children:"Chat Output"})," component to the ",(0,r.jsx)(t.strong,{children:"Data to Dataframe"})," component."]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"A webhook and data to dataframe",src:n(45709).A+"",width:"1221",height:"468"})}),"\n",(0,r.jsxs)(t.ol,{start:"3",children:["\n",(0,r.jsxs)(t.li,{children:["Send a POST request to the ",(0,r.jsx)(t.strong,{children:"Webhook"})," containing your JSON data.\nReplace ",(0,r.jsx)(t.code,{children:"YOUR_FLOW_ID"})," with your flow ID.\nThis example uses the default Langflow server address."]}),"\n"]}),"\n",(0,r.jsx)(h.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:'curl -X POST "http://localhost:7860/api/v1/webhook/YOUR_FLOW_ID" \\',props:{}}]},{tokens:[{content:"-H 'Content-Type: application/json' \\",props:{}}]},{tokens:[{content:"-d '{",props:{}}]},{tokens:[{content:' "text": "Alex Cruz - Employee Profile",',props:{}}]},{tokens:[{content:' "data": {',props:{}}]},{tokens:[{content:' "Name": "Alex Cruz",',props:{}}]},{tokens:[{content:' "Role": "Developer",',props:{}}]},{tokens:[{content:' "Department": "Engineering"',props:{}}]},{tokens:[{content:" }",props:{}}]},{tokens:[{content:"}'",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsxs)(t.ol,{start:"4",children:["\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:"Playground"}),", view the output of your flow.\nThe ",(0,r.jsx)(t.strong,{children:"Data to DataFrame"})," component converts the webhook request into a ",(0,r.jsx)(t.code,{children:"DataFrame"}),", with ",(0,r.jsx)(t.code,{children:"text"})," and ",(0,r.jsx)(t.code,{children:"data"})," fields as columns."]}),"\n"]}),"\n",(0,r.jsx)(h.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"| text | data |",props:{}}]},{tokens:[{content:"|:-----------------------------|:------------------------------------------------------------------------|",props:{}}]},{tokens:[{content:"| Alex Cruz - Employee Profile | {'Name': 'Alex Cruz', 'Role': 'Developer', 'Department': 'Engineering'} |",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsxs)(t.ol,{start:"5",children:["\n",(0,r.jsx)(t.li,{children:"Send another employee data object."}),"\n"]}),"\n",(0,r.jsx)(h.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:'curl -X POST "http://localhost:7860/api/v1/webhook/YOUR_FLOW_ID" \\',props:{}}]},{tokens:[{content:"-H 'Content-Type: application/json' \\",props:{}}]},{tokens:[{content:"-d '{",props:{}}]},{tokens:[{content:' "text": "Kalani Smith - Employee Profile",',props:{}}]},{tokens:[{content:' "data": {',props:{}}]},{tokens:[{content:' "Name": "Kalani Smith",',props:{}}]},{tokens:[{content:' "Role": "Designer",',props:{}}]},{tokens:[{content:' "Department": "Design"',props:{}}]},{tokens:[{content:" }",props:{}}]},{tokens:[{content:"}'",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsxs)(t.ol,{start:"6",children:["\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:"Playground"}),", this request is also converted to ",(0,r.jsx)(t.code,{children:"DataFrame"}),"."]}),"\n"]}),"\n",(0,r.jsx)(h.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"| text | data |",props:{}}]},{tokens:[{content:"|:--------------------------------|:---------------------------------------------------------------------|",props:{}}]},{tokens:[{content:"| Kalani Smith - Employee Profile | {'Name': 'Kalani Smith', 'Role': 'Designer', 'Department': 'Design'} |",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"data_list"}),(0,r.jsx)(t.td,{children:"Data or Data List"}),(0,r.jsx)(t.td,{children:"One or multiple Data objects to transform into a DataFrame."})]})})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"dataframe"}),(0,r.jsx)(t.td,{children:"DataFrame"}),(0,r.jsx)(t.td,{children:"A DataFrame built from each Data object's fields plus a text column."})]})})]})]}),"\n",(0,r.jsx)(t.h2,{id:"llm-router",children:"LLM router"}),"\n",(0,r.jsx)(t.p,{children:"This component routes requests to the most appropriate LLM based on OpenRouter model specifications."}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"models"}),(0,r.jsx)(t.td,{children:"Language Models"}),(0,r.jsx)(t.td,{children:"A list of LLMs to route between."})]}),(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:"The input message to be routed."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"judge_llm"}),(0,r.jsx)(t.td,{children:"Judge LLM"}),(0,r.jsx)(t.td,{children:"The LLM that evaluates and selects the most appropriate model."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"optimization"}),(0,r.jsx)(t.td,{children:"Optimization"}),(0,r.jsx)(t.td,{children:"The optimization preference between quality, speed, cost, or balanced."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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:"output"}),(0,r.jsx)(t.td,{children:"Output"}),(0,r.jsx)(t.td,{children:"The response from the selected model."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"selected_model"}),(0,r.jsx)(t.td,{children:"Selected Model"}),(0,r.jsx)(t.td,{children:"The name of the chosen model."})]})]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"message-to-data",children:"Message to data"}),"\n",(0,r.jsxs)(t.p,{children:["This component converts ",(0,r.jsx)(t.a,{href:"/concepts-objects#message-object",children:"Message"})," objects to ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"message"}),(0,r.jsx)(t.td,{children:"Message"}),(0,r.jsx)(t.td,{children:"The Message object to convert to a Data object."})]})})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(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:"The converted Data object."})]})})]})]}),"\n",(0,r.jsx)(t.h2,{id:"parser",children:"Parser"}),"\n",(0,r.jsxs)(t.p,{children:["This component formats ",(0,r.jsx)(t.code,{children:"DataFrame"})," or ",(0,r.jsx)(t.code,{children:"Data"})," objects into text using templates, with an option to convert inputs directly to strings using ",(0,r.jsx)(t.code,{children:"stringify"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["To use this component, create variables for values in the ",(0,r.jsx)(t.code,{children:"template"})," the same way you would in a ",(0,r.jsx)(t.a,{href:"/components-prompts",children:"Prompt"})," component. For ",(0,r.jsx)(t.code,{children:"DataFrames"}),", use column names, for example ",(0,r.jsx)(t.code,{children:"Name: {Name}"}),". For ",(0,r.jsx)(t.code,{children:"Data"})," objects, use ",(0,r.jsx)(t.code,{children:"{text}"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["To use the ",(0,r.jsx)(t.strong,{children:"Parser"})," component with a ",(0,r.jsx)(t.strong,{children:"Structured Output"})," component, do the following:"]}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["Connect a ",(0,r.jsx)(t.strong,{children:"Structured Output"})," component's ",(0,r.jsx)(t.strong,{children:"DataFrame"})," output to the ",(0,r.jsx)(t.strong,{children:"Parser"})," component's ",(0,r.jsx)(t.strong,{children:"DataFrame"})," input."]}),"\n",(0,r.jsxs)(t.li,{children:["Connect the ",(0,r.jsx)(t.strong,{children:"File"})," component to the ",(0,r.jsx)(t.strong,{children:"Structured Output"})," component's ",(0,r.jsx)(t.strong,{children:"Message"})," input."]}),"\n",(0,r.jsxs)(t.li,{children:["Connect the ",(0,r.jsx)(t.strong,{children:"OpenAI"})," model component's ",(0,r.jsx)(t.strong,{children:"Language Model"})," output to the ",(0,r.jsx)(t.strong,{children:"Structured Output"})," component's ",(0,r.jsx)(t.strong,{children:"Language Model"})," input."]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:"The flow looks like this:"}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"A parser component connected to OpenAI and structured output",src:n(96218).A+"",width:"2300",height:"1436"})}),"\n",(0,r.jsxs)(t.ol,{start:"4",children:["\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:"Structured Output"})," component, click ",(0,r.jsx)(t.strong,{children:"Open Table"}),".\nThis opens a pane for structuring your table.\nThe table contains the rows ",(0,r.jsx)(t.strong,{children:"Name"}),", ",(0,r.jsx)(t.strong,{children:"Description"}),", ",(0,r.jsx)(t.strong,{children:"Type"}),", and ",(0,r.jsx)(t.strong,{children:"Multiple"}),"."]}),"\n",(0,r.jsxs)(t.li,{children:["Create a table that maps to the data you're loading from the ",(0,r.jsx)(t.strong,{children:"File"})," loader.\nFor example, to create a table for employees, you might have the rows ",(0,r.jsx)(t.code,{children:"id"}),", ",(0,r.jsx)(t.code,{children:"name"}),", and ",(0,r.jsx)(t.code,{children:"email"}),", all of type ",(0,r.jsx)(t.code,{children:"string"}),"."]}),"\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:"Template"})," field of the ",(0,r.jsx)(t.strong,{children:"Parser"})," component, enter a template for parsing the ",(0,r.jsx)(t.strong,{children:"Structured Output"})," component's DataFrame output into structured text.\nCreate variables for values in the ",(0,r.jsx)(t.code,{children:"template"})," the same way you would in a ",(0,r.jsx)(t.a,{href:"/components-prompts",children:"Prompt"})," component.\nFor example, to present a table of employees in Markdown:"]}),"\n"]}),"\n",(0,r.jsx)(h.Code,{codeConfig:x,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:[]}]}),"\n",(0,r.jsxs)(t.ol,{start:"7",children:["\n",(0,r.jsxs)(t.li,{children:["To run the flow, in the ",(0,r.jsx)(t.strong,{children:"Parser"})," component, click ",(0,r.jsx)(d.A,{name:"Play","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Run component"}),"."]}),"\n",(0,r.jsxs)(t.li,{children:["To view your parsed text, in the ",(0,r.jsx)(t.strong,{children:"Parser"})," component, click ",(0,r.jsx)(d.A,{name:"TextSearch","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Inspect output"}),"."]}),"\n",(0,r.jsxs)(t.li,{children:["Optionally, connect a ",(0,r.jsx)(t.strong,{children:"Chat Output"})," component, and open the ",(0,r.jsx)(t.strong,{children:"Playground"})," to see the output."]}),"\n"]}),"\n",(0,r.jsxs)(t.p,{children:["For an additional example of using the ",(0,r.jsx)(t.strong,{children:"Parser"})," component to format a DataFrame from a ",(0,r.jsx)(t.strong,{children:"Structured Output"})," component, see the ",(0,r.jsx)(t.strong,{children:"Market Research"})," template flow."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"mode"}),(0,r.jsx)(t.td,{children:"Mode"}),(0,r.jsx)(t.td,{children:'The tab selection between "Parser" and "Stringify" modes. "Stringify" converts input to a string instead of using a template.'})]}),(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:["The template for formatting using variables in curly brackets. For DataFrames, use column names, such as ",(0,r.jsx)(t.code,{children:"Name: {Name}"}),". For Data objects, use ",(0,r.jsx)(t.code,{children:"{text}"}),"."]})]}),(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.jsx)(t.td,{children:"The input to parse. Accepts either a DataFrame or Data object."})]}),(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:"The string used to separate rows or items. The default is a newline."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"clean_data"}),(0,r.jsx)(t.td,{children:"Clean Data"}),(0,r.jsx)(t.td,{children:"When stringify is enabled, this option cleans data by removing empty rows and lines."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"parsed_text"}),(0,r.jsx)(t.td,{children:"Parsed Text"}),(0,r.jsxs)(t.td,{children:["The resulting formatted text as a ",(0,r.jsx)(t.a,{href:"/concepts-objects#message-object",children:"Message"})," object."]})]})})]})]}),"\n",(0,r.jsx)(t.h2,{id:"regex-extractor",children:"Regex extractor"}),"\n",(0,r.jsx)(t.p,{children:"This component extracts patterns from text using regular expressions. It can be used to find and extract specific patterns or information from text data."}),"\n",(0,r.jsx)(t.p,{children:"To use this component in a flow:"}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["Connect the ",(0,r.jsx)(t.strong,{children:"Regex Extractor"})," to a ",(0,r.jsx)(t.strong,{children:"URL"})," component and a ",(0,r.jsx)(t.strong,{children:"Chat Output"})," component."]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"Regex extractor connected to url component",src:n(8886).A+"",width:"1606",height:"848"})}),"\n",(0,r.jsxs)(t.ol,{start:"2",children:["\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:"Regex Extractor"})," tool, enter a pattern to extract text from the ",(0,r.jsx)(t.strong,{children:"URL"}),' component\'s raw output.\nThis example extracts the first paragraph from the "In the News" section of ',(0,r.jsx)(t.code,{children:"https://en.wikipedia.org/wiki/Main_Page"}),":"]}),"\n"]}),"\n",(0,r.jsx)(h.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"In the news\\s*\\n(.*?)(?=\\n\\n)",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsx)(t.p,{children:"Result:"}),"\n",(0,r.jsx)(h.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"Peruvian writer and Nobel Prize in Literature laureate Mario Vargas Llosa (pictured) dies at the age of 89.",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsx)(t.h2,{id:"save-to-file",children:"Save to File"}),"\n",(0,r.jsxs)(t.p,{children:["This component saves ",(0,r.jsx)(t.a,{href:"/concepts-objects",children:"DataFrames, Data, or Messages"})," to various file formats."]}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["To use this component in a flow, connect a component that outputs ",(0,r.jsx)(t.a,{href:"/concepts-objects",children:"DataFrames, Data, or Messages"})," to the ",(0,r.jsx)(t.strong,{children:"Save to File"})," component's input.\nThe following example connects a ",(0,r.jsx)(t.strong,{children:"Webhook"})," component to two ",(0,r.jsx)(t.strong,{children:"Save to File"})," components to demonstrate the different outputs."]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"Two Save-to File components connected to a webhook",src:n(35073).A+"",width:"1458",height:"1732"})}),"\n",(0,r.jsxs)(t.ol,{start:"2",children:["\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:"Save to File"})," component's ",(0,r.jsx)(t.strong,{children:"Input Type"})," field, select the expected input type.\nThis example expects ",(0,r.jsx)(t.strong,{children:"Data"})," from the ",(0,r.jsx)(t.strong,{children:"Webhook"}),"."]}),"\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:"File Format"})," field, select the file type for your saved file.\nThis example uses ",(0,r.jsx)(t.code,{children:".md"})," in one ",(0,r.jsx)(t.strong,{children:"Save to File"})," component, and ",(0,r.jsx)(t.code,{children:".xlsx"})," in another."]}),"\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:"File Path"})," field, enter the path for your saved file.\nThis example uses ",(0,r.jsx)(t.code,{children:"./output/employees.xlsx"})," and ",(0,r.jsx)(t.code,{children:"./output/employees.md"})," to save the files in a directory relative to where Langflow is running.\nThe component accepts both relative and absolute paths, and creates any necessary directories if they don't exist."]}),"\n"]}),"\n",(0,r.jsx)(t.admonition,{type:"tip",children:(0,r.jsxs)(t.p,{children:["If you enter a format in the ",(0,r.jsx)(t.code,{children:"file_path"})," that is not accepted, the component appends the proper format to the file.\nFor example, if the selected ",(0,r.jsx)(t.code,{children:"file_format"})," is ",(0,r.jsx)(t.code,{children:"csv"}),", and you enter ",(0,r.jsx)(t.code,{children:"file_path"})," as ",(0,r.jsx)(t.code,{children:"./output/test.txt"}),", the file is saved as ",(0,r.jsx)(t.code,{children:"./output/test.txt.csv"})," so the file is not corrupted."]})}),"\n",(0,r.jsxs)(t.ol,{start:"5",children:["\n",(0,r.jsxs)(t.li,{children:["Send a POST request to the ",(0,r.jsx)(t.strong,{children:"Webhook"})," containing your JSON data.\nReplace ",(0,r.jsx)(t.code,{children:"YOUR_FLOW_ID"})," with your flow ID.\nThis example uses the default Langflow server address."]}),"\n"]}),"\n",(0,r.jsx)(h.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:'curl -X POST "http://localhost:7860/api/v1/webhook/YOUR_FLOW_ID" \\',props:{}}]},{tokens:[{content:"-H 'Content-Type: application/json' \\",props:{}}]},{tokens:[{content:"-d '{",props:{}}]},{tokens:[{content:' "Name": ["Alex Cruz", "Kalani Smith", "Noam Johnson"],',props:{}}]},{tokens:[{content:' "Role": ["Developer", "Designer", "Manager"],',props:{}}]},{tokens:[{content:' "Department": ["Engineering", "Design", "Management"]',props:{}}]},{tokens:[{content:"}'",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsxs)(t.ol,{start:"6",children:["\n",(0,r.jsxs)(t.li,{children:["In your local filesystem, open the ",(0,r.jsx)(t.code,{children:"outputs"})," directory.\nYou should see two files created from the data you've sent: one in ",(0,r.jsx)(t.code,{children:".xlsx"})," for structured spreadsheets, and one in Markdown."]}),"\n"]}),"\n",(0,r.jsx)(h.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"| Name | Role | Department |",props:{}}]},{tokens:[{content:"|:-------------|:----------|:-------------|",props:{}}]},{tokens:[{content:"| Alex Cruz | Developer | Engineering |",props:{}}]},{tokens:[{content:"| Kalani Smith | Designer | Design |",props:{}}]},{tokens:[{content:"| Noam Johnson | Manager | Management |",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsx)(t.h3,{id:"file-input-format-options",children:"File input format options"}),"\n",(0,r.jsxs)(t.p,{children:["For ",(0,r.jsx)(t.code,{children:"DataFrame"})," and ",(0,r.jsx)(t.code,{children:"Data"})," inputs, the component can create:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.code,{children:"csv"})}),"\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.code,{children:"excel"})}),"\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.code,{children:"json"})}),"\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.code,{children:"markdown"})}),"\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.code,{children:"pdf"})}),"\n"]}),"\n",(0,r.jsxs)(t.p,{children:["For ",(0,r.jsx)(t.code,{children:"Message"})," inputs, the component can create:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.code,{children:"txt"})}),"\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.code,{children:"json"})}),"\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.code,{children:"markdown"})}),"\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.code,{children:"pdf"})}),"\n"]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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_text"}),(0,r.jsx)(t.td,{children:"Input Text"}),(0,r.jsx)(t.td,{children:"The text to analyze and extract patterns from."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"pattern"}),(0,r.jsx)(t.td,{children:"Regex Pattern"}),(0,r.jsx)(t.td,{children:"The regular expression pattern to match in the text."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"input_type"}),(0,r.jsx)(t.td,{children:"Input Type"}),(0,r.jsx)(t.td,{children:"The type of input to save."})]}),(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:"The DataFrame to save."})]}),(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:"The Data object to save."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"message"}),(0,r.jsx)(t.td,{children:"Message"}),(0,r.jsx)(t.td,{children:"The Message to save."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"file_format"}),(0,r.jsx)(t.td,{children:"File Format"}),(0,r.jsx)(t.td,{children:"The file format to save the input in."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"file_path"}),(0,r.jsx)(t.td,{children:"File Path"}),(0,r.jsx)(t.td,{children:"The full file path including filename and extension."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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:"A list of extracted matches as Data objects."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"text"}),(0,r.jsx)(t.td,{children:"Message"}),(0,r.jsx)(t.td,{children:"The extracted matches formatted as a Message object."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"confirmation"}),(0,r.jsx)(t.td,{children:"Confirmation"}),(0,r.jsx)(t.td,{children:"The confirmation message after saving the file."})]})]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"smart-function",children:"Smart function"}),"\n",(0,r.jsx)(t.p,{children:"This component uses an LLM to generate a Lambda function for filtering or transforming structured data."}),"\n",(0,r.jsxs)(t.p,{children:["To use the ",(0,r.jsx)(t.strong,{children:"Smart function"})," component, you must connect it to a ",(0,r.jsx)(t.a,{href:"/components-models#language-model",children:"Language Model"})," component, which the component uses to generate a function based on the natural language instructions in the ",(0,r.jsx)(t.strong,{children:"Instructions"})," field."]}),"\n",(0,r.jsxs)(t.p,{children:["This example gets JSON data from the ",(0,r.jsx)(t.code,{children:"https://jsonplaceholder.typicode.com/users"})," API endpoint.\nThe ",(0,r.jsx)(t.strong,{children:"Instructions"})," field in the ",(0,r.jsx)(t.strong,{children:"Smart function"})," component specifies the task ",(0,r.jsx)(t.code,{children:"extract emails"}),".\nThe connected LLM creates a filter based on the instructions, and successfully extracts a list of email addresses from the JSON data."]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{src:n(66539).A+"",width:"1742",height:"1622"})}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"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:["The connection port for a ",(0,r.jsx)(t.a,{href:"/components-models",children:"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.jsxs)(t.td,{children:["The natural language instructions for how to filter or transform the data using a Lambda function, such as ",(0,r.jsx)(t.code,{children:"Filter the data to only include items where the 'status' is 'active'"}),"."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"sample_size"}),(0,r.jsx)(t.td,{children:"Sample Size"}),(0,r.jsx)(t.td,{children:"For large datasets, the number of characters to sample from the dataset head and tail."})]}),(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:['The number of characters for the data to be considered "large", which triggers sampling by the ',(0,r.jsx)(t.code,{children:"sample_size"})," value."]})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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:"filtered_data"}),(0,r.jsx)(t.td,{children:"Filtered Data"}),(0,r.jsxs)(t.td,{children:["The filtered or transformed ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data object"}),"."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"dataframe"}),(0,r.jsx)(t.td,{children:"DataFrame"}),(0,r.jsxs)(t.td,{children:["The filtered data as a ",(0,r.jsx)(t.a,{href:"/concepts-objects#dataframe-object",children:"DataFrame"}),"."]})]})]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"split-text",children:"Split text"}),"\n",(0,r.jsx)(t.p,{children:"This component splits text into chunks based on specified criteria. It's ideal for chunking data to be tokenized and embedded into vector databases."}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Split Text"})," component outputs ",(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 individual text chunks.\nThe ",(0,r.jsx)(t.strong,{children:"DataFrame"})," output returns a structured data format, with additional ",(0,r.jsx)(t.code,{children:"text"})," and ",(0,r.jsx)(t.code,{children:"metadata"})," columns applied."]}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["To use this component in a flow, connect a component that outputs ",(0,r.jsx)(t.a,{href:"/concepts-objects",children:"Data or DataFrame"})," to the ",(0,r.jsx)(t.strong,{children:"Split Text"})," component's ",(0,r.jsx)(t.strong,{children:"Data"})," port.\nThis example uses the ",(0,r.jsx)(t.strong,{children:"URL"})," component, which is fetching JSON placeholder data."]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"Split text component and chroma-db",src:n(49823).A+"",width:"2198",height:"1626"})}),"\n",(0,r.jsxs)(t.ol,{start:"2",children:["\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:"Split Text"})," component, define your data splitting parameters."]}),"\n"]}),"\n",(0,r.jsxs)(t.p,{children:["This example splits incoming JSON data at the separator ",(0,r.jsx)(t.code,{children:"},"}),", so each chunk contains one JSON object."]}),"\n",(0,r.jsxs)(t.p,{children:["The order of precedence is ",(0,r.jsx)(t.strong,{children:"Separator"}),", then ",(0,r.jsx)(t.strong,{children:"Chunk Size"}),", and then ",(0,r.jsx)(t.strong,{children:"Chunk Overlap"}),".\nIf any segment after separator splitting is longer than ",(0,r.jsx)(t.code,{children:"chunk_size"}),", it is split again to fit within ",(0,r.jsx)(t.code,{children:"chunk_size"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["After ",(0,r.jsx)(t.code,{children:"chunk_size"}),", ",(0,r.jsx)(t.strong,{children:"Chunk Overlap"})," is applied between chunks to maintain context."]}),"\n",(0,r.jsxs)(t.ol,{start:"3",children:["\n",(0,r.jsxs)(t.li,{children:["Connect a ",(0,r.jsx)(t.strong,{children:"Chat Output"})," component to the ",(0,r.jsx)(t.strong,{children:"Split Text"})," component's ",(0,r.jsx)(t.strong,{children:"DataFrame"})," output to view its output."]}),"\n",(0,r.jsxs)(t.li,{children:["Click ",(0,r.jsx)(t.strong,{children:"Playground"}),", and then click ",(0,r.jsx)(t.strong,{children:"Run Flow"}),".\nThe output contains a table of JSON objects split at ",(0,r.jsx)(t.code,{children:"},"}),"."]}),"\n"]}),"\n",(0,r.jsx)(h.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"{",props:{}}]},{tokens:[{content:'"userId": 1,',props:{}}]},{tokens:[{content:'"id": 1,',props:{}}]},{tokens:[{content:'"title": "Introduction to Artificial Intelligence",',props:{}}]},{tokens:[{content:'"body": "Learn the basics of Artificial Intelligence and its applications in various industries.",',props:{}}]},{tokens:[{content:'"link": "https://example.com/article1",',props:{}}]},{tokens:[{content:'"comment_count": 8',props:{}}]},{tokens:[{content:"},",props:{}}]},{tokens:[{content:"{",props:{}}]},{tokens:[{content:'"userId": 2,',props:{}}]},{tokens:[{content:'"id": 2,',props:{}}]},{tokens:[{content:'"title": "Web Development with React",',props:{}}]},{tokens:[{content:'"body": "Build modern web applications using React.js and explore its powerful features.",',props:{}}]},{tokens:[{content:'"link": "https://example.com/article2",',props:{}}]},{tokens:[{content:'"comment_count": 12',props:{}}]},{tokens:[{content:"},",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsxs)(t.ol,{start:"5",children:["\n",(0,r.jsxs)(t.li,{children:["Clear the ",(0,r.jsx)(t.strong,{children:"Separator"})," field, and then run the flow again.\nInstead of JSON objects, the output contains 50-character lines of text with 10 characters of overlap."]}),"\n"]}),"\n",(0,r.jsx)(h.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:'First chunk: "title": "Introduction to Artificial Intelligence""',props:{}}]},{tokens:[{content:'Second chunk: "elligence", "body": "Learn the basics of Artif"',props:{}}]},{tokens:[{content:'Third chunk: "s of Artificial Intelligence and its applications"',props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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 Documents"}),(0,r.jsxs)(t.td,{children:["The data to split. The component accepts ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," or ",(0,r.jsx)(t.a,{href:"/concepts-objects#dataframe-object",children:"DataFrame"})," objects."]})]}),(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:["The number of characters to overlap between chunks. 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:["The maximum number of characters in each chunk. Default: ",(0,r.jsx)(t.code,{children:"1000"}),"."]})]}),(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:["The character to split on. Default: ",(0,r.jsx)(t.code,{children:"newline"}),"."]})]}),(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:["The key to use for the text column. Default: ",(0,r.jsx)(t.code,{children:"text"}),"."]})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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:"chunks"}),(0,r.jsx)(t.td,{children:"Chunks"}),(0,r.jsxs)(t.td,{children:["A list of split text chunks as ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"dataframe"}),(0,r.jsx)(t.td,{children:"DataFrame"}),(0,r.jsxs)(t.td,{children:["A list of split text chunks as ",(0,r.jsx)(t.a,{href:"/concepts-objects#dataframe-object",children:"DataFrame"})," objects."]})]})]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"update-data",children:"Update data"}),"\n",(0,r.jsx)(t.p,{children:"This component dynamically updates or appends data with specified fields."}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"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:"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:"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:"Validates the text key presence."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(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:"The updated Data objects."})]})})]})]}),"\n",(0,r.jsx)(t.h2,{id:"legacy-components",children:"Legacy components"}),"\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Legacy"})," components are available for use but are no longer supported."]}),"\n",(0,r.jsx)(t.h3,{id:"alter-metadata",children:"Alter metadata"}),"\n",(0,r.jsx)(t.admonition,{type:"important",children:(0,r.jsxs)(t.p,{children:["This component is in ",(0,r.jsx)(t.strong,{children:"Legacy"}),", which means it is available for use but no longer in active development.\nInstead, use the ",(0,r.jsx)(t.a,{href:"#data-operations",children:"Data operations"})," component."]})}),"\n",(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.a,{href:"/concepts-objects#message-object",children:"Message"})," and ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," objects, and can also create a new Data object from user-provided text."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"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:["Text input; the value is contained in the 'text' attribute of the ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",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:"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:"Metadata fields to remove."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(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:"List of Input objects, each with added metadata."})]})})]})]}),"\n",(0,r.jsx)(t.h3,{id:"combine-data",children:"Combine data"}),"\n",(0,r.jsx)(t.admonition,{type:"important",children:(0,r.jsxs)(t.p,{children:["This component is in ",(0,r.jsx)(t.strong,{children:"Legacy"}),", which means it is available for use but no longer in active development.\nPrior to Langflow version 1.1.3, this component was named ",(0,r.jsx)(t.strong,{children:"Merge Data"}),"."]})}),"\n",(0,r.jsxs)(t.p,{children:["This component combines multiple data sources into a single unified ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," object."]}),"\n",(0,r.jsx)(t.p,{children:"The component iterates through the input list of data objects, merging them into a single data object. If the input list is empty, it returns an empty data object. If there's only one input data object, it returns that object unchanged. The merging process uses the addition operator to combine data objects."}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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.jsx)(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:"A list of data objects to be merged."})]})})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"merged_data"}),(0,r.jsx)(t.td,{children:"Merged Data"}),(0,r.jsxs)(t.td,{children:["A single ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," object containing the combined information from all input data objects."]})]})})]})]}),"\n",(0,r.jsx)(t.h3,{id:"combine-text",children:"Combine text"}),"\n",(0,r.jsx)(t.admonition,{type:"important",children:(0,r.jsxs)(t.p,{children:["This component is in ",(0,r.jsx)(t.strong,{children:"Legacy"}),", which means it is available for use but no longer in active development."]})}),"\n",(0,r.jsx)(t.p,{children:"This component concatenates two text sources into a single text chunk using a specified delimiter."}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["To use this component in a flow, connect two components that output ",(0,r.jsx)(t.a,{href:"/concepts-objects#message-object",children:"Messages"})," to the ",(0,r.jsx)(t.strong,{children:"Combine Text"})," component's ",(0,r.jsx)(t.strong,{children:"First Text"})," and ",(0,r.jsx)(t.strong,{children:"Second Text"})," inputs.\nThis example uses two ",(0,r.jsx)(t.strong,{children:"Text Input"})," components."]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"Combine text component",src:n(41502).A+"",width:"1148",height:"675"})}),"\n",(0,r.jsxs)(t.ol,{start:"2",children:["\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:"Combine Text"})," component, in the ",(0,r.jsx)(t.strong,{children:"Text"})," fields of both ",(0,r.jsx)(t.strong,{children:"Text Input"})," components, enter some text to combine."]}),"\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:"Combine Text"})," component, enter an optional ",(0,r.jsx)(t.strong,{children:"Delimiter"})," value.\nThe delimiter character separates the combined texts.\nThis example uses ",(0,r.jsx)(t.code,{children:"\\n\\n **end first text** \\n\\n **start second text** \\n\\n"})," to label the texts and create newlines between them."]}),"\n",(0,r.jsxs)(t.li,{children:["Connect a ",(0,r.jsx)(t.strong,{children:"Chat Output"})," component to view the text combination."]}),"\n",(0,r.jsxs)(t.li,{children:["Click ",(0,r.jsx)(t.strong,{children:"Playground"}),", and then click ",(0,r.jsx)(t.strong,{children:"Run Flow"}),".\nThe combined text appears in the ",(0,r.jsx)(t.strong,{children:"Playground"}),"."]}),"\n"]}),"\n",(0,r.jsx)(h.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"This is the first text. Let's combine text!",props:{}}]},{tokens:[{content:"end first text",props:{}}]},{tokens:[{content:"start second text",props:{}}]},{tokens:[{content:"Here's the second part. We'll see how combining text works.",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"first_text"}),(0,r.jsx)(t.td,{children:"First Text"}),(0,r.jsx)(t.td,{children:"The first text input to concatenate."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"second_text"}),(0,r.jsx)(t.td,{children:"Second Text"}),(0,r.jsx)(t.td,{children:"The second text input to concatenate."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"delimiter"}),(0,r.jsx)(t.td,{children:"Delimiter"}),(0,r.jsx)(t.td,{children:"A string used to separate the two text inputs. The default is a space."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"message"}),(0,r.jsx)(t.td,{children:"Message"}),(0,r.jsx)(t.td,{children:"A Message object containing the combined text."})]})})]})]}),"\n",(0,r.jsx)(t.h3,{id:"create-data",children:"Create data"}),"\n",(0,r.jsx)(t.admonition,{type:"important",children:(0,r.jsxs)(t.p,{children:["This component is in ",(0,r.jsx)(t.strong,{children:"Legacy"}),", which means it is available for use but no longer in active development."]})}),"\n",(0,r.jsxs)(t.p,{children:["This component dynamically creates a ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," object with a specified number of fields."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"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:"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:["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"}),"."]})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(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:["A ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," object created with the specified fields and text key."]})]})})]})]}),"\n",(0,r.jsx)(t.h3,{id:"filter-data",children:"Filter data"}),"\n",(0,r.jsx)(t.admonition,{type:"important",children:(0,r.jsxs)(t.p,{children:["This component is in ",(0,r.jsx)(t.strong,{children:"Legacy"}),", which means it is available for use but no longer in active development.\nInstead, use the ",(0,r.jsx)(t.a,{href:"#data-operations",children:"Data operations"})," component."]})}),"\n",(0,r.jsxs)(t.p,{children:["This component filters a ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," object based on a list of keys."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"The Data object to filter."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"filter_criteria"}),(0,r.jsx)(t.td,{children:"Filter Criteria"}),(0,r.jsx)(t.td,{children:"A list of keys to filter by."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(t.tbody,{children:(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:"A new Data object containing only the key-value pairs that match the filter criteria."})]})})]})]}),"\n",(0,r.jsx)(t.h3,{id:"filter-values",children:"Filter values"}),"\n",(0,r.jsx)(t.admonition,{type:"important",children:(0,r.jsxs)(t.p,{children:["This component is in ",(0,r.jsx)(t.strong,{children:"Legacy"}),", which means it is available for use but no longer in active development.\nInstead, use the ",(0,r.jsx)(t.a,{href:"#data-operations",children:"Data operations"})," component."]})}),"\n",(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."}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"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:"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:"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:"The operator to apply for comparing the values."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(t.tbody,{children:(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:"The resulting list of filtered data items."})]})})]})]}),"\n",(0,r.jsx)(t.h3,{id:"json-cleaner",children:"JSON cleaner"}),"\n",(0,r.jsx)(t.admonition,{type:"important",children:(0,r.jsxs)(t.p,{children:["This component is in ",(0,r.jsx)(t.strong,{children:"Legacy"}),", which means it is available for use but no longer in active development."]})}),"\n",(0,r.jsx)(t.p,{children:"The JSON cleaner component cleans JSON strings to ensure they are fully compliant with the JSON specification."}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"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.jsx)(t.td,{children:"If set to 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:"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.jsx)(t.td,{children:"If set to 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.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(t.tbody,{children:(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:"The resulting cleaned, repaired, and validated JSON string that fully complies with the JSON specification."})]})})]})]}),"\n",(0,r.jsx)(t.h3,{id:"parse-dataframe",children:"Parse DataFrame"}),"\n",(0,r.jsx)(t.admonition,{type:"important",children:(0,r.jsxs)(t.p,{children:["This component is in ",(0,r.jsx)(t.strong,{children:"Legacy"}),", which means it is available for use but no longer in active development.\nInstead, use the ",(0,r.jsx)(t.a,{href:"#parser",children:"Parser"})," component."]})}),"\n",(0,r.jsx)(t.p,{children:"This component converts DataFrames into plain text using templates."}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"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:["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:"String to join rows in output."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(t.tbody,{children:(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:"All rows combined into single text."})]})})]})]}),"\n",(0,r.jsx)(t.h3,{id:"parse-json",children:"Parse JSON"}),"\n",(0,r.jsx)(t.admonition,{type:"important",children:(0,r.jsxs)(t.p,{children:["This component is in ",(0,r.jsx)(t.strong,{children:"Legacy"}),", which means it is available for use but no longer in active development."]})}),"\n",(0,r.jsx)(t.p,{children:"This component converts and extracts JSON fields using JQ queries."}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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.jsxs)(t.td,{children:["Data object to filter (",(0,r.jsx)(t.a,{href:"/concepts-objects#message-object",children:"Message"})," or ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"}),")."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"query"}),(0,r.jsx)(t.td,{children:"JQ Query"}),(0,r.jsx)(t.td,{children:"JQ Query to filter the data"})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"filtered_data"}),(0,r.jsx)(t.td,{children:"Filtered Data"}),(0,r.jsxs)(t.td,{children:["Filtered data as list of ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})})]})]}),"\n",(0,r.jsx)(t.h3,{id:"select-data",children:"Select data"}),"\n",(0,r.jsx)(t.admonition,{type:"important",children:(0,r.jsxs)(t.p,{children:["This component is in ",(0,r.jsx)(t.strong,{children:"Legacy"}),", which means it is available for use but no longer in active development."]})}),"\n",(0,r.jsxs)(t.p,{children:["This component selects a single ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," item from a list."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"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:"Index of the data to select"})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(t.tbody,{children:(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:["The selected ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," object."]})]})})]})]})]})}function m(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}function u(e,t){throw new Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}}}]);
\ No newline at end of file
diff --git a/assets/js/6e1a9721.ac35363b.js b/assets/js/6e1a9721.ac35363b.js
deleted file mode 100644
index e21e7d5488..0000000000
--- a/assets/js/6e1a9721.ac35363b.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[321],{7685:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/vector-store-document-ingestion-fce32e9be440846a2545397e3a18b7bf.png"},8886:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/component-url-regex-8cae4a8d6491d360115ad552f0c467d3.png"},13533:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/component-dataframe-operations-86f6e1111b6f414989aca7b5fe625830.png"},17886:(e,t,n)=>{n.d(t,{A:()=>i});n(96540);var s=n(64058),r=n(74848);function i({name:e,...t}){const n=s[e];return n?(0,r.jsx)(n,{...t}):null}},35073:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/component-save-to-file-67ebbb733732670897bedd9fd1b87583.png"},41502:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/component-combine-text-a73b71c22cc8099bf2a9ba22170ea701.png"},45709:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/component-data-to-dataframe-3e921379e4e86fedf0e34e3ffae46b51.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-741a1ac37f9a2d6591ead075acc66b65.png"},66539:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/component-lambda-filter-c409acffcea6f80062295f4d8de4e881.png"},96218:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/component-parser-5f97943bbc863cee6b02c74d325a062f.png"},97050:(e,t,n)=>{n.r(t),n.d(t,{CH:()=>h,assets:()=>a,chCodeConfig:()=>x,contentTitle:()=>l,default:()=>m,frontMatter:()=>c,metadata:()=>s,toc:()=>j});const s=JSON.parse('{"id":"Components/components-processing","title":"Processing","description":"Processing components process and transform data within a flow.","source":"@site/docs/Components/components-processing.md","sourceDirName":"Components","slug":"/components-processing","permalink":"/components-processing","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Processing","slug":"/components-processing"},"sidebar":"docs","previous":{"title":"Models","permalink":"/components-models"},"next":{"title":"Prompts","permalink":"/components-prompts"}}');var r=n(74848),i=n(28453),o=n(24754),d=n(17886);const c={title:"Processing",slug:"/components-processing"},l=void 0,a={},h={annotations:o.hk,Code:o.Cy},x={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},j=[{value:"Use a processing component in a flow",id:"use-a-processing-component-in-a-flow",level:2},{value:"DataFrame operations",id:"dataframe-operations",level:2},{value:"Operations",id:"operations",level:3},{value:"Data operations",id:"data-operations",level:2},{value:"Operations",id:"operations-1",level:3},{value:"Data to DataFrame",id:"data-to-dataframe",level:2},{value:"LLM router",id:"llm-router",level:2},{value:"Message to data",id:"message-to-data",level:2},{value:"Parser",id:"parser",level:2},{value:"Regex extractor",id:"regex-extractor",level:2},{value:"Save to File",id:"save-to-file",level:2},{value:"File input format options",id:"file-input-format-options",level:3},{value:"Smart function",id:"smart-function",level:2},{value:"Split text",id:"split-text",level:2},{value:"Update data",id:"update-data",level:2},{value:"Legacy components",id:"legacy-components",level:2},{value:"Alter metadata",id:"alter-metadata",level:3},{value:"Combine data",id:"combine-data",level:3},{value:"Combine text",id:"combine-text",level:3},{value:"Create data",id:"create-data",level:3},{value:"Filter data",id:"filter-data",level:3},{value:"Filter values",id:"filter-values",level:3},{value:"JSON cleaner",id:"json-cleaner",level:3},{value:"Parse DataFrame",id:"parse-dataframe",level:3},{value:"Parse JSON",id:"parse-json",level:3},{value:"Select data",id:"select-data",level:3}];function p(e){const t={a:"a",admonition:"admonition",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,i.R)(),...e.components},{Details:s}=t;return h||u("CH",!1),h.Code||u("CH.Code",!0),s||u("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."}),"\n",(0,r.jsx)(t.h2,{id:"use-a-processing-component-in-a-flow",children:"Use a processing component in a flow"}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Split Text"})," processing component in this flow splits the incoming ",(0,r.jsx)(t.a,{href:"/concepts-objects",children:"Data"})," into chunks to be embedded into the vector store component."]}),"\n",(0,r.jsx)(t.p,{children:"The component offers control over chunk size, overlap, and separator, which affect context and granularity in vector store retrieval results."}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{src:n(7685).A+"",width:"1804",height:"1546"})}),"\n",(0,r.jsx)(t.h2,{id:"dataframe-operations",children:"DataFrame operations"}),"\n",(0,r.jsxs)(t.p,{children:["This component performs operations on ",(0,r.jsx)(t.a,{href:"https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html",children:"DataFrame"})," rows and columns."]}),"\n",(0,r.jsxs)(t.p,{children:["To use this component in a flow, connect a component that outputs ",(0,r.jsx)(t.a,{href:"/concepts-objects#dataframe-object",children:"DataFrame"})," to the ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," component."]}),"\n",(0,r.jsxs)(t.p,{children:["This example fetches JSON data from an API. The ",(0,r.jsx)(t.strong,{children:"Smart function"})," component extracts and flattens the results into a tabular DataFrame. The ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," component can then work with the retrieved data."]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"Dataframe operations with flattened dataframe",src:n(13533).A+"",width:"983",height:"696"})}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["The ",(0,r.jsx)(t.strong,{children:"API Request"})," component retrieves data with only ",(0,r.jsx)(t.code,{children:"source"})," and ",(0,r.jsx)(t.code,{children:"result"})," fields.\nFor this example, the desired data is nested within the ",(0,r.jsx)(t.code,{children:"result"})," field."]}),"\n",(0,r.jsxs)(t.li,{children:["Connect a ",(0,r.jsx)(t.strong,{children:"Smart function"})," to the API request component, and a ",(0,r.jsx)(t.strong,{children:"Language model"})," to the ",(0,r.jsx)(t.strong,{children:"Smart function"}),". This example connects a ",(0,r.jsx)(t.strong,{children:"Groq"})," model component."]}),"\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:"Groq"})," model component, add your ",(0,r.jsx)(t.strong,{children:"Groq"})," API key."]}),"\n",(0,r.jsxs)(t.li,{children:["To filter the data, in the ",(0,r.jsx)(t.strong,{children:"Smart function"})," component, in the ",(0,r.jsx)(t.strong,{children:"Instructions"})," field, use natural language to describe how the data should be filtered.\nFor this example, enter:"]}),"\n"]}),"\n",(0,r.jsx)(h.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"I want to explode the result column out into a Data object",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsx)(t.admonition,{type:"tip",children:(0,r.jsxs)(t.p,{children:["Avoid punctuation in the ",(0,r.jsx)(t.strong,{children:"Instructions"})," field, as it can cause errors."]})}),"\n",(0,r.jsxs)(t.ol,{start:"5",children:["\n",(0,r.jsxs)(t.li,{children:["To run the flow, in the ",(0,r.jsx)(t.strong,{children:"Smart function"})," component, click ",(0,r.jsx)(d.A,{name:"Play","aria-label":"Play icon"}),"."]}),"\n",(0,r.jsxs)(t.li,{children:["To inspect the filtered data, in the ",(0,r.jsx)(t.strong,{children:"Smart function"})," component, click ",(0,r.jsx)(d.A,{name:"TextSearch","aria-label":"Inspect icon"}),".\nThe result is a structured DataFrame."]}),"\n"]}),"\n",(0,r.jsx)(h.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"id | name | company | username | email | address | zip",props:{}}]},{tokens:[{content:"---|------------------|----------------------|-----------------|------------------------------------|-------------------|-------",props:{}}]},{tokens:[{content:"1 | Emily Johnson | ABC Corporation | emily_johnson | emily.johnson@abccorporation.com | 123 Main St | 12345",props:{}}]},{tokens:[{content:"2 | Michael Williams | XYZ Corp | michael_williams| michael.williams@xyzcorp.com | 456 Elm Ave | 67890",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsxs)(t.ol,{start:"7",children:["\n",(0,r.jsxs)(t.li,{children:["Add the ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," component, and a ",(0,r.jsx)(t.strong,{children:"Chat Output"})," component to the flow."]}),"\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:"DataFrame Operations"})," component, in the ",(0,r.jsx)(t.strong,{children:"Operation"})," field, select ",(0,r.jsx)(t.strong,{children:"Filter"}),"."]}),"\n",(0,r.jsxs)(t.li,{children:["To apply a filter, in the ",(0,r.jsx)(t.strong,{children:"Column Name"})," field, enter a column to filter on. This example filters by ",(0,r.jsx)(t.code,{children:"name"}),"."]}),"\n",(0,r.jsxs)(t.li,{children:["Click ",(0,r.jsx)(t.strong,{children:"Playground"}),", and then click ",(0,r.jsx)(t.strong,{children:"Run Flow"}),".\nThe flow extracts the values from the ",(0,r.jsx)(t.code,{children:"name"})," column."]}),"\n"]}),"\n",(0,r.jsx)(h.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"name",props:{}}]},{tokens:[{content:"Emily Johnson",props:{}}]},{tokens:[{content:"Michael Williams",props:{}}]},{tokens:[{content:"John Smith",props:{}}]},{tokens:[{content:"...",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsx)(t.h3,{id:"operations",children:"Operations"}),"\n",(0,r.jsxs)(t.p,{children:["This component can perform the following operations on Pandas ",(0,r.jsx)(t.a,{href:"https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html",children:"DataFrame"}),"."]}),"\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:"Operation"}),(0,r.jsx)(t.th,{children:"Required Inputs"}),(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:"Add Column"}),(0,r.jsx)(t.td,{children:"new_column_name, new_column_value"}),(0,r.jsx)(t.td,{children:"Adds a new column with a constant value."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Drop Column"}),(0,r.jsx)(t.td,{children:"column_name"}),(0,r.jsx)(t.td,{children:"Removes a specified column."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Filter"}),(0,r.jsx)(t.td,{children:"column_name, filter_value"}),(0,r.jsx)(t.td,{children:"Filters rows based on column value."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Head"}),(0,r.jsx)(t.td,{children:"num_rows"}),(0,r.jsxs)(t.td,{children:["Returns first ",(0,r.jsx)(t.code,{children:"n"})," rows."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Rename Column"}),(0,r.jsx)(t.td,{children:"column_name, new_column_name"}),(0,r.jsx)(t.td,{children:"Renames an existing column."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Replace Value"}),(0,r.jsx)(t.td,{children:"column_name, replace_value, replacement_value"}),(0,r.jsx)(t.td,{children:"Replaces values in a column."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Select Columns"}),(0,r.jsx)(t.td,{children:"columns_to_select"}),(0,r.jsx)(t.td,{children:"Selects specific columns."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Sort"}),(0,r.jsx)(t.td,{children:"column_name, ascending"}),(0,r.jsx)(t.td,{children:"Sorts DataFrame by column."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Tail"}),(0,r.jsx)(t.td,{children:"num_rows"}),(0,r.jsxs)(t.td,{children:["Returns last ",(0,r.jsx)(t.code,{children:"n"})," rows."]})]})]})]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"The input DataFrame 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.jsx)(t.td,{children:"The DataFrame operation to perform. Options include Add Column, Drop Column, Filter, Head, Rename Column, Replace Value, Select Columns, Sort, and Tail."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"column_name"}),(0,r.jsx)(t.td,{children:"Column Name"}),(0,r.jsx)(t.td,{children:"The column name to use for the operation."})]}),(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:"The value to filter rows by."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"ascending"}),(0,r.jsx)(t.td,{children:"Sort Ascending"}),(0,r.jsx)(t.td,{children:"Whether to sort in ascending order."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"new_column_name"}),(0,r.jsx)(t.td,{children:"New Column Name"}),(0,r.jsx)(t.td,{children:"The new column name when renaming or adding a column."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"new_column_value"}),(0,r.jsx)(t.td,{children:"New Column Value"}),(0,r.jsx)(t.td,{children:"The value to populate the new column with."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"columns_to_select"}),(0,r.jsx)(t.td,{children:"Columns to Select"}),(0,r.jsx)(t.td,{children:"A list of column names to select."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"num_rows"}),(0,r.jsx)(t.td,{children:"Number of Rows"}),(0,r.jsx)(t.td,{children:"The number of rows to return for head/tail operations. The default is 5."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"replace_value"}),(0,r.jsx)(t.td,{children:"Value to Replace"}),(0,r.jsx)(t.td,{children:"The value to replace in the column."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"replacement_value"}),(0,r.jsx)(t.td,{children:"Replacement Value"}),(0,r.jsx)(t.td,{children:"The value to replace with."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"output"}),(0,r.jsx)(t.td,{children:"DataFrame"}),(0,r.jsx)(t.td,{children:"The resulting DataFrame after the operation."})]})})]})]}),"\n",(0,r.jsx)(t.h2,{id:"data-operations",children:"Data operations"}),"\n",(0,r.jsxs)(t.p,{children:["This component performs operations on ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," objects, including selecting keys, evaluating literals, combining data, filtering values, appending/updating data, removing keys, and renaming keys."]}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["To use this component in a flow, connect a component that outputs ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," to the ",(0,r.jsx)(t.strong,{children:"Data Operations"})," component's input.\nAll operations in the component require at least one ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," input."]}),"\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:"Operations"})," field, select the operation you want to perform.\nFor example, send this request to the ",(0,r.jsx)(t.strong,{children:"Webhook"})," component.\nReplace ",(0,r.jsx)(t.code,{children:"YOUR_FLOW_ID"})," with your flow ID."]}),"\n"]}),"\n",(0,r.jsx)(h.Code,{codeConfig:x,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://localhost:7860/api/v1/webhook/YOUR_FLOW_ID" ',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:"-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": "Kulas Light",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "suite": "Apt. 556",',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:' "city": "Gwenborough",',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": "Romaguera-Crona",',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",(0,r.jsxs)(t.ol,{start:"3",children:["\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:"Data Operations"})," component, select the ",(0,r.jsx)(t.strong,{children:"Select Keys"})," operation to extract specific user information.\nTo add additional keys, click ",(0,r.jsx)(d.A,{name:"Plus","aria-label":"Add"})," ",(0,r.jsx)(t.strong,{children:"Add More"}),".\n",(0,r.jsx)(t.img,{alt:"A webhook and data operations component",src:n(46445).A+"",width:"4000",height:"1920"})]}),"\n",(0,r.jsxs)(t.li,{children:["Filter by ",(0,r.jsx)(t.code,{children:"name"}),", ",(0,r.jsx)(t.code,{children:"username"}),", and ",(0,r.jsx)(t.code,{children:"email"})," to select the values from the request."]}),"\n"]}),"\n",(0,r.jsx)(h.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"{",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "name"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"Leanne Graham"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "username"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"Bret"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "email"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"Sincere@april.biz"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"}",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]}),"\n",(0,r.jsx)(t.h3,{id:"operations-1",children:"Operations"}),"\n",(0,r.jsxs)(t.p,{children:["The component supports the following operations.\nAll operations in the ",(0,r.jsx)(t.strong,{children:"Data operations"})," component require at least one ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," input."]}),"\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:"Operation"}),(0,r.jsx)(t.th,{children:"Required Inputs"}),(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:"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.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:["The ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," object to operate on."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"operations"}),(0,r.jsx)(t.td,{children:"Operations"}),(0,r.jsx)(t.td,{children:"The operation to perform on the data."})]}),(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:"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:"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:"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:"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:"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:"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:"A list of keys to rename in the data."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"data_output"}),(0,r.jsx)(t.td,{children:"Data"}),(0,r.jsx)(t.td,{children:"The resulting Data object after the operation."})]})})]})]}),"\n",(0,r.jsx)(t.h2,{id:"data-to-dataframe",children:"Data to DataFrame"}),"\n",(0,r.jsxs)(t.p,{children:["This component converts one or multiple ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," objects into a ",(0,r.jsx)(t.a,{href:"/concepts-objects#dataframe-object",children:"DataFrame"}),". Each Data object corresponds to one row in the resulting DataFrame. Fields 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 'text' column."]}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["To use this component in a flow, connect a component that outputs ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," to the ",(0,r.jsx)(t.strong,{children:"Data to Dataframe"})," component's input.\nThis example connects a ",(0,r.jsx)(t.strong,{children:"Webhook"})," component to convert ",(0,r.jsx)(t.code,{children:"text"})," and ",(0,r.jsx)(t.code,{children:"data"})," into a DataFrame."]}),"\n",(0,r.jsxs)(t.li,{children:["To view the flow's output, connect a ",(0,r.jsx)(t.strong,{children:"Chat Output"})," component to the ",(0,r.jsx)(t.strong,{children:"Data to Dataframe"})," component."]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"A webhook and data to dataframe",src:n(45709).A+"",width:"1221",height:"468"})}),"\n",(0,r.jsxs)(t.ol,{start:"3",children:["\n",(0,r.jsxs)(t.li,{children:["Send a POST request to the ",(0,r.jsx)(t.strong,{children:"Webhook"})," containing your JSON data.\nReplace ",(0,r.jsx)(t.code,{children:"YOUR_FLOW_ID"})," with your flow ID.\nThis example uses the default Langflow server address."]}),"\n"]}),"\n",(0,r.jsx)(h.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:'curl -X POST "http://localhost:7860/api/v1/webhook/YOUR_FLOW_ID" \\',props:{}}]},{tokens:[{content:"-H 'Content-Type: application/json' \\",props:{}}]},{tokens:[{content:"-d '{",props:{}}]},{tokens:[{content:' "text": "Alex Cruz - Employee Profile",',props:{}}]},{tokens:[{content:' "data": {',props:{}}]},{tokens:[{content:' "Name": "Alex Cruz",',props:{}}]},{tokens:[{content:' "Role": "Developer",',props:{}}]},{tokens:[{content:' "Department": "Engineering"',props:{}}]},{tokens:[{content:" }",props:{}}]},{tokens:[{content:"}'",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsxs)(t.ol,{start:"4",children:["\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:"Playground"}),", view the output of your flow.\nThe ",(0,r.jsx)(t.strong,{children:"Data to DataFrame"})," component converts the webhook request into a ",(0,r.jsx)(t.code,{children:"DataFrame"}),", with ",(0,r.jsx)(t.code,{children:"text"})," and ",(0,r.jsx)(t.code,{children:"data"})," fields as columns."]}),"\n"]}),"\n",(0,r.jsx)(h.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"| text | data |",props:{}}]},{tokens:[{content:"|:-----------------------------|:------------------------------------------------------------------------|",props:{}}]},{tokens:[{content:"| Alex Cruz - Employee Profile | {'Name': 'Alex Cruz', 'Role': 'Developer', 'Department': 'Engineering'} |",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsxs)(t.ol,{start:"5",children:["\n",(0,r.jsx)(t.li,{children:"Send another employee data object."}),"\n"]}),"\n",(0,r.jsx)(h.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:'curl -X POST "http://localhost:7860/api/v1/webhook/YOUR_FLOW_ID" \\',props:{}}]},{tokens:[{content:"-H 'Content-Type: application/json' \\",props:{}}]},{tokens:[{content:"-d '{",props:{}}]},{tokens:[{content:' "text": "Kalani Smith - Employee Profile",',props:{}}]},{tokens:[{content:' "data": {',props:{}}]},{tokens:[{content:' "Name": "Kalani Smith",',props:{}}]},{tokens:[{content:' "Role": "Designer",',props:{}}]},{tokens:[{content:' "Department": "Design"',props:{}}]},{tokens:[{content:" }",props:{}}]},{tokens:[{content:"}'",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsxs)(t.ol,{start:"6",children:["\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:"Playground"}),", this request is also converted to ",(0,r.jsx)(t.code,{children:"DataFrame"}),"."]}),"\n"]}),"\n",(0,r.jsx)(h.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"| text | data |",props:{}}]},{tokens:[{content:"|:--------------------------------|:---------------------------------------------------------------------|",props:{}}]},{tokens:[{content:"| Kalani Smith - Employee Profile | {'Name': 'Kalani Smith', 'Role': 'Designer', 'Department': 'Design'} |",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"data_list"}),(0,r.jsx)(t.td,{children:"Data or Data List"}),(0,r.jsx)(t.td,{children:"One or multiple Data objects to transform into a DataFrame."})]})})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"dataframe"}),(0,r.jsx)(t.td,{children:"DataFrame"}),(0,r.jsx)(t.td,{children:"A DataFrame built from each Data object's fields plus a text column."})]})})]})]}),"\n",(0,r.jsx)(t.h2,{id:"llm-router",children:"LLM router"}),"\n",(0,r.jsx)(t.p,{children:"This component routes requests to the most appropriate LLM based on OpenRouter model specifications."}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"models"}),(0,r.jsx)(t.td,{children:"Language Models"}),(0,r.jsx)(t.td,{children:"A list of LLMs to route between."})]}),(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:"The input message to be routed."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"judge_llm"}),(0,r.jsx)(t.td,{children:"Judge LLM"}),(0,r.jsx)(t.td,{children:"The LLM that evaluates and selects the most appropriate model."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"optimization"}),(0,r.jsx)(t.td,{children:"Optimization"}),(0,r.jsx)(t.td,{children:"The optimization preference between quality, speed, cost, or balanced."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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:"output"}),(0,r.jsx)(t.td,{children:"Output"}),(0,r.jsx)(t.td,{children:"The response from the selected model."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"selected_model"}),(0,r.jsx)(t.td,{children:"Selected Model"}),(0,r.jsx)(t.td,{children:"The name of the chosen model."})]})]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"message-to-data",children:"Message to data"}),"\n",(0,r.jsxs)(t.p,{children:["This component converts ",(0,r.jsx)(t.a,{href:"/concepts-objects#message-object",children:"Message"})," objects to ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"message"}),(0,r.jsx)(t.td,{children:"Message"}),(0,r.jsx)(t.td,{children:"The Message object to convert to a Data object."})]})})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(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:"The converted Data object."})]})})]})]}),"\n",(0,r.jsx)(t.h2,{id:"parser",children:"Parser"}),"\n",(0,r.jsxs)(t.p,{children:["This component formats ",(0,r.jsx)(t.code,{children:"DataFrame"})," or ",(0,r.jsx)(t.code,{children:"Data"})," objects into text using templates, with an option to convert inputs directly to strings using ",(0,r.jsx)(t.code,{children:"stringify"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["To use this component, create variables for values in the ",(0,r.jsx)(t.code,{children:"template"})," the same way you would in a ",(0,r.jsx)(t.a,{href:"/components-prompts",children:"Prompt"})," component. For ",(0,r.jsx)(t.code,{children:"DataFrames"}),", use column names, for example ",(0,r.jsx)(t.code,{children:"Name: {Name}"}),". For ",(0,r.jsx)(t.code,{children:"Data"})," objects, use ",(0,r.jsx)(t.code,{children:"{text}"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["To use the ",(0,r.jsx)(t.strong,{children:"Parser"})," component with a ",(0,r.jsx)(t.strong,{children:"Structured Output"})," component, do the following:"]}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["Connect a ",(0,r.jsx)(t.strong,{children:"Structured Output"})," component's ",(0,r.jsx)(t.strong,{children:"DataFrame"})," output to the ",(0,r.jsx)(t.strong,{children:"Parser"})," component's ",(0,r.jsx)(t.strong,{children:"DataFrame"})," input."]}),"\n",(0,r.jsxs)(t.li,{children:["Connect the ",(0,r.jsx)(t.strong,{children:"File"})," component to the ",(0,r.jsx)(t.strong,{children:"Structured Output"})," component's ",(0,r.jsx)(t.strong,{children:"Message"})," input."]}),"\n",(0,r.jsxs)(t.li,{children:["Connect the ",(0,r.jsx)(t.strong,{children:"OpenAI"})," model component's ",(0,r.jsx)(t.strong,{children:"Language Model"})," output to the ",(0,r.jsx)(t.strong,{children:"Structured Output"})," component's ",(0,r.jsx)(t.strong,{children:"Language Model"})," input."]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:"The flow looks like this:"}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"A parser component connected to OpenAI and structured output",src:n(96218).A+"",width:"2300",height:"1436"})}),"\n",(0,r.jsxs)(t.ol,{start:"4",children:["\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:"Structured Output"})," component, click ",(0,r.jsx)(t.strong,{children:"Open Table"}),".\nThis opens a pane for structuring your table.\nThe table contains the rows ",(0,r.jsx)(t.strong,{children:"Name"}),", ",(0,r.jsx)(t.strong,{children:"Description"}),", ",(0,r.jsx)(t.strong,{children:"Type"}),", and ",(0,r.jsx)(t.strong,{children:"Multiple"}),"."]}),"\n",(0,r.jsxs)(t.li,{children:["Create a table that maps to the data you're loading from the ",(0,r.jsx)(t.strong,{children:"File"})," loader.\nFor example, to create a table for employees, you might have the rows ",(0,r.jsx)(t.code,{children:"id"}),", ",(0,r.jsx)(t.code,{children:"name"}),", and ",(0,r.jsx)(t.code,{children:"email"}),", all of type ",(0,r.jsx)(t.code,{children:"string"}),"."]}),"\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:"Template"})," field of the ",(0,r.jsx)(t.strong,{children:"Parser"})," component, enter a template for parsing the ",(0,r.jsx)(t.strong,{children:"Structured Output"})," component's DataFrame output into structured text.\nCreate variables for values in the ",(0,r.jsx)(t.code,{children:"template"})," the same way you would in a ",(0,r.jsx)(t.a,{href:"/components-prompts",children:"Prompt"})," component.\nFor example, to present a table of employees in Markdown:"]}),"\n"]}),"\n",(0,r.jsx)(h.Code,{codeConfig:x,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:[]}]}),"\n",(0,r.jsxs)(t.ol,{start:"7",children:["\n",(0,r.jsxs)(t.li,{children:["To run the flow, in the ",(0,r.jsx)(t.strong,{children:"Parser"})," component, click ",(0,r.jsx)(d.A,{name:"Play","aria-label":"Play icon"}),"."]}),"\n",(0,r.jsxs)(t.li,{children:["To view your parsed text, in the ",(0,r.jsx)(t.strong,{children:"Parser"})," component, click ",(0,r.jsx)(d.A,{name:"TextSearch","aria-label":"Inspect icon"}),"."]}),"\n",(0,r.jsxs)(t.li,{children:["Optionally, connect a ",(0,r.jsx)(t.strong,{children:"Chat Output"})," component, and open the ",(0,r.jsx)(t.strong,{children:"Playground"})," to see the output."]}),"\n"]}),"\n",(0,r.jsxs)(t.p,{children:["For an additional example of using the ",(0,r.jsx)(t.strong,{children:"Parser"})," component to format a DataFrame from a ",(0,r.jsx)(t.strong,{children:"Structured Output"})," component, see the ",(0,r.jsx)(t.strong,{children:"Market Research"})," template flow."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"mode"}),(0,r.jsx)(t.td,{children:"Mode"}),(0,r.jsx)(t.td,{children:'The tab selection between "Parser" and "Stringify" modes. "Stringify" converts input to a string instead of using a template.'})]}),(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:["The template for formatting using variables in curly brackets. For DataFrames, use column names, such as ",(0,r.jsx)(t.code,{children:"Name: {Name}"}),". For Data objects, use ",(0,r.jsx)(t.code,{children:"{text}"}),"."]})]}),(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.jsx)(t.td,{children:"The input to parse. Accepts either a DataFrame or Data object."})]}),(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:"The string used to separate rows or items. The default is a newline."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"clean_data"}),(0,r.jsx)(t.td,{children:"Clean Data"}),(0,r.jsx)(t.td,{children:"When stringify is enabled, this option cleans data by removing empty rows and lines."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"parsed_text"}),(0,r.jsx)(t.td,{children:"Parsed Text"}),(0,r.jsxs)(t.td,{children:["The resulting formatted text as a ",(0,r.jsx)(t.a,{href:"/concepts-objects#message-object",children:"Message"})," object."]})]})})]})]}),"\n",(0,r.jsx)(t.h2,{id:"regex-extractor",children:"Regex extractor"}),"\n",(0,r.jsx)(t.p,{children:"This component extracts patterns from text using regular expressions. It can be used to find and extract specific patterns or information from text data."}),"\n",(0,r.jsx)(t.p,{children:"To use this component in a flow:"}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["Connect the ",(0,r.jsx)(t.strong,{children:"Regex Extractor"})," to a ",(0,r.jsx)(t.strong,{children:"URL"})," component and a ",(0,r.jsx)(t.strong,{children:"Chat Output"})," component."]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"Regex extractor connected to url component",src:n(8886).A+"",width:"1606",height:"848"})}),"\n",(0,r.jsxs)(t.ol,{start:"2",children:["\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:"Regex Extractor"})," tool, enter a pattern to extract text from the ",(0,r.jsx)(t.strong,{children:"URL"}),' component\'s raw output.\nThis example extracts the first paragraph from the "In the News" section of ',(0,r.jsx)(t.code,{children:"https://en.wikipedia.org/wiki/Main_Page"}),":"]}),"\n"]}),"\n",(0,r.jsx)(h.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"In the news\\s*\\n(.*?)(?=\\n\\n)",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsx)(t.p,{children:"Result:"}),"\n",(0,r.jsx)(h.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"Peruvian writer and Nobel Prize in Literature laureate Mario Vargas Llosa (pictured) dies at the age of 89.",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsx)(t.h2,{id:"save-to-file",children:"Save to File"}),"\n",(0,r.jsxs)(t.p,{children:["This component saves ",(0,r.jsx)(t.a,{href:"/concepts-objects",children:"DataFrames, Data, or Messages"})," to various file formats."]}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["To use this component in a flow, connect a component that outputs ",(0,r.jsx)(t.a,{href:"/concepts-objects",children:"DataFrames, Data, or Messages"})," to the ",(0,r.jsx)(t.strong,{children:"Save to File"})," component's input.\nThe following example connects a ",(0,r.jsx)(t.strong,{children:"Webhook"})," component to two ",(0,r.jsx)(t.strong,{children:"Save to File"})," components to demonstrate the different outputs."]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"Two Save-to File components connected to a webhook",src:n(35073).A+"",width:"1458",height:"1732"})}),"\n",(0,r.jsxs)(t.ol,{start:"2",children:["\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:"Save to File"})," component's ",(0,r.jsx)(t.strong,{children:"Input Type"})," field, select the expected input type.\nThis example expects ",(0,r.jsx)(t.strong,{children:"Data"})," from the ",(0,r.jsx)(t.strong,{children:"Webhook"}),"."]}),"\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:"File Format"})," field, select the file type for your saved file.\nThis example uses ",(0,r.jsx)(t.code,{children:".md"})," in one ",(0,r.jsx)(t.strong,{children:"Save to File"})," component, and ",(0,r.jsx)(t.code,{children:".xlsx"})," in another."]}),"\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:"File Path"})," field, enter the path for your saved file.\nThis example uses ",(0,r.jsx)(t.code,{children:"./output/employees.xlsx"})," and ",(0,r.jsx)(t.code,{children:"./output/employees.md"})," to save the files in a directory relative to where Langflow is running.\nThe component accepts both relative and absolute paths, and creates any necessary directories if they don't exist."]}),"\n"]}),"\n",(0,r.jsx)(t.admonition,{type:"tip",children:(0,r.jsxs)(t.p,{children:["If you enter a format in the ",(0,r.jsx)(t.code,{children:"file_path"})," that is not accepted, the component appends the proper format to the file.\nFor example, if the selected ",(0,r.jsx)(t.code,{children:"file_format"})," is ",(0,r.jsx)(t.code,{children:"csv"}),", and you enter ",(0,r.jsx)(t.code,{children:"file_path"})," as ",(0,r.jsx)(t.code,{children:"./output/test.txt"}),", the file is saved as ",(0,r.jsx)(t.code,{children:"./output/test.txt.csv"})," so the file is not corrupted."]})}),"\n",(0,r.jsxs)(t.ol,{start:"5",children:["\n",(0,r.jsxs)(t.li,{children:["Send a POST request to the ",(0,r.jsx)(t.strong,{children:"Webhook"})," containing your JSON data.\nReplace ",(0,r.jsx)(t.code,{children:"YOUR_FLOW_ID"})," with your flow ID.\nThis example uses the default Langflow server address."]}),"\n"]}),"\n",(0,r.jsx)(h.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:'curl -X POST "http://localhost:7860/api/v1/webhook/YOUR_FLOW_ID" \\',props:{}}]},{tokens:[{content:"-H 'Content-Type: application/json' \\",props:{}}]},{tokens:[{content:"-d '{",props:{}}]},{tokens:[{content:' "Name": ["Alex Cruz", "Kalani Smith", "Noam Johnson"],',props:{}}]},{tokens:[{content:' "Role": ["Developer", "Designer", "Manager"],',props:{}}]},{tokens:[{content:' "Department": ["Engineering", "Design", "Management"]',props:{}}]},{tokens:[{content:"}'",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsxs)(t.ol,{start:"6",children:["\n",(0,r.jsxs)(t.li,{children:["In your local filesystem, open the ",(0,r.jsx)(t.code,{children:"outputs"})," directory.\nYou should see two files created from the data you've sent: one in ",(0,r.jsx)(t.code,{children:".xlsx"})," for structured spreadsheets, and one in Markdown."]}),"\n"]}),"\n",(0,r.jsx)(h.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"| Name | Role | Department |",props:{}}]},{tokens:[{content:"|:-------------|:----------|:-------------|",props:{}}]},{tokens:[{content:"| Alex Cruz | Developer | Engineering |",props:{}}]},{tokens:[{content:"| Kalani Smith | Designer | Design |",props:{}}]},{tokens:[{content:"| Noam Johnson | Manager | Management |",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsx)(t.h3,{id:"file-input-format-options",children:"File input format options"}),"\n",(0,r.jsxs)(t.p,{children:["For ",(0,r.jsx)(t.code,{children:"DataFrame"})," and ",(0,r.jsx)(t.code,{children:"Data"})," inputs, the component can create:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.code,{children:"csv"})}),"\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.code,{children:"excel"})}),"\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.code,{children:"json"})}),"\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.code,{children:"markdown"})}),"\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.code,{children:"pdf"})}),"\n"]}),"\n",(0,r.jsxs)(t.p,{children:["For ",(0,r.jsx)(t.code,{children:"Message"})," inputs, the component can create:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.code,{children:"txt"})}),"\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.code,{children:"json"})}),"\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.code,{children:"markdown"})}),"\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.code,{children:"pdf"})}),"\n"]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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_text"}),(0,r.jsx)(t.td,{children:"Input Text"}),(0,r.jsx)(t.td,{children:"The text to analyze and extract patterns from."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"pattern"}),(0,r.jsx)(t.td,{children:"Regex Pattern"}),(0,r.jsx)(t.td,{children:"The regular expression pattern to match in the text."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"input_type"}),(0,r.jsx)(t.td,{children:"Input Type"}),(0,r.jsx)(t.td,{children:"The type of input to save."})]}),(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:"The DataFrame to save."})]}),(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:"The Data object to save."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"message"}),(0,r.jsx)(t.td,{children:"Message"}),(0,r.jsx)(t.td,{children:"The Message to save."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"file_format"}),(0,r.jsx)(t.td,{children:"File Format"}),(0,r.jsx)(t.td,{children:"The file format to save the input in."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"file_path"}),(0,r.jsx)(t.td,{children:"File Path"}),(0,r.jsx)(t.td,{children:"The full file path including filename and extension."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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:"A list of extracted matches as Data objects."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"text"}),(0,r.jsx)(t.td,{children:"Message"}),(0,r.jsx)(t.td,{children:"The extracted matches formatted as a Message object."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"confirmation"}),(0,r.jsx)(t.td,{children:"Confirmation"}),(0,r.jsx)(t.td,{children:"The confirmation message after saving the file."})]})]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"smart-function",children:"Smart function"}),"\n",(0,r.jsx)(t.p,{children:"This component uses an LLM to generate a Lambda function for filtering or transforming structured data."}),"\n",(0,r.jsxs)(t.p,{children:["To use the ",(0,r.jsx)(t.strong,{children:"Smart function"})," component, you must connect it to a ",(0,r.jsx)(t.a,{href:"/components-models#language-model",children:"Language Model"})," component, which the component uses to generate a function based on the natural language instructions in the ",(0,r.jsx)(t.strong,{children:"Instructions"})," field."]}),"\n",(0,r.jsxs)(t.p,{children:["This example gets JSON data from the ",(0,r.jsx)(t.code,{children:"https://jsonplaceholder.typicode.com/users"})," API endpoint.\nThe ",(0,r.jsx)(t.strong,{children:"Instructions"})," field in the ",(0,r.jsx)(t.strong,{children:"Smart function"})," component specifies the task ",(0,r.jsx)(t.code,{children:"extract emails"}),".\nThe connected LLM creates a filter based on the instructions, and successfully extracts a list of email addresses from the JSON data."]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{src:n(66539).A+"",width:"1742",height:"1622"})}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"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:["The connection port for a ",(0,r.jsx)(t.a,{href:"/components-models",children:"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.jsxs)(t.td,{children:["The natural language instructions for how to filter or transform the data using a Lambda function, such as ",(0,r.jsx)(t.code,{children:"Filter the data to only include items where the 'status' is 'active'"}),"."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"sample_size"}),(0,r.jsx)(t.td,{children:"Sample Size"}),(0,r.jsx)(t.td,{children:"For large datasets, the number of characters to sample from the dataset head and tail."})]}),(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:['The number of characters for the data to be considered "large", which triggers sampling by the ',(0,r.jsx)(t.code,{children:"sample_size"})," value."]})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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:"filtered_data"}),(0,r.jsx)(t.td,{children:"Filtered Data"}),(0,r.jsxs)(t.td,{children:["The filtered or transformed ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data object"}),"."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"dataframe"}),(0,r.jsx)(t.td,{children:"DataFrame"}),(0,r.jsxs)(t.td,{children:["The filtered data as a ",(0,r.jsx)(t.a,{href:"/concepts-objects#dataframe-object",children:"DataFrame"}),"."]})]})]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"split-text",children:"Split text"}),"\n",(0,r.jsx)(t.p,{children:"This component splits text into chunks based on specified criteria. It's ideal for chunking data to be tokenized and embedded into vector databases."}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Split Text"})," component outputs ",(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 individual text chunks.\nThe ",(0,r.jsx)(t.strong,{children:"DataFrame"})," output returns a structured data format, with additional ",(0,r.jsx)(t.code,{children:"text"})," and ",(0,r.jsx)(t.code,{children:"metadata"})," columns applied."]}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["To use this component in a flow, connect a component that outputs ",(0,r.jsx)(t.a,{href:"/concepts-objects",children:"Data or DataFrame"})," to the ",(0,r.jsx)(t.strong,{children:"Split Text"})," component's ",(0,r.jsx)(t.strong,{children:"Data"})," port.\nThis example uses the ",(0,r.jsx)(t.strong,{children:"URL"})," component, which is fetching JSON placeholder data."]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"Split text component and chroma-db",src:n(49823).A+"",width:"2198",height:"1626"})}),"\n",(0,r.jsxs)(t.ol,{start:"2",children:["\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:"Split Text"})," component, define your data splitting parameters."]}),"\n"]}),"\n",(0,r.jsxs)(t.p,{children:["This example splits incoming JSON data at the separator ",(0,r.jsx)(t.code,{children:"},"}),", so each chunk contains one JSON object."]}),"\n",(0,r.jsxs)(t.p,{children:["The order of precedence is ",(0,r.jsx)(t.strong,{children:"Separator"}),", then ",(0,r.jsx)(t.strong,{children:"Chunk Size"}),", and then ",(0,r.jsx)(t.strong,{children:"Chunk Overlap"}),".\nIf any segment after separator splitting is longer than ",(0,r.jsx)(t.code,{children:"chunk_size"}),", it is split again to fit within ",(0,r.jsx)(t.code,{children:"chunk_size"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["After ",(0,r.jsx)(t.code,{children:"chunk_size"}),", ",(0,r.jsx)(t.strong,{children:"Chunk Overlap"})," is applied between chunks to maintain context."]}),"\n",(0,r.jsxs)(t.ol,{start:"3",children:["\n",(0,r.jsxs)(t.li,{children:["Connect a ",(0,r.jsx)(t.strong,{children:"Chat Output"})," component to the ",(0,r.jsx)(t.strong,{children:"Split Text"})," component's ",(0,r.jsx)(t.strong,{children:"DataFrame"})," output to view its output."]}),"\n",(0,r.jsxs)(t.li,{children:["Click ",(0,r.jsx)(t.strong,{children:"Playground"}),", and then click ",(0,r.jsx)(t.strong,{children:"Run Flow"}),".\nThe output contains a table of JSON objects split at ",(0,r.jsx)(t.code,{children:"},"}),"."]}),"\n"]}),"\n",(0,r.jsx)(h.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"{",props:{}}]},{tokens:[{content:'"userId": 1,',props:{}}]},{tokens:[{content:'"id": 1,',props:{}}]},{tokens:[{content:'"title": "Introduction to Artificial Intelligence",',props:{}}]},{tokens:[{content:'"body": "Learn the basics of Artificial Intelligence and its applications in various industries.",',props:{}}]},{tokens:[{content:'"link": "https://example.com/article1",',props:{}}]},{tokens:[{content:'"comment_count": 8',props:{}}]},{tokens:[{content:"},",props:{}}]},{tokens:[{content:"{",props:{}}]},{tokens:[{content:'"userId": 2,',props:{}}]},{tokens:[{content:'"id": 2,',props:{}}]},{tokens:[{content:'"title": "Web Development with React",',props:{}}]},{tokens:[{content:'"body": "Build modern web applications using React.js and explore its powerful features.",',props:{}}]},{tokens:[{content:'"link": "https://example.com/article2",',props:{}}]},{tokens:[{content:'"comment_count": 12',props:{}}]},{tokens:[{content:"},",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsxs)(t.ol,{start:"5",children:["\n",(0,r.jsxs)(t.li,{children:["Clear the ",(0,r.jsx)(t.strong,{children:"Separator"})," field, and then run the flow again.\nInstead of JSON objects, the output contains 50-character lines of text with 10 characters of overlap."]}),"\n"]}),"\n",(0,r.jsx)(h.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:'First chunk: "title": "Introduction to Artificial Intelligence""',props:{}}]},{tokens:[{content:'Second chunk: "elligence", "body": "Learn the basics of Artif"',props:{}}]},{tokens:[{content:'Third chunk: "s of Artificial Intelligence and its applications"',props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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 Documents"}),(0,r.jsxs)(t.td,{children:["The data to split. The component accepts ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," or ",(0,r.jsx)(t.a,{href:"/concepts-objects#dataframe-object",children:"DataFrame"})," objects."]})]}),(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:["The number of characters to overlap between chunks. 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:["The maximum number of characters in each chunk. Default: ",(0,r.jsx)(t.code,{children:"1000"}),"."]})]}),(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:["The character to split on. Default: ",(0,r.jsx)(t.code,{children:"newline"}),"."]})]}),(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:["The key to use for the text column. Default: ",(0,r.jsx)(t.code,{children:"text"}),"."]})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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:"chunks"}),(0,r.jsx)(t.td,{children:"Chunks"}),(0,r.jsxs)(t.td,{children:["A list of split text chunks as ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"dataframe"}),(0,r.jsx)(t.td,{children:"DataFrame"}),(0,r.jsxs)(t.td,{children:["A list of split text chunks as ",(0,r.jsx)(t.a,{href:"/concepts-objects#dataframe-object",children:"DataFrame"})," objects."]})]})]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"update-data",children:"Update data"}),"\n",(0,r.jsx)(t.p,{children:"This component dynamically updates or appends data with specified fields."}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"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:"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:"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:"Validates the text key presence."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(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:"The updated Data objects."})]})})]})]}),"\n",(0,r.jsx)(t.h2,{id:"legacy-components",children:"Legacy components"}),"\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Legacy"})," components are available for use but are no longer supported."]}),"\n",(0,r.jsx)(t.h3,{id:"alter-metadata",children:"Alter metadata"}),"\n",(0,r.jsx)(t.admonition,{type:"important",children:(0,r.jsxs)(t.p,{children:["This component is in ",(0,r.jsx)(t.strong,{children:"Legacy"}),", which means it is available for use but no longer in active development.\nInstead, use the ",(0,r.jsx)(t.a,{href:"#data-operations",children:"Data operations"})," component."]})}),"\n",(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.a,{href:"/concepts-objects#message-object",children:"Message"})," and ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," objects, and can also create a new Data object from user-provided text."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"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:["Text input; the value is contained in the 'text' attribute of the ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",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:"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:"Metadata fields to remove."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(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:"List of Input objects, each with added metadata."})]})})]})]}),"\n",(0,r.jsx)(t.h3,{id:"combine-data",children:"Combine data"}),"\n",(0,r.jsx)(t.admonition,{type:"important",children:(0,r.jsxs)(t.p,{children:["This component is in ",(0,r.jsx)(t.strong,{children:"Legacy"}),", which means it is available for use but no longer in active development.\nPrior to Langflow version 1.1.3, this component was named ",(0,r.jsx)(t.strong,{children:"Merge Data"}),"."]})}),"\n",(0,r.jsxs)(t.p,{children:["This component combines multiple data sources into a single unified ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," object."]}),"\n",(0,r.jsx)(t.p,{children:"The component iterates through the input list of data objects, merging them into a single data object. If the input list is empty, it returns an empty data object. If there's only one input data object, it returns that object unchanged. The merging process uses the addition operator to combine data objects."}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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.jsx)(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:"A list of data objects to be merged."})]})})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"merged_data"}),(0,r.jsx)(t.td,{children:"Merged Data"}),(0,r.jsxs)(t.td,{children:["A single ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," object containing the combined information from all input data objects."]})]})})]})]}),"\n",(0,r.jsx)(t.h3,{id:"combine-text",children:"Combine text"}),"\n",(0,r.jsx)(t.admonition,{type:"important",children:(0,r.jsxs)(t.p,{children:["This component is in ",(0,r.jsx)(t.strong,{children:"Legacy"}),", which means it is available for use but no longer in active development."]})}),"\n",(0,r.jsx)(t.p,{children:"This component concatenates two text sources into a single text chunk using a specified delimiter."}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["To use this component in a flow, connect two components that output ",(0,r.jsx)(t.a,{href:"/concepts-objects#message-object",children:"Messages"})," to the ",(0,r.jsx)(t.strong,{children:"Combine Text"})," component's ",(0,r.jsx)(t.strong,{children:"First Text"})," and ",(0,r.jsx)(t.strong,{children:"Second Text"})," inputs.\nThis example uses two ",(0,r.jsx)(t.strong,{children:"Text Input"})," components."]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"Combine text component",src:n(41502).A+"",width:"1148",height:"675"})}),"\n",(0,r.jsxs)(t.ol,{start:"2",children:["\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:"Combine Text"})," component, in the ",(0,r.jsx)(t.strong,{children:"Text"})," fields of both ",(0,r.jsx)(t.strong,{children:"Text Input"})," components, enter some text to combine."]}),"\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:"Combine Text"})," component, enter an optional ",(0,r.jsx)(t.strong,{children:"Delimiter"})," value.\nThe delimiter character separates the combined texts.\nThis example uses ",(0,r.jsx)(t.code,{children:"\\n\\n **end first text** \\n\\n **start second text** \\n\\n"})," to label the texts and create newlines between them."]}),"\n",(0,r.jsxs)(t.li,{children:["Connect a ",(0,r.jsx)(t.strong,{children:"Chat Output"})," component to view the text combination."]}),"\n",(0,r.jsxs)(t.li,{children:["Click ",(0,r.jsx)(t.strong,{children:"Playground"}),", and then click ",(0,r.jsx)(t.strong,{children:"Run Flow"}),".\nThe combined text appears in the ",(0,r.jsx)(t.strong,{children:"Playground"}),"."]}),"\n"]}),"\n",(0,r.jsx)(h.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"This is the first text. Let's combine text!",props:{}}]},{tokens:[{content:"end first text",props:{}}]},{tokens:[{content:"start second text",props:{}}]},{tokens:[{content:"Here's the second part. We'll see how combining text works.",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"first_text"}),(0,r.jsx)(t.td,{children:"First Text"}),(0,r.jsx)(t.td,{children:"The first text input to concatenate."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"second_text"}),(0,r.jsx)(t.td,{children:"Second Text"}),(0,r.jsx)(t.td,{children:"The second text input to concatenate."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"delimiter"}),(0,r.jsx)(t.td,{children:"Delimiter"}),(0,r.jsx)(t.td,{children:"A string used to separate the two text inputs. The default is a space."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"message"}),(0,r.jsx)(t.td,{children:"Message"}),(0,r.jsx)(t.td,{children:"A Message object containing the combined text."})]})})]})]}),"\n",(0,r.jsx)(t.h3,{id:"create-data",children:"Create data"}),"\n",(0,r.jsx)(t.admonition,{type:"important",children:(0,r.jsxs)(t.p,{children:["This component is in ",(0,r.jsx)(t.strong,{children:"Legacy"}),", which means it is available for use but no longer in active development."]})}),"\n",(0,r.jsxs)(t.p,{children:["This component dynamically creates a ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," object with a specified number of fields."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"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:"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:["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"}),"."]})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(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:["A ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," object created with the specified fields and text key."]})]})})]})]}),"\n",(0,r.jsx)(t.h3,{id:"filter-data",children:"Filter data"}),"\n",(0,r.jsx)(t.admonition,{type:"important",children:(0,r.jsxs)(t.p,{children:["This component is in ",(0,r.jsx)(t.strong,{children:"Legacy"}),", which means it is available for use but no longer in active development.\nInstead, use the ",(0,r.jsx)(t.a,{href:"#data-operations",children:"Data operations"})," component."]})}),"\n",(0,r.jsxs)(t.p,{children:["This component filters a ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," object based on a list of keys."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"The Data object to filter."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"filter_criteria"}),(0,r.jsx)(t.td,{children:"Filter Criteria"}),(0,r.jsx)(t.td,{children:"A list of keys to filter by."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(t.tbody,{children:(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:"A new Data object containing only the key-value pairs that match the filter criteria."})]})})]})]}),"\n",(0,r.jsx)(t.h3,{id:"filter-values",children:"Filter values"}),"\n",(0,r.jsx)(t.admonition,{type:"important",children:(0,r.jsxs)(t.p,{children:["This component is in ",(0,r.jsx)(t.strong,{children:"Legacy"}),", which means it is available for use but no longer in active development.\nInstead, use the ",(0,r.jsx)(t.a,{href:"#data-operations",children:"Data operations"})," component."]})}),"\n",(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."}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"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:"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:"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:"The operator to apply for comparing the values."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(t.tbody,{children:(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:"The resulting list of filtered data items."})]})})]})]}),"\n",(0,r.jsx)(t.h3,{id:"json-cleaner",children:"JSON cleaner"}),"\n",(0,r.jsx)(t.admonition,{type:"important",children:(0,r.jsxs)(t.p,{children:["This component is in ",(0,r.jsx)(t.strong,{children:"Legacy"}),", which means it is available for use but no longer in active development."]})}),"\n",(0,r.jsx)(t.p,{children:"The JSON cleaner component cleans JSON strings to ensure they are fully compliant with the JSON specification."}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"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.jsx)(t.td,{children:"If set to 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:"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.jsx)(t.td,{children:"If set to 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.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(t.tbody,{children:(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:"The resulting cleaned, repaired, and validated JSON string that fully complies with the JSON specification."})]})})]})]}),"\n",(0,r.jsx)(t.h3,{id:"parse-dataframe",children:"Parse DataFrame"}),"\n",(0,r.jsx)(t.admonition,{type:"important",children:(0,r.jsxs)(t.p,{children:["This component is in ",(0,r.jsx)(t.strong,{children:"Legacy"}),", which means it is available for use but no longer in active development.\nInstead, use the ",(0,r.jsx)(t.a,{href:"#parser",children:"Parser"})," component."]})}),"\n",(0,r.jsx)(t.p,{children:"This component converts DataFrames into plain text using templates."}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"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:["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:"String to join rows in output."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(t.tbody,{children:(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:"All rows combined into single text."})]})})]})]}),"\n",(0,r.jsx)(t.h3,{id:"parse-json",children:"Parse JSON"}),"\n",(0,r.jsx)(t.admonition,{type:"important",children:(0,r.jsxs)(t.p,{children:["This component is in ",(0,r.jsx)(t.strong,{children:"Legacy"}),", which means it is available for use but no longer in active development."]})}),"\n",(0,r.jsx)(t.p,{children:"This component converts and extracts JSON fields using JQ queries."}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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.jsxs)(t.td,{children:["Data object to filter (",(0,r.jsx)(t.a,{href:"/concepts-objects#message-object",children:"Message"})," or ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"}),")."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"query"}),(0,r.jsx)(t.td,{children:"JQ Query"}),(0,r.jsx)(t.td,{children:"JQ Query to filter the data"})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"filtered_data"}),(0,r.jsx)(t.td,{children:"Filtered Data"}),(0,r.jsxs)(t.td,{children:["Filtered data as list of ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})})]})]}),"\n",(0,r.jsx)(t.h3,{id:"select-data",children:"Select data"}),"\n",(0,r.jsx)(t.admonition,{type:"important",children:(0,r.jsxs)(t.p,{children:["This component is in ",(0,r.jsx)(t.strong,{children:"Legacy"}),", which means it is available for use but no longer in active development."]})}),"\n",(0,r.jsxs)(t.p,{children:["This component selects a single ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," item from a list."]}),"\n",(0,r.jsxs)(s,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"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:"Index of the data to select"})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(t.tbody,{children:(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:["The selected ",(0,r.jsx)(t.a,{href:"/concepts-objects#data-object",children:"Data"})," object."]})]})})]})]})]})}function m(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}function u(e,t){throw new Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}}}]);
\ No newline at end of file
diff --git a/assets/js/8311683c.b25dbe75.js b/assets/js/8311683c.015842e5.js
similarity index 81%
rename from assets/js/8311683c.b25dbe75.js
rename to assets/js/8311683c.015842e5.js
index e041c046bd..06f2b8e3be 100644
--- a/assets/js/8311683c.b25dbe75.js
+++ b/assets/js/8311683c.015842e5.js
@@ -1 +1 @@
-"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[4526],{1382:(e,o,n)=>{n.r(o),n.d(o,{CH:()=>h,assets:()=>d,chCodeConfig:()=>p,contentTitle:()=>a,default:()=>x,frontMatter:()=>l,metadata:()=>t,toc:()=>g});const t=JSON.parse('{"id":"Develop/webhook","title":"Trigger flows with webhooks","description":"Add a Webhook component to your flow to trigger it with external requests.","source":"@site/docs/Develop/webhook.md","sourceDirName":"Develop","slug":"/webhook","permalink":"/webhook","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Trigger flows with webhooks","slug":"/webhook"},"sidebar":"docs","previous":{"title":"Logging","permalink":"/logging"},"next":{"title":"TypeScript Client","permalink":"/typescript-client"}}');var r=n(74848),s=n(28453),i=n(24754),c=n(17886);const l={title:"Trigger flows with webhooks",slug:"/webhook"},a=void 0,d={},h={annotations:i.hk,Code:i.Cy},p={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},g=[{value:"Trigger flows with Composio webhooks",id:"trigger-flows-with-composio-webhooks",level:2},{value:"See also",id:"see-also",level:2}];function u(e){const o={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return h||f("CH",!1),h.Code||f("CH.Code",!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.jsxs)(o.p,{children:["Add a ",(0,r.jsx)(o.strong,{children:"Webhook"})," component to your flow to trigger it with external requests."]}),"\n",(0,r.jsxs)(o.p,{children:["To connect the ",(0,r.jsx)(o.strong,{children:"Webhook"})," to a ",(0,r.jsx)(o.strong,{children:"Parser"})," component to view and parse your data payload, do the following:"]}),"\n",(0,r.jsxs)(o.ol,{children:["\n",(0,r.jsxs)(o.li,{children:["\n",(0,r.jsxs)(o.p,{children:["Add a ",(0,r.jsx)(o.strong,{children:"Webhook"})," component to your flow."]}),"\n"]}),"\n",(0,r.jsxs)(o.li,{children:["\n",(0,r.jsxs)(o.p,{children:["Add a ",(0,r.jsx)(o.a,{href:"/components-processing#parser",children:"Parser"})," component to your flow."]}),"\n"]}),"\n",(0,r.jsxs)(o.li,{children:["\n",(0,r.jsxs)(o.p,{children:["Connect the ",(0,r.jsx)(o.strong,{children:"Webhook"})," component's ",(0,r.jsx)(o.strong,{children:"Data"})," output to the ",(0,r.jsx)(o.strong,{children:"Parser"})," component's ",(0,r.jsx)(o.strong,{children:"Data"})," input."]}),"\n"]}),"\n",(0,r.jsxs)(o.li,{children:["\n",(0,r.jsxs)(o.p,{children:["In the ",(0,r.jsx)(o.strong,{children:"Template"})," field of the ",(0,r.jsx)(o.strong,{children:"Parser"})," component, enter a template for parsing the ",(0,r.jsx)(o.strong,{children:"Webhook"})," component's input into structured text."]}),"\n",(0,r.jsx)(o.admonition,{type:"important",children:(0,r.jsxs)(o.p,{children:["The component may fail to build because it needs data from the ",(0,r.jsx)(o.strong,{children:"Webhook"})," first.\nIf you experience issues, change the ",(0,r.jsx)(o.strong,{children:"Mode"})," on the ",(0,r.jsx)(o.strong,{children:"Parser"})," component to ",(0,r.jsx)(o.strong,{children:"Stringify"}),", so the component outputs a single string."]})}),"\n",(0,r.jsxs)(o.p,{children:["Create variables for values in the ",(0,r.jsx)(o.code,{children:"template"})," the same way you would in a ",(0,r.jsx)(o.a,{href:"/components-prompts",children:"Prompt"})," component.\nFor example, to parse ",(0,r.jsx)(o.code,{children:"id"}),", ",(0,r.jsx)(o.code,{children:"name"}),", and ",(0,r.jsx)(o.code,{children:"email"})," strings:"]}),"\n",(0,r.jsx)(h.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"ID: {id} - Name: {name} - Email: {email}",props:{}}]}],lang:"text"},annotations:[]}]}),"\n"]}),"\n",(0,r.jsxs)(o.li,{children:["\n",(0,r.jsxs)(o.p,{children:["In the ",(0,r.jsx)(o.strong,{children:"Endpoint"})," field of the ",(0,r.jsx)(o.strong,{children:"Webhook"})," component, copy the API endpoint for your external requests."]}),"\n"]}),"\n",(0,r.jsxs)(o.li,{children:["\n",(0,r.jsxs)(o.p,{children:["Optionally, to retrieve a complete example request from the component, click ",(0,r.jsx)(o.strong,{children:"Controls"}),", and then copy the command from the ",(0,r.jsx)(o.strong,{children:"cURL"})," value field."]}),"\n",(0,r.jsx)(o.admonition,{type:"important",children:(0,r.jsxs)(o.p,{children:["The default curl command includes a field for ",(0,r.jsx)(o.code,{children:"x-api-key"}),". This field is ",(0,r.jsx)(o.strong,{children:"optional"})," and can be deleted from the command if you aren't using authentication."]})}),"\n"]}),"\n",(0,r.jsxs)(o.li,{children:["\n",(0,r.jsxs)(o.p,{children:["Send a POST request with any data to trigger your flow.\nThis example uses ",(0,r.jsx)(o.code,{children:"id"}),", ",(0,r.jsx)(o.code,{children:"name"}),", and ",(0,r.jsx)(o.code,{children:"email"})," strings.\nReplace ",(0,r.jsx)(o.strong,{children:"FLOW_ID"})," with your flow's ID, which can be found on the ",(0,r.jsx)(o.a,{href:"/concepts-publish",children:"Publish pane"})," or in the flow's URL."]}),"\n",(0,r.jsx)(h.Code,{codeConfig:p,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://localhost:7860/api/v1/webhook/YOUR_FLOW_ID" ',props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" -H ",props:{style:{color:"#79C0FF"}}},{content:"'Content-Type: application/json' ",props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" -d ",props:{style:{color:"#79C0FF"}}},{content:'\'{"id": "12345", "name": "alex", "email": "alex@email.com"}\'',props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,r.jsx)(o.p,{children:"This response indicates Langflow received your request:"}),"\n",(0,r.jsx)(h.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"{",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "message"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"Task started in the background"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "status"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"in progress"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"}",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]}),"\n"]}),"\n",(0,r.jsxs)(o.li,{children:["\n",(0,r.jsxs)(o.p,{children:["To view the data received from your request, in the ",(0,r.jsx)(o.strong,{children:"Parser"})," component, click ",(0,r.jsx)(c.A,{name:"TextSearch","aria-label":"Inspect icon"}),"."]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(o.p,{children:["You should receive a string of parsed text, like ",(0,r.jsx)(o.code,{children:"ID: 12345 - Name: alex - Email: alex@email.com"}),"."]}),"\n",(0,r.jsx)(o.p,{children:"You have successfully parsed data out of an external JSON payload."}),"\n",(0,r.jsx)(o.p,{children:"By passing the event trigger data payload directly into a flow, you can also parse the event data with a chain of components, and use its data to trigger other events."}),"\n",(0,r.jsx)(o.h2,{id:"trigger-flows-with-composio-webhooks",children:"Trigger flows with Composio webhooks"}),"\n",(0,r.jsxs)(o.p,{children:["Now that you've triggered the webhook component manually, follow along with this step-by-step video guide for triggering flows with payloads from external applications: ",(0,r.jsx)(o.a,{href:"https://www.youtube.com/watch?v=IC1CAtzFRE0",children:"How to Use Webhooks in Langflow"}),"."]}),"\n",(0,r.jsx)(o.h2,{id:"see-also",children:"See also"}),"\n",(0,r.jsxs)(o.ul,{children:["\n",(0,r.jsx)(o.li,{children:(0,r.jsx)(o.a,{href:"/api-flows-run",children:"Flow trigger endpoints"})}),"\n"]})]})}function x(e={}){const{wrapper:o}={...(0,s.R)(),...e.components};return o?(0,r.jsx)(o,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}function f(e,o){throw new Error("Expected "+(o?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}},17886:(e,o,n)=>{n.d(o,{A:()=>s});n(96540);var t=n(64058),r=n(74848);function s({name:e,...o}){const n=t[e];return n?(0,r.jsx)(n,{...o}):null}}}]);
\ No newline at end of file
+"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[4526],{1382:(e,o,n)=>{n.r(o),n.d(o,{CH:()=>h,assets:()=>a,chCodeConfig:()=>p,contentTitle:()=>d,default:()=>x,frontMatter:()=>l,metadata:()=>t,toc:()=>g});const t=JSON.parse('{"id":"Develop/webhook","title":"Trigger flows with webhooks","description":"Add a Webhook component to your flow to trigger it with external requests.","source":"@site/docs/Develop/webhook.md","sourceDirName":"Develop","slug":"/webhook","permalink":"/webhook","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Trigger flows with webhooks","slug":"/webhook"},"sidebar":"docs","previous":{"title":"Logging","permalink":"/logging"},"next":{"title":"TypeScript Client","permalink":"/typescript-client"}}');var r=n(74848),s=n(28453),i=n(24754),c=n(17886);const l={title:"Trigger flows with webhooks",slug:"/webhook"},d=void 0,a={},h={annotations:i.hk,Code:i.Cy},p={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},g=[{value:"Trigger flows with Composio webhooks",id:"trigger-flows-with-composio-webhooks",level:2},{value:"See also",id:"see-also",level:2}];function u(e){const o={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return h||f("CH",!1),h.Code||f("CH.Code",!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.jsxs)(o.p,{children:["Add a ",(0,r.jsx)(o.strong,{children:"Webhook"})," component to your flow to trigger it with external requests."]}),"\n",(0,r.jsxs)(o.p,{children:["To connect the ",(0,r.jsx)(o.strong,{children:"Webhook"})," to a ",(0,r.jsx)(o.strong,{children:"Parser"})," component to view and parse your data payload, do the following:"]}),"\n",(0,r.jsxs)(o.ol,{children:["\n",(0,r.jsxs)(o.li,{children:["\n",(0,r.jsxs)(o.p,{children:["Add a ",(0,r.jsx)(o.strong,{children:"Webhook"})," component to your flow."]}),"\n"]}),"\n",(0,r.jsxs)(o.li,{children:["\n",(0,r.jsxs)(o.p,{children:["Add a ",(0,r.jsx)(o.a,{href:"/components-processing#parser",children:"Parser"})," component to your flow."]}),"\n"]}),"\n",(0,r.jsxs)(o.li,{children:["\n",(0,r.jsxs)(o.p,{children:["Connect the ",(0,r.jsx)(o.strong,{children:"Webhook"})," component's ",(0,r.jsx)(o.strong,{children:"Data"})," output to the ",(0,r.jsx)(o.strong,{children:"Parser"})," component's ",(0,r.jsx)(o.strong,{children:"Data"})," input."]}),"\n"]}),"\n",(0,r.jsxs)(o.li,{children:["\n",(0,r.jsxs)(o.p,{children:["In the ",(0,r.jsx)(o.strong,{children:"Template"})," field of the ",(0,r.jsx)(o.strong,{children:"Parser"})," component, enter a template for parsing the ",(0,r.jsx)(o.strong,{children:"Webhook"})," component's input into structured text."]}),"\n",(0,r.jsx)(o.admonition,{type:"important",children:(0,r.jsxs)(o.p,{children:["The component may fail to build because it needs data from the ",(0,r.jsx)(o.strong,{children:"Webhook"})," first.\nIf you experience issues, change the ",(0,r.jsx)(o.strong,{children:"Mode"})," on the ",(0,r.jsx)(o.strong,{children:"Parser"})," component to ",(0,r.jsx)(o.strong,{children:"Stringify"}),", so the component outputs a single string."]})}),"\n",(0,r.jsxs)(o.p,{children:["Create variables for values in the ",(0,r.jsx)(o.code,{children:"template"})," the same way you would in a ",(0,r.jsx)(o.a,{href:"/components-prompts",children:"Prompt"})," component.\nFor example, to parse ",(0,r.jsx)(o.code,{children:"id"}),", ",(0,r.jsx)(o.code,{children:"name"}),", and ",(0,r.jsx)(o.code,{children:"email"})," strings:"]}),"\n",(0,r.jsx)(h.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"ID: {id} - Name: {name} - Email: {email}",props:{}}]}],lang:"text"},annotations:[]}]}),"\n"]}),"\n",(0,r.jsxs)(o.li,{children:["\n",(0,r.jsxs)(o.p,{children:["In the ",(0,r.jsx)(o.strong,{children:"Endpoint"})," field of the ",(0,r.jsx)(o.strong,{children:"Webhook"})," component, copy the API endpoint for your external requests."]}),"\n"]}),"\n",(0,r.jsxs)(o.li,{children:["\n",(0,r.jsxs)(o.p,{children:["Optionally, to retrieve a complete example request from the component, click ",(0,r.jsx)(o.strong,{children:"Controls"}),", and then copy the command from the ",(0,r.jsx)(o.strong,{children:"cURL"})," value field."]}),"\n",(0,r.jsx)(o.admonition,{type:"important",children:(0,r.jsxs)(o.p,{children:["The default curl command includes a field for ",(0,r.jsx)(o.code,{children:"x-api-key"}),". This field is ",(0,r.jsx)(o.strong,{children:"optional"})," and can be deleted from the command if you aren't using authentication."]})}),"\n"]}),"\n",(0,r.jsxs)(o.li,{children:["\n",(0,r.jsxs)(o.p,{children:["Send a POST request with any data to trigger your flow.\nThis example uses ",(0,r.jsx)(o.code,{children:"id"}),", ",(0,r.jsx)(o.code,{children:"name"}),", and ",(0,r.jsx)(o.code,{children:"email"})," strings.\nReplace ",(0,r.jsx)(o.strong,{children:"FLOW_ID"})," with your flow's ID, which can be found on the ",(0,r.jsx)(o.a,{href:"/concepts-publish",children:"Publish pane"})," or in the flow's URL."]}),"\n",(0,r.jsx)(h.Code,{codeConfig:p,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://localhost:7860/api/v1/webhook/YOUR_FLOW_ID" ',props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" -H ",props:{style:{color:"#79C0FF"}}},{content:"'Content-Type: application/json' ",props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" -d ",props:{style:{color:"#79C0FF"}}},{content:'\'{"id": "12345", "name": "alex", "email": "alex@email.com"}\'',props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,r.jsx)(o.p,{children:"This response indicates Langflow received your request:"}),"\n",(0,r.jsx)(h.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"{",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "message"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"Task started in the background"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "status"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"in progress"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"}",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]}),"\n"]}),"\n",(0,r.jsxs)(o.li,{children:["\n",(0,r.jsxs)(o.p,{children:["To view the data received from your request, in the ",(0,r.jsx)(o.strong,{children:"Parser"})," component, click ",(0,r.jsx)(c.A,{name:"TextSearch","aria-hidden":"true"})," ",(0,r.jsx)(o.strong,{children:"Inspect output"}),"."]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(o.p,{children:["You should receive a string of parsed text, like ",(0,r.jsx)(o.code,{children:"ID: 12345 - Name: alex - Email: alex@email.com"}),"."]}),"\n",(0,r.jsx)(o.p,{children:"You have successfully parsed data out of an external JSON payload."}),"\n",(0,r.jsx)(o.p,{children:"By passing the event trigger data payload directly into a flow, you can also parse the event data with a chain of components, and use its data to trigger other events."}),"\n",(0,r.jsx)(o.h2,{id:"trigger-flows-with-composio-webhooks",children:"Trigger flows with Composio webhooks"}),"\n",(0,r.jsxs)(o.p,{children:["Now that you've triggered the webhook component manually, follow along with this step-by-step video guide for triggering flows with payloads from external applications: ",(0,r.jsx)(o.a,{href:"https://www.youtube.com/watch?v=IC1CAtzFRE0",children:"How to Use Webhooks in Langflow"}),"."]}),"\n",(0,r.jsx)(o.h2,{id:"see-also",children:"See also"}),"\n",(0,r.jsxs)(o.ul,{children:["\n",(0,r.jsx)(o.li,{children:(0,r.jsx)(o.a,{href:"/api-flows-run",children:"Flow trigger endpoints"})}),"\n"]})]})}function x(e={}){const{wrapper:o}={...(0,s.R)(),...e.components};return o?(0,r.jsx)(o,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}function f(e,o){throw new Error("Expected "+(o?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}},17886:(e,o,n)=>{n.d(o,{A:()=>s});n(96540);var t=n(64058),r=n(74848);function s({name:e,...o}){const n=t[e];return n?(0,r.jsx)(n,{...o}):null}}}]);
\ No newline at end of file
diff --git a/assets/js/885eb549.347ccb7c.js b/assets/js/885eb549.347ccb7c.js
new file mode 100644
index 0000000000..59e3298c8d
--- /dev/null
+++ b/assets/js/885eb549.347ccb7c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[5647],{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}},61217:(e,n,t)=>{t.r(n),t.d(n,{CH:()=>h,assets:()=>p,chCodeConfig:()=>a,contentTitle:()=>d,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>x});const o=JSON.parse('{"id":"Concepts/concepts-components","title":"Components","description":"A component is a single building block within a flow with inputs, outputs, functions, and parameters that define its functionality. A single component is like a class within a larger application.","source":"@site/docs/Concepts/concepts-components.md","sourceDirName":"Concepts","slug":"/concepts-components","permalink":"/concepts-components","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Components","slug":"/concepts-components"},"sidebar":"docs","previous":{"title":"Playground","permalink":"/concepts-playground"},"next":{"title":"Flows","permalink":"/concepts-flows"}}');var s=t(74848),r=t(28453),c=t(24754),l=t(17886);const i={title:"Components",slug:"/concepts-components"},d="Langflow components overview",p={},h={annotations:c.hk,Code:c.Cy},a={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},x=[{value:"Component menu",id:"component-menu",level:2},{value:"Component logs",id:"component-logs",level:2},{value:"Run one component",id:"run-one-component",level:2},{value:"Component ports",id:"component-ports",level:2},{value:"Component port data type colors",id:"component-port-data-type-colors",level:3},{value:"Component code",id:"component-code",level:2},{value:"Freeze",id:"freeze",level:2},{value:"Additional component options",id:"additional-component-options",level:2},{value:"Component shortcuts",id:"component-shortcuts",level:3},{value:"Group components in the workspace",id:"group-components-in-the-workspace",level:2},{value:"Component version",id:"component-version",level:2},{value:"Review and update components",id:"review-and-update-components",level:3},{value:"Components sidebar",id:"components-sidebar",level:2}];function j(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",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:t}=n;return h||m("CH",!1),h.Code||m("CH.Code",!0),t||m("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.header,{children:(0,s.jsx)(n.h1,{id:"langflow-components-overview",children:"Langflow components overview"})}),"\n",(0,s.jsx)(n.p,{children:"A component is a single building block within a flow with inputs, outputs, functions, and parameters that define its functionality. A single component is like a class within a larger application."}),"\n",(0,s.jsxs)(n.p,{children:["To add a component to a flow, drag it from the ",(0,s.jsx)(n.strong,{children:"Component"})," menu to the ",(0,s.jsx)(n.strong,{children:"Workspace"}),"."]}),"\n",(0,s.jsx)(n.p,{children:"Learn more about components and how they work on this page."}),"\n",(0,s.jsx)(n.h2,{id:"component-menu",children:"Component menu"}),"\n",(0,s.jsxs)(n.p,{children:["All components have a ",(0,s.jsx)(n.strong,{children:"Component menu"})," that contains meta settings for the component."]}),"\n",(0,s.jsx)(n.p,{children:"To access this menu for a specific component, select a component in a flow.\nThe menu appears above the selected component."}),"\n",(0,s.jsx)("img",{src:"/img/openai-model-component.png",alt:"OpenAI component with the component menu visible",style:{display:"block",margin:"auto",width:300}}),"\n",(0,s.jsxs)(n.p,{children:["You can use the controls in the ",(0,s.jsx)(n.strong,{children:"Component menu"})," to manage and configure the component on a high level, including the following actions:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Code"}),": Modify the component settings by directly editing the component's Python code."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Controls"}),": Adjust all component parameters, including optional settings that are hidden by default."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Tool Mode"}),": Enable tool mode when combining a component with an agent component."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Freeze"}),": After a component runs, lock its previous output state to prevent it from re-running."]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["Click ",(0,s.jsx)(l.A,{name:"Ellipsis","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"All"})," to see additional options for a component."]}),"\n",(0,s.jsx)(n.h2,{id:"component-logs",children:"Component logs"}),"\n",(0,s.jsxs)(n.p,{children:["To view a component's output and logs, click the ",(0,s.jsx)(l.A,{name:"TextSearch","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Inspect output"})," icon."]}),"\n",(0,s.jsx)(n.h2,{id:"run-one-component",children:"Run one component"}),"\n",(0,s.jsxs)(n.p,{children:["To run a single component, click ",(0,s.jsx)(l.A,{name:"Play","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Play"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["Running a single component with the ",(0,s.jsx)(n.strong,{children:"Play"})," button is different from running the entire flow. In a single component run, the ",(0,s.jsx)(n.code,{children:"build_vertex"})," function is called, which builds and runs only the single component with direct inputs provided through the UI (the ",(0,s.jsx)(n.code,{children:"inputs_dict"})," parameter). The ",(0,s.jsx)(n.code,{children:"VertexBuildResult"})," data is passed to the ",(0,s.jsx)(n.code,{children:"build_and_run"})," method, which calls the component's ",(0,s.jsx)(n.code,{children:"build"})," method and runs it. Unlike running the full flow, running a single component does not automatically execute its upstream dependencies."]}),"\n",(0,s.jsxs)(n.p,{children:["A ",(0,s.jsx)(l.A,{name:"Check","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Checkmark"})," indicates that the component ran successfully."]}),"\n",(0,s.jsx)(n.h2,{id:"component-ports",children:"Component ports"}),"\n",(0,s.jsxs)(n.p,{children:["Handles (",(0,s.jsx)(l.A,{name:"Circle",size:"16","aria-label":"A circle on the side of a component"}),") on the side of a component indicate the types of inputs and outputs that can be connected at that port. Hover over a handle to see connection details."]}),"\n",(0,s.jsx)("img",{src:"/img/prompt-component.png",alt:"Prompt component",style:{display:"block",margin:"auto",width:300}}),"\n",(0,s.jsx)(n.h3,{id:"component-port-data-type-colors",children:"Component port data type colors"}),"\n",(0,s.jsx)(n.p,{children:"The following table lists the handle colors and their corresponding data types:"}),"\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:"Data type"}),(0,s.jsx)(n.th,{children:"Handle color"}),(0,s.jsx)(n.th,{children:"Handle"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Data"}),(0,s.jsx)(n.td,{children:"Red"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(l.A,{name:"Circle",size:"16","aria-label":"A circle on the side of a component",style:{color:"#dc2626"}})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"DataFrame"}),(0,s.jsx)(n.td,{children:"Pink"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(l.A,{name:"Circle",size:"16","aria-label":"A circle on the side of a component",style:{color:"#ec4899"}})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Embeddings"}),(0,s.jsx)(n.td,{children:"Emerald"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(l.A,{name:"Circle",size:"16","aria-label":"A circle on the side of a component",style:{color:"#10b981"}})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"LanguageModel"}),(0,s.jsx)(n.td,{children:"Fuchsia"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(l.A,{name:"Circle",size:"16","aria-label":"A circle on the side of a component",style:{color:"#c026d3"}})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Memory"}),(0,s.jsx)(n.td,{children:"Orange"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(l.A,{name:"Circle",size:"16","aria-label":"A circle on the side of a component",style:{color:"#f97316"}})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Message"}),(0,s.jsx)(n.td,{children:"Indigo"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(l.A,{name:"Circle",size:"16","aria-label":"A circle on the side of a component",style:{color:"#4f46e5"}})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Text"}),(0,s.jsx)(n.td,{children:"Indigo"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(l.A,{name:"Circle",size:"16","aria-label":"A circle on the side of a component",style:{color:"#4f46e5"}})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Tool"}),(0,s.jsx)(n.td,{children:"Cyan"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(l.A,{name:"Circle",size:"16","aria-label":"A circle on the side of a component",style:{color:"#06b6d4"}})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"unknown"}),(0,s.jsx)(n.td,{children:"Gray"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(l.A,{name:"Circle",size:"16","aria-label":"A circle on the side of a component",style:{color:"#9CA3AF"}})})]})]})]}),"\n",(0,s.jsx)(n.h2,{id:"component-code",children:"Component code"}),"\n",(0,s.jsxs)(n.p,{children:["A component inherits from a base ",(0,s.jsx)(n.code,{children:"Component"})," class that defines its interface and behavior."]}),"\n",(0,s.jsxs)(n.p,{children:["For example, the ",(0,s.jsx)(n.a,{href:"https://github.com/langflow-ai/langflow/blob/main/src/backend/base/langflow/components/langchain_utilities/recursive_character.py",children:"Recursive character text splitter"})," is a child of the ",(0,s.jsx)(n.a,{href:"https://github.com/langflow-ai/langflow/blob/main/src/backend/base/langflow/base/textsplitters/model.py",children:"LCTextSplitterComponent"})," class."]}),"\n",(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:"Recursive character text splitter code"}),(0,s.jsx)(h.Code,{codeConfig:a,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"from",props:{style:{color:"#FF7B72"}}},{content:" typing ",props:{style:{color:"#C9D1D9"}}},{content:"import",props:{style:{color:"#FF7B72"}}},{content:" Any",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"from",props:{style:{color:"#FF7B72"}}},{content:" langchain_text_splitters ",props:{style:{color:"#C9D1D9"}}},{content:"import",props:{style:{color:"#FF7B72"}}},{content:" RecursiveCharacterTextSplitter, TextSplitter",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"from",props:{style:{color:"#FF7B72"}}},{content:" langflow.base.textsplitters.model ",props:{style:{color:"#C9D1D9"}}},{content:"import",props:{style:{color:"#FF7B72"}}},{content:" LCTextSplitterComponent",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"from",props:{style:{color:"#FF7B72"}}},{content:" langflow.inputs.inputs ",props:{style:{color:"#C9D1D9"}}},{content:"import",props:{style:{color:"#FF7B72"}}},{content:" DataInput, IntInput, MessageTextInput",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"from",props:{style:{color:"#FF7B72"}}},{content:" langflow.utils.util ",props:{style:{color:"#C9D1D9"}}},{content:"import",props:{style:{color:"#FF7B72"}}},{content:" unescape_string",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"class ",props:{style:{color:"#FF7B72"}}},{content:"RecursiveCharacterTextSplitterComponent",props:{style:{color:"#FFA657"}}},{content:"(",props:{style:{color:"#C9D1D9"}}},{content:"LCTextSplitterComponent",props:{style:{color:"#79C0FF"}}},{content:"):",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" display_name: ",props:{style:{color:"#C9D1D9"}}},{content:"str ",props:{style:{color:"#79C0FF"}}},{content:"= ",props:{style:{color:"#FF7B72"}}},{content:'"Recursive Character Text Splitter"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" description: ",props:{style:{color:"#C9D1D9"}}},{content:"str ",props:{style:{color:"#79C0FF"}}},{content:"= ",props:{style:{color:"#FF7B72"}}},{content:'"Split text trying to keep all related text together."',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" documentation: ",props:{style:{color:"#C9D1D9"}}},{content:"str ",props:{style:{color:"#79C0FF"}}},{content:"= ",props:{style:{color:"#FF7B72"}}},{content:'"https://docs.langflow.org/components-processing"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" name ",props:{style:{color:"#C9D1D9"}}},{content:"= ",props:{style:{color:"#FF7B72"}}},{content:'"RecursiveCharacterTextSplitter"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" icon ",props:{style:{color:"#C9D1D9"}}},{content:"= ",props:{style:{color:"#FF7B72"}}},{content:'"LangChain"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" inputs ",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:" [",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" IntInput(",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"chunk_size"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" display_name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"Chunk Size"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" info",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"The maximum length of each chunk."',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" value",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"1000",props:{style:{color:"#79C0FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" ),",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" IntInput(",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"chunk_overlap"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" display_name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"Chunk Overlap"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" info",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"The amount of overlap between chunks."',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" value",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"200",props:{style:{color:"#79C0FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" ),",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" DataInput(",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"data_input"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" display_name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"Input"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" info",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"The texts to split."',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" input_types",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"[",props:{style:{color:"#C9D1D9"}}},{content:'"Document"',props:{style:{color:"#A5D6FF"}}},{content:", ",props:{style:{color:"#C9D1D9"}}},{content:'"Data"',props:{style:{color:"#A5D6FF"}}},{content:"],",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" ),",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" MessageTextInput(",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"separators"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" display_name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"Separators"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" info",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"'The characters to split on.",props:{style:{color:"#A5D6FF"}}},{content:"\\n",props:{style:{color:"#79C0FF"}}},{content:'If left empty defaults to ["',props:{style:{color:"#A5D6FF"}}},{content:"\\\\",props:{style:{color:"#79C0FF"}}},{content:"n",props:{style:{color:"#A5D6FF"}}},{content:"\\\\",props:{style:{color:"#79C0FF"}}},{content:'n", "',props:{style:{color:"#A5D6FF"}}},{content:"\\\\",props:{style:{color:"#79C0FF"}}},{content:'n", " ", ""].\'',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" is_list",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"True",props:{style:{color:"#79C0FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" ),",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" ]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" def ",props:{style:{color:"#FF7B72"}}},{content:"get_data_input",props:{style:{color:"#D2A8FF"}}},{content:"(self) -> Any:",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" return ",props:{style:{color:"#FF7B72"}}},{content:"self",props:{style:{color:"#79C0FF"}}},{content:".data_input",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" def ",props:{style:{color:"#FF7B72"}}},{content:"build_text_splitter",props:{style:{color:"#D2A8FF"}}},{content:"(self) -> TextSplitter:",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" if not ",props:{style:{color:"#FF7B72"}}},{content:"self",props:{style:{color:"#79C0FF"}}},{content:".separators:",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" separators: list[",props:{style:{color:"#C9D1D9"}}},{content:"str",props:{style:{color:"#79C0FF"}}},{content:"] ",props:{style:{color:"#C9D1D9"}}},{content:"| ",props:{style:{color:"#FF7B72"}}},{content:"None ",props:{style:{color:"#79C0FF"}}},{content:"= ",props:{style:{color:"#FF7B72"}}},{content:"None",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" else",props:{style:{color:"#FF7B72"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" # check if the separators list has escaped characters",props:{style:{color:"#8B949E"}}}]},{tokens:[{content:" # if there are escaped characters, unescape them",props:{style:{color:"#8B949E"}}}]},{tokens:[{content:" separators ",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:" [unescape_string(x) ",props:{style:{color:"#C9D1D9"}}},{content:"for",props:{style:{color:"#FF7B72"}}},{content:" x ",props:{style:{color:"#C9D1D9"}}},{content:"in ",props:{style:{color:"#FF7B72"}}},{content:"self",props:{style:{color:"#79C0FF"}}},{content:".separators]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" return",props:{style:{color:"#FF7B72"}}},{content:" RecursiveCharacterTextSplitter(",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" separators",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"separators,",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" chunk_size",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"self",props:{style:{color:"#79C0FF"}}},{content:".chunk_size,",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" chunk_overlap",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"self",props:{style:{color:"#79C0FF"}}},{content:".chunk_overlap,",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" )",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]}],lang:"python"},annotations:[]}]})]}),"\n",(0,s.jsx)(n.p,{children:"Components include definitions for inputs and outputs, which are represented in the UI with color-coded ports."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Input Definition:"})," Each input (like ",(0,s.jsx)(n.code,{children:"IntInput"})," or ",(0,s.jsx)(n.code,{children:"DataInput"}),") specifies an input's type, name, and display properties, which appear as configurable fields in the component's UI panel."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Methods:"})," Components have methods or functions that handle their functionality. This component has two methods.\n",(0,s.jsx)(n.code,{children:"get_data_input"})," retrieves the text data to be split from the component's input. This makes the data available to the class.\n",(0,s.jsx)(n.code,{children:"build_text_splitter"})," creates a ",(0,s.jsx)(n.code,{children:"RecursiveCharacterTextSplitter"})," object by calling its parent class's ",(0,s.jsx)(n.code,{children:"build"})," method. The text is split with the created splitter and passed to the next component.\nWhen used in a flow, this component:"]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsx)(n.li,{children:"Displays its configuration options in the UI."}),"\n",(0,s.jsx)(n.li,{children:"Validates user inputs based on the input types."}),"\n",(0,s.jsx)(n.li,{children:"Processes data using the configured parameters."}),"\n",(0,s.jsx)(n.li,{children:"Passes results to the next component."}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"freeze",children:"Freeze"}),"\n",(0,s.jsxs)(n.p,{children:["After a component runs, ",(0,s.jsx)(n.strong,{children:"Freeze"})," locks the component's previous output state to prevent it from re-running."]}),"\n",(0,s.jsxs)(n.p,{children:["If you're expecting consistent output from a component and don't need to re-run it, click ",(0,s.jsx)(n.strong,{children:"Freeze"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["Enabling ",(0,s.jsx)(n.strong,{children:"Freeze"})," freezes all components upstream of the selected component."]}),"\n",(0,s.jsx)(n.h2,{id:"additional-component-options",children:"Additional component options"}),"\n",(0,s.jsxs)(n.p,{children:["Click ",(0,s.jsx)(l.A,{name:"Ellipsis","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"All"})," to see additional options for a component."]}),"\n",(0,s.jsxs)(n.p,{children:["To modify a component's name or description, click ",(0,s.jsx)(l.A,{name:"PencilLine","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Edit name/description"}),". Component descriptions accept Markdown syntax."]}),"\n",(0,s.jsx)(n.h3,{id:"component-shortcuts",children:"Component shortcuts"}),"\n",(0,s.jsx)(n.p,{children:"The following keyboard shortcuts are available when a component is selected."}),"\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:"Menu item"}),(0,s.jsx)(n.th,{children:"Windows shortcut"}),(0,s.jsx)(n.th,{children:"Mac shortcut"}),(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:"Code"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("kbd",{children:"Space"})}),(0,s.jsx)(n.td,{children:(0,s.jsx)("kbd",{children:"Space"})}),(0,s.jsx)(n.td,{children:"Opens the code editor for the component."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Advanced Settings"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"Shift"})," + ",(0,s.jsx)("kbd",{children:"A"})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"Shift"})," + ",(0,s.jsx)("kbd",{children:"A"})]}),(0,s.jsx)(n.td,{children:"Opens advanced settings for the component."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Save Changes"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"S"})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"S"})]}),(0,s.jsx)(n.td,{children:"Saves changes to the current flow."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Save Component"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"Alt"})," + ",(0,s.jsx)("kbd",{children:"S"})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"Alt"})," + ",(0,s.jsx)("kbd",{children:"S"})]}),(0,s.jsx)(n.td,{children:"Saves the current component to Saved components."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Duplicate"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"D"})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"D"})]}),(0,s.jsx)(n.td,{children:"Creates a duplicate of the component."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Copy"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"C"})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"C"})]}),(0,s.jsx)(n.td,{children:"Copies the selected component."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Cut"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"X"})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"X"})]}),(0,s.jsx)(n.td,{children:"Cuts the selected component."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Paste"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"V"})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"V"})]}),(0,s.jsx)(n.td,{children:"Pastes the copied/cut component."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Docs"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"Shift"})," + ",(0,s.jsx)("kbd",{children:"D"})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"Shift"})," + ",(0,s.jsx)("kbd",{children:"D"})]}),(0,s.jsx)(n.td,{children:"Opens related documentation."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Minimize"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"."})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"."})]}),(0,s.jsx)(n.td,{children:"Minimizes the current component."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Freeze"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"Shift"})," + ",(0,s.jsx)("kbd",{children:"F"})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"Shift"})," + ",(0,s.jsx)("kbd",{children:"F"})]}),(0,s.jsx)(n.td,{children:"Freezes component state and upstream components."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Download"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"J"})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"J"})]}),(0,s.jsx)(n.td,{children:"Downloads the component as JSON."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Delete"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("kbd",{children:"Backspace"})}),(0,s.jsx)(n.td,{children:(0,s.jsx)("kbd",{children:"Backspace"})}),(0,s.jsx)(n.td,{children:"Deletes the component."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Group"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"G"})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"G"})]}),(0,s.jsx)(n.td,{children:"Groups selected components."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Undo"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"Z"})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"Z"})]}),(0,s.jsx)(n.td,{children:"Undoes the last action."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Redo"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"Y"})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"Y"})]}),(0,s.jsx)(n.td,{children:"Redoes the last undone action."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Redo (alternative)"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"Shift"})," + ",(0,s.jsx)("kbd",{children:"Z"})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"Shift"})," + ",(0,s.jsx)("kbd",{children:"Z"})]}),(0,s.jsx)(n.td,{children:"Alternative shortcut for redo."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Share Component"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"Shift"})," + ",(0,s.jsx)("kbd",{children:"S"})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"Shift"})," + ",(0,s.jsx)("kbd",{children:"S"})]}),(0,s.jsx)(n.td,{children:"Shares the component."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Share Flow"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"Shift"})," + ",(0,s.jsx)("kbd",{children:"B"})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"Shift"})," + ",(0,s.jsx)("kbd",{children:"B"})]}),(0,s.jsx)(n.td,{children:"Shares the entire flow."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Toggle Sidebar"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"B"})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"B"})]}),(0,s.jsx)(n.td,{children:"Shows/hides the sidebar."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Search Components"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("kbd",{children:"/"})}),(0,s.jsx)(n.td,{children:(0,s.jsx)("kbd",{children:"/"})}),(0,s.jsx)(n.td,{children:"Focuses the component search bar."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Tool Mode"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"Shift"})," + ",(0,s.jsx)("kbd",{children:"M"})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"Shift"})," + ",(0,s.jsx)("kbd",{children:"M"})]}),(0,s.jsx)(n.td,{children:"Toggles tool mode."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Update"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"U"})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"U"})]}),(0,s.jsx)(n.td,{children:"Updates the component."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Open Playground"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"K"})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"K"})]}),(0,s.jsx)(n.td,{children:"Opens the playground."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Output Inspection"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("kbd",{children:"O"})}),(0,s.jsx)(n.td,{children:(0,s.jsx)("kbd",{children:"O"})}),(0,s.jsx)(n.td,{children:"Opens output inspection."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Play"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("kbd",{children:"P"})}),(0,s.jsx)(n.td,{children:(0,s.jsx)("kbd",{children:"P"})}),(0,s.jsx)(n.td,{children:"Plays/executes the flow."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"API"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("kbd",{children:"R"})}),(0,s.jsx)(n.td,{children:(0,s.jsx)("kbd",{children:"R"})}),(0,s.jsx)(n.td,{children:"Opens the API view."})]})]})]}),"\n",(0,s.jsx)(n.h2,{id:"group-components-in-the-workspace",children:"Group components in the workspace"}),"\n",(0,s.jsx)(n.p,{children:"Multiple components can be grouped into a single component for reuse. This is useful when combining large flows into single components, for example RAG with a vector database, and saving space."}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["Hold ",(0,s.jsx)("kbd",{children:"Shift"})," and drag to select components."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"The components merge into a single component."}),"\n",(0,s.jsxs)(n.ol,{start:"2",children:["\n",(0,s.jsxs)(n.li,{children:["To modify the name and description of the single grouped component, in the grouped component, click the ",(0,s.jsx)(l.A,{name:"PencilLine","aria-label":"Pencil line"})," icon."]}),"\n",(0,s.jsx)(n.li,{children:"Save your grouped component to the sidebar for later use."}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"component-version",children:"Component version"}),"\n",(0,s.jsx)(n.p,{children:"A component's initial state is stored in a database. As soon as you drag a component from the sidebar to the workspace, the two components are no longer in parity."}),"\n",(0,s.jsxs)(n.p,{children:["A component keeps the version number it is initialized to the workspace with. If a component is at version ",(0,s.jsx)(n.code,{children:"1.0"})," when it is dragged to the workspace, it will stay at version ",(0,s.jsx)(n.code,{children:"1.0"})," until you update it."]}),"\n",(0,s.jsx)(n.p,{children:"Langflow notifies you when a component's workspace version is behind the database version and an update is available."}),"\n",(0,s.jsx)(n.h3,{id:"review-and-update-components",children:"Review and update components"}),"\n",(0,s.jsx)(n.p,{children:"When a component's workspace version is behind the database version and an update is available, the component displays a notification.\nIf there are potentially breaking changes in the component updates, Langflow notifies you with an additional dialog."}),"\n",(0,s.jsx)(n.p,{children:"Breaking changes modify component inputs and outputs, and may break your flows or require you to re-connect component edges."}),"\n",(0,s.jsxs)(n.p,{children:["An ",(0,s.jsx)(n.strong,{children:"Update ready"})," notification on a component indicates the component update contains no breaking changes. To update a single component, click ",(0,s.jsx)(n.strong,{children:"Update"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["An ",(0,s.jsx)(n.strong,{children:"Update available"})," notification indicates the component update contains potentially breaking changes."]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["To review all components with pending updates, in the component or in the dialog, click ",(0,s.jsx)(n.strong,{children:"Review"}),".\nThe ",(0,s.jsx)(n.strong,{children:"Update components"})," pane appears.\nThis pane lists components in your flow with breaking changes, and includes an option to save a flow snapshot before updating."]}),"\n",(0,s.jsxs)(n.li,{children:["To save your flow before updating individual components, enable the ",(0,s.jsx)(n.strong,{children:"Create backup flow before updating"})," option."]}),"\n",(0,s.jsxs)(n.li,{children:["To update individual components, select them in the list, and then click ",(0,s.jsx)(n.strong,{children:"Update Component"}),".\nYour components are updated to the current version.\nIf you created a backup flow, it's available in the same project folder as the original flow, with ",(0,s.jsx)(n.code,{children:"(backup)"})," added to its name."]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"components-sidebar",children:"Components sidebar"}),"\n",(0,s.jsx)(n.p,{children:"Components are listed in the sidebar by component type."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Bundles"})," are components grouped by provider. For example, Langchain modules like ",(0,s.jsx)(n.strong,{children:"RunnableExecutor"})," and ",(0,s.jsx)(n.strong,{children:"CharacterTextSplitter"})," are grouped under the ",(0,s.jsx)(n.strong,{children:"Langchain"})," bundle."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Beta"})," components are still being tested and are not suitable for production workloads."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Legacy"})," components are available for use but are no longer supported. By default, legacy components are hidden in the sidebar."]}),"\n",(0,s.jsxs)(n.p,{children:["The sidebar includes a component ",(0,s.jsx)(n.strong,{children:"Search"})," bar with options for showing or hiding ",(0,s.jsx)(n.strong,{children:"Beta"})," and ",(0,s.jsx)(n.strong,{children:"Legacy"})," components.\nTo change the sidebar's behavior, click ",(0,s.jsx)(l.A,{name:"SlidersHorizontal","aria-hidden":"true"})," ",(0,s.jsx)(n.strong,{children:"Component settings"}),", and then show or hide ",(0,s.jsx)(n.strong,{children:"Legacy"})," or ",(0,s.jsx)(n.strong,{children:"Beta"})," components."]})]})}function u(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(j,{...e})}):j(e)}function m(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}}}]);
\ No newline at end of file
diff --git a/assets/js/885eb549.de125c50.js b/assets/js/885eb549.de125c50.js
deleted file mode 100644
index 3bdd85cda5..0000000000
--- a/assets/js/885eb549.de125c50.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[5647],{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}},61217:(e,n,t)=>{t.r(n),t.d(n,{CH:()=>h,assets:()=>p,chCodeConfig:()=>a,contentTitle:()=>d,default:()=>m,frontMatter:()=>i,metadata:()=>o,toc:()=>x});const o=JSON.parse('{"id":"Concepts/concepts-components","title":"Components","description":"A component is a single building block within a flow with inputs, outputs, functions, and parameters that define its functionality. A single component is like a class within a larger application.","source":"@site/docs/Concepts/concepts-components.md","sourceDirName":"Concepts","slug":"/concepts-components","permalink":"/concepts-components","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Components","slug":"/concepts-components"},"sidebar":"docs","previous":{"title":"Playground","permalink":"/concepts-playground"},"next":{"title":"Flows","permalink":"/concepts-flows"}}');var s=t(74848),r=t(28453),c=t(24754),l=t(17886);const i={title:"Components",slug:"/concepts-components"},d="Langflow components overview",p={},h={annotations:c.hk,Code:c.Cy},a={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},x=[{value:"Component menu",id:"component-menu",level:2},{value:"Component logs",id:"component-logs",level:2},{value:"Run one component",id:"run-one-component",level:2},{value:"Component ports",id:"component-ports",level:2},{value:"Component port data type colors",id:"component-port-data-type-colors",level:3},{value:"Component code",id:"component-code",level:2},{value:"Freeze",id:"freeze",level:2},{value:"Additional component options",id:"additional-component-options",level:2},{value:"Component shortcuts",id:"component-shortcuts",level:3},{value:"Group components in the workspace",id:"group-components-in-the-workspace",level:2},{value:"Component version",id:"component-version",level:2},{value:"Review and update components",id:"review-and-update-components",level:3},{value:"Components sidebar",id:"components-sidebar",level:2}];function j(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",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:t}=n;return h||u("CH",!1),h.Code||u("CH.Code",!0),t||u("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.header,{children:(0,s.jsx)(n.h1,{id:"langflow-components-overview",children:"Langflow components overview"})}),"\n",(0,s.jsx)(n.p,{children:"A component is a single building block within a flow with inputs, outputs, functions, and parameters that define its functionality. A single component is like a class within a larger application."}),"\n",(0,s.jsxs)(n.p,{children:["To add a component to a flow, drag it from the ",(0,s.jsx)(n.strong,{children:"Component"})," menu to the ",(0,s.jsx)(n.strong,{children:"Workspace"}),"."]}),"\n",(0,s.jsx)(n.p,{children:"Learn more about components and how they work on this page."}),"\n",(0,s.jsx)(n.h2,{id:"component-menu",children:"Component menu"}),"\n",(0,s.jsxs)(n.p,{children:["All components have a ",(0,s.jsx)(n.strong,{children:"Component menu"})," that contains meta settings for the component."]}),"\n",(0,s.jsx)(n.p,{children:"To access this menu for a specific component, select a component in a flow.\nThe menu appears above the selected component."}),"\n",(0,s.jsx)("img",{src:"/img/openai-model-component.png",alt:"OpenAI component with the component menu visible",style:{display:"block",margin:"auto",width:300}}),"\n",(0,s.jsxs)(n.p,{children:["You can use the controls in the ",(0,s.jsx)(n.strong,{children:"Component menu"})," to manage and configure the component on a high level, including the following actions:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Code"}),": Modify the component settings by directly editing the component's Python code."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Controls"}),": Adjust all component parameters, including optional settings that are hidden by default."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Tool Mode"}),": Enable tool mode when combining a component with an agent component."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Freeze"}),": After a component runs, lock its previous output state to prevent it from re-running."]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["Click ",(0,s.jsx)(l.A,{name:"Ellipsis","aria-label":"Horizontal ellipsis"})," ",(0,s.jsx)(n.strong,{children:"All"})," to see additional options for a component."]}),"\n",(0,s.jsx)(n.h2,{id:"component-logs",children:"Component logs"}),"\n",(0,s.jsxs)(n.p,{children:["To view a component's output and logs, click the ",(0,s.jsx)(l.A,{name:"TextSearch","aria-label":"Inspect icon"})," icon."]}),"\n",(0,s.jsx)(n.h2,{id:"run-one-component",children:"Run one component"}),"\n",(0,s.jsxs)(n.p,{children:["To run a single component, click ",(0,s.jsx)(l.A,{name:"Play","aria-label":"Play button"})," ",(0,s.jsx)(n.strong,{children:"Play"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["Running a single component with the ",(0,s.jsx)(n.strong,{children:"Play"})," button is different from running the entire flow. In a single component run, the ",(0,s.jsx)(n.code,{children:"build_vertex"})," function is called, which builds and runs only the single component with direct inputs provided through the UI (the ",(0,s.jsx)(n.code,{children:"inputs_dict"})," parameter). The ",(0,s.jsx)(n.code,{children:"VertexBuildResult"})," data is passed to the ",(0,s.jsx)(n.code,{children:"build_and_run"})," method, which calls the component's ",(0,s.jsx)(n.code,{children:"build"})," method and runs it. Unlike running the full flow, running a single component does not automatically execute its upstream dependencies."]}),"\n",(0,s.jsxs)(n.p,{children:["A ",(0,s.jsx)(l.A,{name:"Check","aria-label":"Checkmark"})," ",(0,s.jsx)(n.strong,{children:"Checkmark"})," indicates that the component ran successfully."]}),"\n",(0,s.jsx)(n.h2,{id:"component-ports",children:"Component ports"}),"\n",(0,s.jsxs)(n.p,{children:["Handles (",(0,s.jsx)(l.A,{name:"Circle",size:"16","aria-label":"A circle on the side of a component"}),") on the side of a component indicate the types of inputs and outputs that can be connected at that port. Hover over a handle to see connection details."]}),"\n",(0,s.jsx)("img",{src:"/img/prompt-component.png",alt:"Prompt component",style:{display:"block",margin:"auto",width:300}}),"\n",(0,s.jsx)(n.h3,{id:"component-port-data-type-colors",children:"Component port data type colors"}),"\n",(0,s.jsx)(n.p,{children:"The following table lists the handle colors and their corresponding data types:"}),"\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:"Data type"}),(0,s.jsx)(n.th,{children:"Handle color"}),(0,s.jsx)(n.th,{children:"Handle"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Data"}),(0,s.jsx)(n.td,{children:"Red"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(l.A,{name:"Circle",size:"16","aria-label":"A circle on the side of a component",style:{color:"#dc2626"}})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"DataFrame"}),(0,s.jsx)(n.td,{children:"Pink"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(l.A,{name:"Circle",size:"16","aria-label":"A circle on the side of a component",style:{color:"#ec4899"}})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Embeddings"}),(0,s.jsx)(n.td,{children:"Emerald"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(l.A,{name:"Circle",size:"16","aria-label":"A circle on the side of a component",style:{color:"#10b981"}})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"LanguageModel"}),(0,s.jsx)(n.td,{children:"Fuchsia"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(l.A,{name:"Circle",size:"16","aria-label":"A circle on the side of a component",style:{color:"#c026d3"}})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Memory"}),(0,s.jsx)(n.td,{children:"Orange"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(l.A,{name:"Circle",size:"16","aria-label":"A circle on the side of a component",style:{color:"#f97316"}})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Message"}),(0,s.jsx)(n.td,{children:"Indigo"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(l.A,{name:"Circle",size:"16","aria-label":"A circle on the side of a component",style:{color:"#4f46e5"}})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Text"}),(0,s.jsx)(n.td,{children:"Indigo"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(l.A,{name:"Circle",size:"16","aria-label":"A circle on the side of a component",style:{color:"#4f46e5"}})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Tool"}),(0,s.jsx)(n.td,{children:"Cyan"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(l.A,{name:"Circle",size:"16","aria-label":"A circle on the side of a component",style:{color:"#06b6d4"}})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"unknown"}),(0,s.jsx)(n.td,{children:"Gray"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(l.A,{name:"Circle",size:"16","aria-label":"A circle on the side of a component",style:{color:"#9CA3AF"}})})]})]})]}),"\n",(0,s.jsx)(n.h2,{id:"component-code",children:"Component code"}),"\n",(0,s.jsxs)(n.p,{children:["A component inherits from a base ",(0,s.jsx)(n.code,{children:"Component"})," class that defines its interface and behavior."]}),"\n",(0,s.jsxs)(n.p,{children:["For example, the ",(0,s.jsx)(n.a,{href:"https://github.com/langflow-ai/langflow/blob/main/src/backend/base/langflow/components/langchain_utilities/recursive_character.py",children:"Recursive character text splitter"})," is a child of the ",(0,s.jsx)(n.a,{href:"https://github.com/langflow-ai/langflow/blob/main/src/backend/base/langflow/base/textsplitters/model.py",children:"LCTextSplitterComponent"})," class."]}),"\n",(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:"Recursive character text splitter code"}),(0,s.jsx)(h.Code,{codeConfig:a,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"from",props:{style:{color:"#FF7B72"}}},{content:" typing ",props:{style:{color:"#C9D1D9"}}},{content:"import",props:{style:{color:"#FF7B72"}}},{content:" Any",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"from",props:{style:{color:"#FF7B72"}}},{content:" langchain_text_splitters ",props:{style:{color:"#C9D1D9"}}},{content:"import",props:{style:{color:"#FF7B72"}}},{content:" RecursiveCharacterTextSplitter, TextSplitter",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"from",props:{style:{color:"#FF7B72"}}},{content:" langflow.base.textsplitters.model ",props:{style:{color:"#C9D1D9"}}},{content:"import",props:{style:{color:"#FF7B72"}}},{content:" LCTextSplitterComponent",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"from",props:{style:{color:"#FF7B72"}}},{content:" langflow.inputs.inputs ",props:{style:{color:"#C9D1D9"}}},{content:"import",props:{style:{color:"#FF7B72"}}},{content:" DataInput, IntInput, MessageTextInput",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"from",props:{style:{color:"#FF7B72"}}},{content:" langflow.utils.util ",props:{style:{color:"#C9D1D9"}}},{content:"import",props:{style:{color:"#FF7B72"}}},{content:" unescape_string",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"class ",props:{style:{color:"#FF7B72"}}},{content:"RecursiveCharacterTextSplitterComponent",props:{style:{color:"#FFA657"}}},{content:"(",props:{style:{color:"#C9D1D9"}}},{content:"LCTextSplitterComponent",props:{style:{color:"#79C0FF"}}},{content:"):",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" display_name: ",props:{style:{color:"#C9D1D9"}}},{content:"str ",props:{style:{color:"#79C0FF"}}},{content:"= ",props:{style:{color:"#FF7B72"}}},{content:'"Recursive Character Text Splitter"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" description: ",props:{style:{color:"#C9D1D9"}}},{content:"str ",props:{style:{color:"#79C0FF"}}},{content:"= ",props:{style:{color:"#FF7B72"}}},{content:'"Split text trying to keep all related text together."',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" documentation: ",props:{style:{color:"#C9D1D9"}}},{content:"str ",props:{style:{color:"#79C0FF"}}},{content:"= ",props:{style:{color:"#FF7B72"}}},{content:'"https://docs.langflow.org/components-processing"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" name ",props:{style:{color:"#C9D1D9"}}},{content:"= ",props:{style:{color:"#FF7B72"}}},{content:'"RecursiveCharacterTextSplitter"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" icon ",props:{style:{color:"#C9D1D9"}}},{content:"= ",props:{style:{color:"#FF7B72"}}},{content:'"LangChain"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" inputs ",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:" [",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" IntInput(",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"chunk_size"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" display_name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"Chunk Size"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" info",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"The maximum length of each chunk."',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" value",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"1000",props:{style:{color:"#79C0FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" ),",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" IntInput(",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"chunk_overlap"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" display_name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"Chunk Overlap"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" info",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"The amount of overlap between chunks."',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" value",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"200",props:{style:{color:"#79C0FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" ),",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" DataInput(",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"data_input"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" display_name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"Input"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" info",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"The texts to split."',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" input_types",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"[",props:{style:{color:"#C9D1D9"}}},{content:'"Document"',props:{style:{color:"#A5D6FF"}}},{content:", ",props:{style:{color:"#C9D1D9"}}},{content:'"Data"',props:{style:{color:"#A5D6FF"}}},{content:"],",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" ),",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" MessageTextInput(",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"separators"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" display_name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"Separators"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" info",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"'The characters to split on.",props:{style:{color:"#A5D6FF"}}},{content:"\\n",props:{style:{color:"#79C0FF"}}},{content:'If left empty defaults to ["',props:{style:{color:"#A5D6FF"}}},{content:"\\\\",props:{style:{color:"#79C0FF"}}},{content:"n",props:{style:{color:"#A5D6FF"}}},{content:"\\\\",props:{style:{color:"#79C0FF"}}},{content:'n", "',props:{style:{color:"#A5D6FF"}}},{content:"\\\\",props:{style:{color:"#79C0FF"}}},{content:'n", " ", ""].\'',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" is_list",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"True",props:{style:{color:"#79C0FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" ),",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" ]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" def ",props:{style:{color:"#FF7B72"}}},{content:"get_data_input",props:{style:{color:"#D2A8FF"}}},{content:"(self) -> Any:",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" return ",props:{style:{color:"#FF7B72"}}},{content:"self",props:{style:{color:"#79C0FF"}}},{content:".data_input",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" def ",props:{style:{color:"#FF7B72"}}},{content:"build_text_splitter",props:{style:{color:"#D2A8FF"}}},{content:"(self) -> TextSplitter:",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" if not ",props:{style:{color:"#FF7B72"}}},{content:"self",props:{style:{color:"#79C0FF"}}},{content:".separators:",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" separators: list[",props:{style:{color:"#C9D1D9"}}},{content:"str",props:{style:{color:"#79C0FF"}}},{content:"] ",props:{style:{color:"#C9D1D9"}}},{content:"| ",props:{style:{color:"#FF7B72"}}},{content:"None ",props:{style:{color:"#79C0FF"}}},{content:"= ",props:{style:{color:"#FF7B72"}}},{content:"None",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" else",props:{style:{color:"#FF7B72"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" # check if the separators list has escaped characters",props:{style:{color:"#8B949E"}}}]},{tokens:[{content:" # if there are escaped characters, unescape them",props:{style:{color:"#8B949E"}}}]},{tokens:[{content:" separators ",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:" [unescape_string(x) ",props:{style:{color:"#C9D1D9"}}},{content:"for",props:{style:{color:"#FF7B72"}}},{content:" x ",props:{style:{color:"#C9D1D9"}}},{content:"in ",props:{style:{color:"#FF7B72"}}},{content:"self",props:{style:{color:"#79C0FF"}}},{content:".separators]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" return",props:{style:{color:"#FF7B72"}}},{content:" RecursiveCharacterTextSplitter(",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" separators",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"separators,",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" chunk_size",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"self",props:{style:{color:"#79C0FF"}}},{content:".chunk_size,",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" chunk_overlap",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"self",props:{style:{color:"#79C0FF"}}},{content:".chunk_overlap,",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" )",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]}],lang:"python"},annotations:[]}]})]}),"\n",(0,s.jsx)(n.p,{children:"Components include definitions for inputs and outputs, which are represented in the UI with color-coded ports."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Input Definition:"})," Each input (like ",(0,s.jsx)(n.code,{children:"IntInput"})," or ",(0,s.jsx)(n.code,{children:"DataInput"}),") specifies an input's type, name, and display properties, which appear as configurable fields in the component's UI panel."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Methods:"})," Components have methods or functions that handle their functionality. This component has two methods.\n",(0,s.jsx)(n.code,{children:"get_data_input"})," retrieves the text data to be split from the component's input. This makes the data available to the class.\n",(0,s.jsx)(n.code,{children:"build_text_splitter"})," creates a ",(0,s.jsx)(n.code,{children:"RecursiveCharacterTextSplitter"})," object by calling its parent class's ",(0,s.jsx)(n.code,{children:"build"})," method. The text is split with the created splitter and passed to the next component.\nWhen used in a flow, this component:"]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsx)(n.li,{children:"Displays its configuration options in the UI."}),"\n",(0,s.jsx)(n.li,{children:"Validates user inputs based on the input types."}),"\n",(0,s.jsx)(n.li,{children:"Processes data using the configured parameters."}),"\n",(0,s.jsx)(n.li,{children:"Passes results to the next component."}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"freeze",children:"Freeze"}),"\n",(0,s.jsxs)(n.p,{children:["After a component runs, ",(0,s.jsx)(n.strong,{children:"Freeze"})," locks the component's previous output state to prevent it from re-running."]}),"\n",(0,s.jsxs)(n.p,{children:["If you're expecting consistent output from a component and don't need to re-run it, click ",(0,s.jsx)(n.strong,{children:"Freeze"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["Enabling ",(0,s.jsx)(n.strong,{children:"Freeze"})," freezes all components upstream of the selected component."]}),"\n",(0,s.jsx)(n.h2,{id:"additional-component-options",children:"Additional component options"}),"\n",(0,s.jsxs)(n.p,{children:["Click ",(0,s.jsx)(l.A,{name:"Ellipsis","aria-label":"Horizontal ellipsis"})," ",(0,s.jsx)(n.strong,{children:"All"})," to see additional options for a component."]}),"\n",(0,s.jsxs)(n.p,{children:["To modify a component's name or description, click the ",(0,s.jsx)(l.A,{name:"PencilLine","aria-label":"Pencil line"})," icon. Component descriptions accept Markdown syntax."]}),"\n",(0,s.jsx)(n.h3,{id:"component-shortcuts",children:"Component shortcuts"}),"\n",(0,s.jsx)(n.p,{children:"The following keyboard shortcuts are available when a component is selected."}),"\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:"Menu item"}),(0,s.jsx)(n.th,{children:"Windows shortcut"}),(0,s.jsx)(n.th,{children:"Mac shortcut"}),(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:"Code"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("kbd",{children:"Space"})}),(0,s.jsx)(n.td,{children:(0,s.jsx)("kbd",{children:"Space"})}),(0,s.jsx)(n.td,{children:"Opens the code editor for the component."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Advanced Settings"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"Shift"})," + ",(0,s.jsx)("kbd",{children:"A"})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"Shift"})," + ",(0,s.jsx)("kbd",{children:"A"})]}),(0,s.jsx)(n.td,{children:"Opens advanced settings for the component."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Save Changes"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"S"})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"S"})]}),(0,s.jsx)(n.td,{children:"Saves changes to the current flow."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Save Component"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"Alt"})," + ",(0,s.jsx)("kbd",{children:"S"})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"Alt"})," + ",(0,s.jsx)("kbd",{children:"S"})]}),(0,s.jsx)(n.td,{children:"Saves the current component to Saved components."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Duplicate"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"D"})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"D"})]}),(0,s.jsx)(n.td,{children:"Creates a duplicate of the component."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Copy"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"C"})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"C"})]}),(0,s.jsx)(n.td,{children:"Copies the selected component."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Cut"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"X"})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"X"})]}),(0,s.jsx)(n.td,{children:"Cuts the selected component."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Paste"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"V"})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"V"})]}),(0,s.jsx)(n.td,{children:"Pastes the copied/cut component."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Docs"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"Shift"})," + ",(0,s.jsx)("kbd",{children:"D"})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"Shift"})," + ",(0,s.jsx)("kbd",{children:"D"})]}),(0,s.jsx)(n.td,{children:"Opens related documentation."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Minimize"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"."})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"."})]}),(0,s.jsx)(n.td,{children:"Minimizes the current component."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Freeze"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"Shift"})," + ",(0,s.jsx)("kbd",{children:"F"})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"Shift"})," + ",(0,s.jsx)("kbd",{children:"F"})]}),(0,s.jsx)(n.td,{children:"Freezes component state and upstream components."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Download"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"J"})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"J"})]}),(0,s.jsx)(n.td,{children:"Downloads the component as JSON."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Delete"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("kbd",{children:"Backspace"})}),(0,s.jsx)(n.td,{children:(0,s.jsx)("kbd",{children:"Backspace"})}),(0,s.jsx)(n.td,{children:"Deletes the component."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Group"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"G"})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"G"})]}),(0,s.jsx)(n.td,{children:"Groups selected components."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Undo"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"Z"})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"Z"})]}),(0,s.jsx)(n.td,{children:"Undoes the last action."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Redo"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"Y"})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"Y"})]}),(0,s.jsx)(n.td,{children:"Redoes the last undone action."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Redo (alternative)"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"Shift"})," + ",(0,s.jsx)("kbd",{children:"Z"})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"Shift"})," + ",(0,s.jsx)("kbd",{children:"Z"})]}),(0,s.jsx)(n.td,{children:"Alternative shortcut for redo."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Share Component"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"Shift"})," + ",(0,s.jsx)("kbd",{children:"S"})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"Shift"})," + ",(0,s.jsx)("kbd",{children:"S"})]}),(0,s.jsx)(n.td,{children:"Shares the component."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Share Flow"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"Shift"})," + ",(0,s.jsx)("kbd",{children:"B"})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"Shift"})," + ",(0,s.jsx)("kbd",{children:"B"})]}),(0,s.jsx)(n.td,{children:"Shares the entire flow."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Toggle Sidebar"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"B"})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"B"})]}),(0,s.jsx)(n.td,{children:"Shows/hides the sidebar."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Search Components"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("kbd",{children:"/"})}),(0,s.jsx)(n.td,{children:(0,s.jsx)("kbd",{children:"/"})}),(0,s.jsx)(n.td,{children:"Focuses the component search bar."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Tool Mode"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"Shift"})," + ",(0,s.jsx)("kbd",{children:"M"})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"Shift"})," + ",(0,s.jsx)("kbd",{children:"M"})]}),(0,s.jsx)(n.td,{children:"Toggles tool mode."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Update"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"U"})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"U"})]}),(0,s.jsx)(n.td,{children:"Updates the component."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Open Playground"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"Ctrl"})," + ",(0,s.jsx)("kbd",{children:"K"})]}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("kbd",{children:"\u2318"})," + ",(0,s.jsx)("kbd",{children:"K"})]}),(0,s.jsx)(n.td,{children:"Opens the playground."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Output Inspection"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("kbd",{children:"O"})}),(0,s.jsx)(n.td,{children:(0,s.jsx)("kbd",{children:"O"})}),(0,s.jsx)(n.td,{children:"Opens output inspection."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Play"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("kbd",{children:"P"})}),(0,s.jsx)(n.td,{children:(0,s.jsx)("kbd",{children:"P"})}),(0,s.jsx)(n.td,{children:"Plays/executes the flow."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"API"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("kbd",{children:"R"})}),(0,s.jsx)(n.td,{children:(0,s.jsx)("kbd",{children:"R"})}),(0,s.jsx)(n.td,{children:"Opens the API view."})]})]})]}),"\n",(0,s.jsx)(n.h2,{id:"group-components-in-the-workspace",children:"Group components in the workspace"}),"\n",(0,s.jsx)(n.p,{children:"Multiple components can be grouped into a single component for reuse. This is useful when combining large flows into single components, for example RAG with a vector database, and saving space."}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["Hold ",(0,s.jsx)("kbd",{children:"Shift"})," and drag to select components."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"The components merge into a single component."}),"\n",(0,s.jsxs)(n.ol,{start:"2",children:["\n",(0,s.jsxs)(n.li,{children:["To modify the name and description of the single grouped component, in the grouped component, click the ",(0,s.jsx)(l.A,{name:"PencilLine","aria-label":"Pencil line"})," icon."]}),"\n",(0,s.jsx)(n.li,{children:"Save your grouped component to the sidebar for later use."}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"component-version",children:"Component version"}),"\n",(0,s.jsx)(n.p,{children:"A component's initial state is stored in a database. As soon as you drag a component from the sidebar to the workspace, the two components are no longer in parity."}),"\n",(0,s.jsxs)(n.p,{children:["A component keeps the version number it is initialized to the workspace with. If a component is at version ",(0,s.jsx)(n.code,{children:"1.0"})," when it is dragged to the workspace, it will stay at version ",(0,s.jsx)(n.code,{children:"1.0"})," until you update it."]}),"\n",(0,s.jsx)(n.p,{children:"Langflow notifies you when a component's workspace version is behind the database version and an update is available."}),"\n",(0,s.jsx)(n.h3,{id:"review-and-update-components",children:"Review and update components"}),"\n",(0,s.jsx)(n.p,{children:"When a component's workspace version is behind the database version and an update is available, the component displays a notification.\nIf there are potentially breaking changes in the component updates, Langflow notifies you with an additional dialog."}),"\n",(0,s.jsx)(n.p,{children:"Breaking changes modify component inputs and outputs, and may break your flows or require you to re-connect component edges."}),"\n",(0,s.jsxs)(n.p,{children:["An ",(0,s.jsx)(n.strong,{children:"Update ready"})," notification on a component indicates the component update contains no breaking changes. To update a single component, click ",(0,s.jsx)(n.strong,{children:"Update"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["An ",(0,s.jsx)(n.strong,{children:"Update available"})," notification indicates the component update contains potentially breaking changes."]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["To review all components with pending updates, in the component or in the dialog, click ",(0,s.jsx)(n.strong,{children:"Review"}),".\nThe ",(0,s.jsx)(n.strong,{children:"Update components"})," pane appears.\nThis pane lists components in your flow with breaking changes, and includes an option to save a flow snapshot before updating."]}),"\n",(0,s.jsxs)(n.li,{children:["To save your flow before updating individual components, enable the ",(0,s.jsx)(n.strong,{children:"Create backup flow before updating"})," option."]}),"\n",(0,s.jsxs)(n.li,{children:["To update individual components, select them in the list, and then click ",(0,s.jsx)(n.strong,{children:"Update Component"}),".\nYour components are updated to the current version.\nIf you created a backup flow, it's available in the same project folder as the original flow, with ",(0,s.jsx)(n.code,{children:"(backup)"})," added to its name."]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"components-sidebar",children:"Components sidebar"}),"\n",(0,s.jsx)(n.p,{children:"Components are listed in the sidebar by component type."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Bundles"})," are components grouped by provider. For example, Langchain modules like ",(0,s.jsx)(n.strong,{children:"RunnableExecutor"})," and ",(0,s.jsx)(n.strong,{children:"CharacterTextSplitter"})," are grouped under the ",(0,s.jsx)(n.strong,{children:"Langchain"})," bundle."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Beta"})," components are still being tested and are not suitable for production workloads."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Legacy"})," components are available for use but are no longer supported. By default, legacy components are hidden in the sidebar."]}),"\n",(0,s.jsxs)(n.p,{children:["The sidebar includes a component ",(0,s.jsx)(n.strong,{children:"Search"})," bar with options for showing or hiding ",(0,s.jsx)(n.strong,{children:"Beta"})," and ",(0,s.jsx)(n.strong,{children:"Legacy"})," components.\nTo change the sidebar's behavior, click the ",(0,s.jsx)(l.A,{name:"SlidersHorizontal","aria-hidden":"true"}),", and then show or hide ",(0,s.jsx)(n.strong,{children:"Legacy"})," or ",(0,s.jsx)(n.strong,{children:"Beta"})," components."]})]})}function m(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(j,{...e})}):j(e)}function u(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}}}]);
\ No newline at end of file
diff --git a/assets/js/8ff68e6f.64e46a3d.js b/assets/js/8ff68e6f.64e46a3d.js
deleted file mode 100644
index 937221cccb..0000000000
--- a/assets/js/8ff68e6f.64e46a3d.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[2624],{17886:(e,t,s)=>{s.d(t,{A:()=>i});s(96540);var r=s(64058),n=s(74848);function i({name:e,...t}){const s=r[e];return s?(0,n.jsx)(s,{...t}):null}},19680:(e,t,s)=>{s.d(t,{A:()=>r});const r=s.p+"assets/images/starter-flow-simple-agent-cd0ff46423ac65a913c22a0360d1570b.png"},28453:(e,t,s)=>{s.d(t,{R:()=>d,x:()=>l});var r=s(96540);const n={},i=r.createContext(n);function d(e){const t=r.useContext(i);return r.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(n):e.components||n:d(e.components),r.createElement(i.Provider,{value:t},e.children)}},68335:(e,t,s)=>{s.d(t,{A:()=>r});const r=s.p+"assets/images/component-astra-db-json-tool-117aff566c0df01a555264bb128b3693.png"},70893:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>c,contentTitle:()=>h,default:()=>x,frontMatter:()=>l,metadata:()=>r,toc:()=>o});const r=JSON.parse('{"id":"Components/components-tools","title":"Tools","description":"Tools are typically connected to agent components at the Tools port. Agents use LLMs as a reasoning engine to decide which of the connected tool components to use to solve a problem.","source":"@site/docs/Components/components-tools.md","sourceDirName":"Components","slug":"/components-tools","permalink":"/components-tools","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Tools","slug":"/components-tools"},"sidebar":"docs","previous":{"title":"Prompts","permalink":"/components-prompts"},"next":{"title":"Vector stores","permalink":"/components-vector-stores"}}');var n=s(74848),i=s(28453),d=s(17886);const l={title:"Tools",slug:"/components-tools"},h="Tool components in Langflow",c={},o=[{value:"Use a tool in a flow",id:"use-a-tool-in-a-flow",level:2},{value:"arXiv",id:"arxiv",level:2},{value:"Astra DB tool",id:"astra-db-tool",level:2},{value:"Define Astra DB tool parameters",id:"define-astra-db-tool-parameters",level:3},{value:"Astra DB CQL Tool",id:"astra-db-cql-tool",level:2},{value:"Bing Search API",id:"bing-search-api",level:2},{value:"Combinatorial Reasoner",id:"combinatorial-reasoner",level:2},{value:"DuckDuckGo search",id:"duckduckgo-search",level:2},{value:"Exa Search",id:"exa-search",level:2},{value:"Glean Search API",id:"glean-search-api",level:2},{value:"Google Serper API",id:"google-serper-api",level:2},{value:"MCP connection",id:"mcp-connection",level:2},{value:"MCP Tools (deprecated)",id:"mcp-tools-deprecated",level:3},{value:"Wikidata",id:"wikidata",level:2},{value:"Legacy components",id:"legacy-components",level:2},{value:"Calculator Tool",id:"calculator-tool",level:3},{value:"Google Search API",id:"google-search-api",level:3},{value:"Python Code Structured Tool",id:"python-code-structured-tool",level:3},{value:"Python REPL Tool",id:"python-repl-tool",level:3},{value:"Retriever Tool",id:"retriever-tool",level:3},{value:"Search API",id:"search-api",level:3},{value:"SearXNG Search Tool",id:"searxng-search-tool",level:3},{value:"Wikipedia API",id:"wikipedia-api",level:3}];function a(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components},{Details:r}=t;return r||function(e,t){throw new Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.header,{children:(0,n.jsx)(t.h1,{id:"tool-components-in-langflow",children:"Tool components in Langflow"})}),"\n",(0,n.jsxs)(t.p,{children:["Tools are typically connected to agent components at the ",(0,n.jsx)(t.strong,{children:"Tools"})," port. Agents use LLMs as a reasoning engine to decide which of the connected tool components to use to solve a problem."]}),"\n",(0,n.jsxs)(t.p,{children:["Tools in agentic functions are, essentially, functions that the agent can call to perform tasks or access external resources.\nA function is wrapped as a ",(0,n.jsx)(t.code,{children:"Tool"})," object, with a common interface the agent understands.\nAgents become aware of tools through tool registration, where the agent is provided a list of available tools, typically at agent initialization. The ",(0,n.jsx)(t.code,{children:"Tool"})," object's description tells the agent what the tool can do."]}),"\n",(0,n.jsx)(t.p,{children:"The agent then uses a connected LLM to reason through the problem to decide which tool is best for the job."}),"\n",(0,n.jsx)(t.h2,{id:"use-a-tool-in-a-flow",children:"Use a tool in a flow"}),"\n",(0,n.jsxs)(t.p,{children:["Tools are typically connected to agent components at the ",(0,n.jsx)(t.strong,{children:"Tools"})," port."]}),"\n",(0,n.jsxs)(t.p,{children:["The ",(0,n.jsx)(t.a,{href:"/simple-agent",children:"simple agent starter project"})," uses URL and Calculator tools connected to an ",(0,n.jsx)(t.a,{href:"/components-agents#agent-component",children:"agent component"})," to answer a user's questions. The OpenAI LLM acts as a brain for the agent to decide which tool to use."]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"Simple agent starter flow",src:s(19680).A+"",width:"4000",height:"1826"})}),"\n",(0,n.jsxs)(t.p,{children:["To make a component into a tool that an agent can use, enable ",(0,n.jsx)(t.strong,{children:"Tool mode"})," in the component. Enabling ",(0,n.jsx)(t.strong,{children:"Tool mode"})," modifies a component input to accept calls from an agent.\nIf the component you want to connect to an agent doesn't have a ",(0,n.jsx)(t.strong,{children:"Tool mode"})," option, you can modify the component's inputs to become a tool.\nFor an example, see ",(0,n.jsx)(t.a,{href:"/agents-tools#make-any-component-a-tool",children:"Make any component a tool"}),"."]}),"\n",(0,n.jsx)(t.h2,{id:"arxiv",children:"arXiv"}),"\n",(0,n.jsxs)(t.p,{children:["This component searches and retrieves papers from ",(0,n.jsx)(t.a,{href:"https://arXiv.org",children:"arXiv.org"}),"."]}),"\n",(0,n.jsxs)(r,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Inputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"search_query"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsxs)(t.td,{children:["The search query for arXiv papers. For example, ",(0,n.jsx)(t.code,{children:"quantum computing"}),"."]})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"search_type"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The field to search in."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"max_results"}),(0,n.jsx)(t.td,{children:"Integer"}),(0,n.jsx)(t.td,{children:"The maximum number of results to return."})]})]})]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Outputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsx)(t.tbody,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"papers"}),(0,n.jsx)(t.td,{children:"List[Data]"}),(0,n.jsx)(t.td,{children:"A list of retrieved arXiv papers."})]})})]})]}),"\n",(0,n.jsx)(t.h2,{id:"astra-db-tool",children:"Astra DB tool"}),"\n",(0,n.jsx)(t.p,{children:"This component allows agents to query data from Astra DB collections."}),"\n",(0,n.jsxs)(t.p,{children:["To use this tool in a flow, connect it to an ",(0,n.jsx)(t.strong,{children:"Agent"})," component.\nThe flow looks like this:"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"Astra DB JSON tool connected to an Agent",src:s(68335).A+"",width:"4000",height:"2742"})}),"\n",(0,n.jsxs)(t.p,{children:["The ",(0,n.jsx)(t.strong,{children:"Tool Name"})," and ",(0,n.jsx)(t.strong,{children:"Tool Description"})," fields are required for the Agent to decide when to use the tool.\n",(0,n.jsx)(t.strong,{children:"Tool Name"})," cannot contain spaces."]}),"\n",(0,n.jsxs)(t.p,{children:["The values for ",(0,n.jsx)(t.strong,{children:"Collection Name"}),", ",(0,n.jsx)(t.strong,{children:"Astra DB Application Token"}),", and ",(0,n.jsx)(t.strong,{children:"Astra DB API Endpoint"})," are found in your Astra DB deployment. For more information, see the ",(0,n.jsx)(t.a,{href:"https://docs.datastax.com/en/astra-db-serverless/databases/create-database.html",children:"DataStax documentation"}),"."]}),"\n",(0,n.jsxs)(t.p,{children:["In this example, an ",(0,n.jsx)(t.strong,{children:"OpenAI"})," embeddings component is connected to use the Astra DB tool component's ",(0,n.jsx)(t.strong,{children:"Semantic Search"})," capability.\nTo use ",(0,n.jsx)(t.strong,{children:"Semantic Search"}),", you must have an embedding model or Astra DB Vectorize enabled.\nIf you try to run the flow without an embedding model, you will get an error."]}),"\n",(0,n.jsxs)(t.p,{children:["Open the ",(0,n.jsx)(t.strong,{children:"Playground"})," and ask a question about your data.\nThe Agent uses the ",(0,n.jsx)(t.strong,{children:"Astra DB Tool"})," to return information about your collection."]}),"\n",(0,n.jsx)(t.h3,{id:"define-astra-db-tool-parameters",children:"Define Astra DB tool parameters"}),"\n",(0,n.jsxs)(t.p,{children:["The ",(0,n.jsx)(t.strong,{children:"Tool Parameters"})," configuration pane allows you to define parameters for ",(0,n.jsx)(t.a,{href:"https://docs.datastax.com/en/astra-db-serverless/api-reference/document-methods/find-many.html#parameters",children:"filter conditions"})," for the component's ",(0,n.jsx)(t.strong,{children:"Find"})," command."]}),"\n",(0,n.jsxs)(t.p,{children:["These filters become available as parameters that the LLM can use when calling the tool, with a better understanding of each parameter provided by the ",(0,n.jsx)(t.strong,{children:"Description"})," field."]}),"\n",(0,n.jsxs)(t.ol,{children:["\n",(0,n.jsxs)(t.li,{children:["To define a parameter for your query, in the ",(0,n.jsx)(t.strong,{children:"Tool Parameters"})," pane, click ",(0,n.jsx)(d.A,{name:"Plus","aria-label":"Add"}),"."]}),"\n",(0,n.jsxs)(t.li,{children:["Complete the fields based on your data. For example, with this filter, the LLM can filter by unique ",(0,n.jsx)(t.code,{children:"customer_id"})," values."]}),"\n"]}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["Name: ",(0,n.jsx)(t.code,{children:"customer_id"})]}),"\n",(0,n.jsx)(t.li,{children:"Attribute Name: Leave empty if the attribute matches the field name in the database."}),"\n",(0,n.jsxs)(t.li,{children:["Description: ",(0,n.jsx)(t.code,{children:'"The unique identifier of the customer to filter by"'}),"."]}),"\n",(0,n.jsxs)(t.li,{children:["Is Metadata: ",(0,n.jsx)(t.code,{children:"False"})," unless the value stored in the metadata field."]}),"\n",(0,n.jsxs)(t.li,{children:["Is Mandatory: ",(0,n.jsx)(t.code,{children:"True"})," to require this filter."]}),"\n",(0,n.jsxs)(t.li,{children:["Is Timestamp: ",(0,n.jsx)(t.code,{children:"False"})," since the value is an ID, not a timestamp."]}),"\n",(0,n.jsxs)(t.li,{children:["Operator: ",(0,n.jsx)(t.code,{children:"$eq"})," to look for an exact match."]}),"\n"]}),"\n",(0,n.jsxs)(t.p,{children:["If you want to apply filters regardless of the LLM's input, use the ",(0,n.jsx)(t.strong,{children:"Static Filters"})," option, which is available in the component's ",(0,n.jsx)(t.strong,{children:"Controls"})," pane."]}),"\n",(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Parameter"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Name"}),(0,n.jsx)(t.td,{children:"The name of the parameter that is exposed to the LLM. It can be the same as the underlying field name or a more descriptive label. The LLM uses this name, along with the description, to infer what value to provide during execution."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Attribute Name"}),(0,n.jsxs)(t.td,{children:["When the parameter name shown to the LLM differs from the actual field or property in the database, use this setting to map the user-facing name to the correct attribute. For example, to apply a range filter to the timestamp field, define two separate parameters, such as ",(0,n.jsx)(t.code,{children:"start_date"})," and ",(0,n.jsx)(t.code,{children:"end_date"}),", that both reference the same timestamp attribute."]})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Description"}),(0,n.jsxs)(t.td,{children:["Provides instructions to the LLM on how the parameter should be used. Clear and specific guidance helps the LLM provide valid input. For example, if a field such as ",(0,n.jsx)(t.code,{children:"specialty"})," is stored in lowercase, the description should indicate that the input must be lowercase."]})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Is Metadata"}),(0,n.jsxs)(t.td,{children:["When loading data using LangChain or Langflow, additional attributes may be stored under a metadata object. If the target attribute is stored this way, enable this option. It adjusts the query by generating a filter in the format: ",(0,n.jsx)(t.code,{children:'{"metadata.": ""}'})]})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Is Timestamp"}),(0,n.jsx)(t.td,{children:"For date or time-based filters, enable this option to automatically convert values to the timestamp format that the Astrapy client expects. This ensures compatibility with the underlying API without requiring manual formatting."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Operator"}),(0,n.jsxs)(t.td,{children:["Defines the filtering logic applied to the attribute. You can use any valid ",(0,n.jsx)(t.a,{href:"https://docs.datastax.com/en/astra-db-serverless/api-reference/filter-operator-collections.html",children:"Data API filter operator"}),". For example, to filter a time range on the timestamp attribute, use two parameters: one with the ",(0,n.jsx)(t.code,{children:"$gt"}),' operator for "greater than", and another with the ',(0,n.jsx)(t.code,{children:"$lt"}),' operator for "less than".']})]})]})]}),"\n",(0,n.jsxs)(r,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Inputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Tool Name"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The name used to reference the tool in the agent's prompt."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Tool Description"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"A brief description of the tool. This helps the model decide when to use it."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Collection Name"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The name of the Astra DB collection to query."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Token"}),(0,n.jsx)(t.td,{children:"SecretString"}),(0,n.jsx)(t.td,{children:"The authentication token for accessing Astra DB."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"API Endpoint"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The Astra DB API endpoint."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Projection Fields"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsxs)(t.td,{children:["The attributes to return, separated by commas. The default is ",(0,n.jsx)(t.code,{children:"*"}),"."]})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Tool Parameters"}),(0,n.jsx)(t.td,{children:"Dict"}),(0,n.jsxs)(t.td,{children:["Parameters the model needs to fill to execute the tool. For required parameters, use an exclamation mark, for example ",(0,n.jsx)(t.code,{children:"!customer_id"}),"."]})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Static Filters"}),(0,n.jsx)(t.td,{children:"Dict"}),(0,n.jsx)(t.td,{children:"Attribute-value pairs used to filter query results."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Limit"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The number of documents to return."})]})]})]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Outputs"})}),(0,n.jsxs)(t.p,{children:["The ",(0,n.jsx)(t.strong,{children:"Data"})," output is used when directly querying Astra DB, while the ",(0,n.jsx)(t.strong,{children:"Tool"})," output is used when integrating with agents."]}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Data"}),(0,n.jsx)(t.td,{children:"List[Data]"}),(0,n.jsxs)(t.td,{children:["A list of ",(0,n.jsx)(t.a,{href:"/concepts-objects",children:"Data"})," objects containing the query results from Astra DB. Each ",(0,n.jsx)(t.code,{children:"Data"})," object contains the document fields specified by the projection attributes. Limited by the ",(0,n.jsx)(t.code,{children:"number_of_results"})," parameter."]})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Tool"}),(0,n.jsx)(t.td,{children:"StructuredTool"}),(0,n.jsxs)(t.td,{children:["A LangChain ",(0,n.jsx)(t.code,{children:"StructuredTool"})," object that can be used in agent workflows. Contains the tool name, description, argument schema based on tool parameters, and the query function."]})]})]})]})]}),"\n",(0,n.jsx)(t.h2,{id:"astra-db-cql-tool",children:"Astra DB CQL Tool"}),"\n",(0,n.jsxs)(t.p,{children:["The ",(0,n.jsx)(t.code,{children:"Astra DB CQL Tool"})," allows agents to query data from CQL tables in Astra DB."]}),"\n",(0,n.jsxs)(r,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Inputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Tool Name"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The name used to reference the tool in the agent's prompt."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Tool Description"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"A brief description of the tool to guide the model in using it."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Keyspace"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The name of the keyspace."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Table Name"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The name of the Astra DB CQL table to query."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Token"}),(0,n.jsx)(t.td,{children:"SecretString"}),(0,n.jsx)(t.td,{children:"The authentication token for Astra DB."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"API Endpoint"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The Astra DB API endpoint."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Projection Fields"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:'The attributes to return, separated by commas. Default: "*".'})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Partition Keys"}),(0,n.jsx)(t.td,{children:"Dict"}),(0,n.jsx)(t.td,{children:"Required parameters that the model must fill to query the tool."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Clustering Keys"}),(0,n.jsx)(t.td,{children:"Dict"}),(0,n.jsxs)(t.td,{children:["Optional parameters the model can fill to refine the query. Required parameters should be marked with an exclamation mark, for example, ",(0,n.jsx)(t.code,{children:"!customer_id"}),"."]})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Static Filters"}),(0,n.jsx)(t.td,{children:"Dict"}),(0,n.jsx)(t.td,{children:"Attribute-value pairs used to filter query results."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Limit"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The number of records to return."})]})]})]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Outputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Data"}),(0,n.jsx)(t.td,{children:"List[Data]"}),(0,n.jsxs)(t.td,{children:["A list of ",(0,n.jsx)(t.a,{href:"/concepts-objects",children:"Data"})," objects containing the query results from the Astra DB CQL table. Each Data object contains the document fields specified by the projection fields. Limited by the ",(0,n.jsx)(t.code,{children:"number_of_results"})," parameter."]})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Tool"}),(0,n.jsx)(t.td,{children:"StructuredTool"}),(0,n.jsx)(t.td,{children:"A LangChain StructuredTool object that can be used in agent workflows. Contains the tool name, description, argument schema based on partition and clustering keys, and the query function."})]})]})]})]}),"\n",(0,n.jsx)(t.h2,{id:"bing-search-api",children:"Bing Search API"}),"\n",(0,n.jsx)(t.p,{children:"This component allows you to call the Bing Search API."}),"\n",(0,n.jsxs)(r,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Inputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"bing_subscription_key"}),(0,n.jsx)(t.td,{children:"SecretString"}),(0,n.jsx)(t.td,{children:"A Bing API subscription key."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"input_value"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The search query input."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"bing_search_url"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"A custom Bing Search URL."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"k"}),(0,n.jsx)(t.td,{children:"Integer"}),(0,n.jsx)(t.td,{children:"The number of search results to return."})]})]})]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Outputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"results"}),(0,n.jsx)(t.td,{children:"List[Data]"}),(0,n.jsx)(t.td,{children:"A list of search results."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"tool"}),(0,n.jsx)(t.td,{children:"Tool"}),(0,n.jsx)(t.td,{children:"A Bing Search tool for use in LangChain."})]})]})]})]}),"\n",(0,n.jsx)(t.h2,{id:"combinatorial-reasoner",children:"Combinatorial Reasoner"}),"\n",(0,n.jsxs)(t.p,{children:["This component runs Icosa's Combinatorial Reasoning (CR) pipeline on an input to create an optimized prompt with embedded reasons. For more information, see ",(0,n.jsx)(t.a,{href:"https://www.icosacomputing.com/",children:"Icosa computing"}),"."]}),"\n",(0,n.jsxs)(r,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Inputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"prompt"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The input to run CR on."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"openai_api_key"}),(0,n.jsx)(t.td,{children:"SecretString"}),(0,n.jsx)(t.td,{children:"An OpenAI API key for authentication."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"username"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"A username for Icosa API authentication."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"password"}),(0,n.jsx)(t.td,{children:"SecretString"}),(0,n.jsx)(t.td,{children:"A password for Icosa API authentication."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"model_name"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The OpenAI LLM to use for reason generation."})]})]})]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Outputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"optimized_prompt"}),(0,n.jsx)(t.td,{children:"Message"}),(0,n.jsx)(t.td,{children:"A message object containing the optimized prompt."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"reasons"}),(0,n.jsx)(t.td,{children:"List[String]"}),(0,n.jsx)(t.td,{children:"A list of the selected reasons that are embedded in the optimized prompt."})]})]})]})]}),"\n",(0,n.jsx)(t.h2,{id:"duckduckgo-search",children:"DuckDuckGo search"}),"\n",(0,n.jsxs)(t.p,{children:["This component performs web searches using the ",(0,n.jsx)(t.a,{href:"https://www.duckduckgo.com",children:"DuckDuckGo"})," search engine with result-limiting capabilities."]}),"\n",(0,n.jsxs)(r,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Inputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"input_value"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The search query to execute with DuckDuckGo."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"max_results"}),(0,n.jsx)(t.td,{children:"Integer"}),(0,n.jsx)(t.td,{children:"The maximum number of search results to return. Default: 5."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"max_snippet_length"}),(0,n.jsx)(t.td,{children:"Integer"}),(0,n.jsx)(t.td,{children:"The maximum length of each result snippet. Default: 100."})]})]})]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Outputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"data"}),(0,n.jsx)(t.td,{children:"List[Data]"}),(0,n.jsx)(t.td,{children:"A list of search results as Data objects containing snippets and full content."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"text"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The search results formatted as a single text string."})]})]})]})]}),"\n",(0,n.jsx)(t.h2,{id:"exa-search",children:"Exa Search"}),"\n",(0,n.jsxs)(t.p,{children:["This component provides an ",(0,n.jsx)(t.a,{href:"https://exa.ai/",children:"Exa Search"})," toolkit for search and content retrieval."]}),"\n",(0,n.jsxs)(r,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Inputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"metaphor_api_key"}),(0,n.jsx)(t.td,{children:"SecretString"}),(0,n.jsx)(t.td,{children:"An API key for Exa Search."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"use_autoprompt"}),(0,n.jsx)(t.td,{children:"Boolean"}),(0,n.jsx)(t.td,{children:"Whether to use the autoprompt feature. Default: true."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"search_num_results"}),(0,n.jsx)(t.td,{children:"Integer"}),(0,n.jsx)(t.td,{children:"The number of results to return for search. Default: 5."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"similar_num_results"}),(0,n.jsx)(t.td,{children:"Integer"}),(0,n.jsx)(t.td,{children:"The number of similar results to return. Default: 5."})]})]})]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Outputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsx)(t.tbody,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"tools"}),(0,n.jsx)(t.td,{children:"List[Tool]"}),(0,n.jsx)(t.td,{children:"A list of search tools provided by the toolkit."})]})})]})]}),"\n",(0,n.jsx)(t.h2,{id:"glean-search-api",children:"Glean Search API"}),"\n",(0,n.jsx)(t.p,{children:"This component allows you to call the Glean Search API."}),"\n",(0,n.jsxs)(r,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Inputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"glean_api_url"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The URL of the Glean API."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"glean_access_token"}),(0,n.jsx)(t.td,{children:"SecretString"}),(0,n.jsx)(t.td,{children:"An access token for Glean API authentication."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"query"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The search query input."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"page_size"}),(0,n.jsx)(t.td,{children:"Integer"}),(0,n.jsx)(t.td,{children:"The number of results per page. Default: 10."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"request_options"}),(0,n.jsx)(t.td,{children:"Dict"}),(0,n.jsx)(t.td,{children:"Additional options for the API request."})]})]})]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Outputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"results"}),(0,n.jsx)(t.td,{children:"List[Data]"}),(0,n.jsx)(t.td,{children:"A list of search results."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"tool"}),(0,n.jsx)(t.td,{children:"Tool"}),(0,n.jsx)(t.td,{children:"A Glean Search tool for use in LangChain."})]})]})]})]}),"\n",(0,n.jsx)(t.h2,{id:"google-serper-api",children:"Google Serper API"}),"\n",(0,n.jsx)(t.p,{children:"This component allows you to call the Serper.dev Google Search API."}),"\n",(0,n.jsxs)(r,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Inputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"serper_api_key"}),(0,n.jsx)(t.td,{children:"SecretString"}),(0,n.jsx)(t.td,{children:"An API key for Serper.dev authentication."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"input_value"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The search query input."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"k"}),(0,n.jsx)(t.td,{children:"Integer"}),(0,n.jsx)(t.td,{children:"The number of search results to return."})]})]})]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Outputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"results"}),(0,n.jsx)(t.td,{children:"List[Data]"}),(0,n.jsx)(t.td,{children:"A list of search results."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"tool"}),(0,n.jsx)(t.td,{children:"Tool"}),(0,n.jsx)(t.td,{children:"A Google Serper search tool for use in LangChain."})]})]})]})]}),"\n",(0,n.jsx)(t.h2,{id:"mcp-connection",children:"MCP connection"}),"\n",(0,n.jsxs)(t.p,{children:["The ",(0,n.jsx)(t.strong,{children:"MCP connection"})," component exposes Model Context Protocol (MCP) servers, including your other flows, as tools for Langflow agents. For information about this component, see ",(0,n.jsx)(t.a,{href:"/mcp-client",children:"Use Langflow as an MCP client"}),"."]}),"\n",(0,n.jsx)(t.h3,{id:"mcp-tools-deprecated",children:"MCP Tools (deprecated)"}),"\n",(0,n.jsxs)(t.p,{children:["The ",(0,n.jsx)(t.strong,{children:"MCP Tools (stdio)"})," and ",(0,n.jsx)(t.strong,{children:"MCP Tools (SSE)"})," components are deprecated as of Langflow version 1.3.\nThey are replaced by the ",(0,n.jsx)(t.a,{href:"/mcp-client",children:"MCP connection component"}),"."]}),"\n",(0,n.jsx)(t.h2,{id:"wikidata",children:"Wikidata"}),"\n",(0,n.jsx)(t.p,{children:"This component performs a search using the Wikidata API."}),"\n",(0,n.jsxs)(r,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Inputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsx)(t.tbody,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"query"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The text query for similarity search on Wikidata."})]})})]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Outputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"data"}),(0,n.jsx)(t.td,{children:"List[Data]"}),(0,n.jsx)(t.td,{children:"The search results from Wikidata API as a list of Data objects."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"text"}),(0,n.jsx)(t.td,{children:"Message"}),(0,n.jsx)(t.td,{children:"The search results formatted as a text message."})]})]})]})]}),"\n",(0,n.jsx)(t.h2,{id:"legacy-components",children:"Legacy components"}),"\n",(0,n.jsx)(t.p,{children:"Legacy components are available for use but are no longer supported."}),"\n",(0,n.jsx)(t.h3,{id:"calculator-tool",children:"Calculator Tool"}),"\n",(0,n.jsx)(t.p,{children:"This component allows you to evaluate basic arithmetic expressions. It supports addition, subtraction, multiplication, division, and exponentiation."}),"\n",(0,n.jsxs)(r,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Inputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsx)(t.tbody,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"expression"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsxs)(t.td,{children:["The arithmetic expression to evaluate. For example, ",(0,n.jsx)(t.code,{children:"4*4*(33/22)+12-20"}),"."]})]})})]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Outputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsx)(t.tbody,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"result"}),(0,n.jsx)(t.td,{children:"Tool"}),(0,n.jsx)(t.td,{children:"A calculator tool for use in LangChain."})]})})]})]}),"\n",(0,n.jsx)(t.h3,{id:"google-search-api",children:"Google Search API"}),"\n",(0,n.jsx)(t.p,{children:"This component allows you to call the Google Search API."}),"\n",(0,n.jsxs)(r,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Inputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"google_api_key"}),(0,n.jsx)(t.td,{children:"SecretString"}),(0,n.jsx)(t.td,{children:"A Google API key for authentication."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"google_cse_id"}),(0,n.jsx)(t.td,{children:"SecretString"}),(0,n.jsx)(t.td,{children:"A Google Custom Search Engine ID."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"input_value"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The search query input."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"k"}),(0,n.jsx)(t.td,{children:"Integer"}),(0,n.jsx)(t.td,{children:"The number of search results to return."})]})]})]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Outputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"results"}),(0,n.jsx)(t.td,{children:"List[Data]"}),(0,n.jsx)(t.td,{children:"A list of search results."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"tool"}),(0,n.jsx)(t.td,{children:"Tool"}),(0,n.jsx)(t.td,{children:"A Google Search tool for use in LangChain."})]})]})]})]}),"\n",(0,n.jsx)(t.h3,{id:"python-code-structured-tool",children:"Python Code Structured Tool"}),"\n",(0,n.jsx)(t.p,{children:"This component creates a structured tool from Python code using a dataclass."}),"\n",(0,n.jsx)(t.p,{children:"The component dynamically updates its configuration based on the provided Python code, allowing for custom function arguments and descriptions."}),"\n",(0,n.jsxs)(r,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Inputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"tool_code"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The Python code for the tool's dataclass."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"tool_name"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The name of the tool."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"tool_description"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The description of the tool."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"return_direct"}),(0,n.jsx)(t.td,{children:"Boolean"}),(0,n.jsx)(t.td,{children:"Whether to return the function output directly."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"tool_function"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The selected function for the tool."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"global_variables"}),(0,n.jsx)(t.td,{children:"Dict"}),(0,n.jsx)(t.td,{children:"Global variables or data for the tool."})]})]})]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Outputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsx)(t.tbody,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"result_tool"}),(0,n.jsx)(t.td,{children:"Tool"}),(0,n.jsx)(t.td,{children:"A structured tool created from the Python code."})]})})]})]}),"\n",(0,n.jsx)(t.h3,{id:"python-repl-tool",children:"Python REPL Tool"}),"\n",(0,n.jsx)(t.p,{children:"This component creates a Python REPL (Read-Eval-Print Loop) tool for executing Python code."}),"\n",(0,n.jsxs)(r,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Inputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"name"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsxs)(t.td,{children:["The name of the tool. Default: ",(0,n.jsx)(t.code,{children:"python_repl"}),"."]})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"description"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"A description of the tool's functionality."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"global_imports"}),(0,n.jsx)(t.td,{children:"List[String]"}),(0,n.jsxs)(t.td,{children:["A list of modules to import globally. Default: ",(0,n.jsx)(t.code,{children:"math"}),"."]})]})]})]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Outputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsx)(t.tbody,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"tool"}),(0,n.jsx)(t.td,{children:"Tool"}),(0,n.jsx)(t.td,{children:"A Python REPL tool for use in LangChain."})]})})]})]}),"\n",(0,n.jsx)(t.h3,{id:"retriever-tool",children:"Retriever Tool"}),"\n",(0,n.jsx)(t.p,{children:"This component creates a tool for interacting with a retriever in LangChain."}),"\n",(0,n.jsxs)(r,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Inputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"retriever"}),(0,n.jsx)(t.td,{children:"BaseRetriever"}),(0,n.jsx)(t.td,{children:"The retriever to interact with."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"name"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The name of the tool."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"description"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"A description of the tool's functionality."})]})]})]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Outputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsx)(t.tbody,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"tool"}),(0,n.jsx)(t.td,{children:"Tool"}),(0,n.jsx)(t.td,{children:"A retriever tool for use in LangChain."})]})})]})]}),"\n",(0,n.jsx)(t.h3,{id:"search-api",children:"Search API"}),"\n",(0,n.jsxs)(t.p,{children:["This component calls the ",(0,n.jsx)(t.code,{children:"searchapi.io"})," API. It can be used to search the web for information."]}),"\n",(0,n.jsxs)(t.p,{children:["For more information, see the ",(0,n.jsx)(t.a,{href:"https://www.searchapi.io/docs/google",children:"SearchAPI documentation"}),"."]}),"\n",(0,n.jsxs)(r,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Inputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"engine"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsxs)(t.td,{children:["The search engine to use. Default: ",(0,n.jsx)(t.code,{children:"google"}),"."]})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"api_key"}),(0,n.jsx)(t.td,{children:"SecretString"}),(0,n.jsx)(t.td,{children:"The API key for authenticating with SearchAPI."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"input_value"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The search query or input for the API call."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"search_params"}),(0,n.jsx)(t.td,{children:"Dict"}),(0,n.jsx)(t.td,{children:"Additional parameters for customizing the search."})]})]})]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Outputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"data"}),(0,n.jsx)(t.td,{children:"List[Data]"}),(0,n.jsx)(t.td,{children:"A list of Data objects containing search results."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"tool"}),(0,n.jsx)(t.td,{children:"Tool"}),(0,n.jsx)(t.td,{children:"A Tool object for use in LangChain workflows."})]})]})]})]}),"\n",(0,n.jsx)(t.h3,{id:"searxng-search-tool",children:"SearXNG Search Tool"}),"\n",(0,n.jsx)(t.p,{children:"This component creates a tool for searching using SearXNG, a metasearch engine."}),"\n",(0,n.jsxs)(r,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Inputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"url"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The URL of the SearXNG instance."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"max_results"}),(0,n.jsx)(t.td,{children:"Integer"}),(0,n.jsx)(t.td,{children:"The maximum number of results to return."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"categories"}),(0,n.jsx)(t.td,{children:"List[String]"}),(0,n.jsx)(t.td,{children:"The categories to search in."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"language"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The language for the search results."})]})]})]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Outputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsx)(t.tbody,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"result_tool"}),(0,n.jsx)(t.td,{children:"Tool"}),(0,n.jsx)(t.td,{children:"A SearXNG search tool for use in LangChain."})]})})]})]}),"\n",(0,n.jsx)(t.h3,{id:"wikipedia-api",children:"Wikipedia API"}),"\n",(0,n.jsx)(t.p,{children:"This component creates a tool for searching and retrieving information from Wikipedia."}),"\n",(0,n.jsxs)(r,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Inputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"input_value"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The search query input."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"lang"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsxs)(t.td,{children:["The language code for Wikipedia. Default: ",(0,n.jsx)(t.code,{children:"en"}),"."]})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"k"}),(0,n.jsx)(t.td,{children:"Integer"}),(0,n.jsx)(t.td,{children:"The number of results to return."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"load_all_available_meta"}),(0,n.jsx)(t.td,{children:"Boolean"}),(0,n.jsx)(t.td,{children:"Whether to load all available metadata."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"doc_content_chars_max"}),(0,n.jsx)(t.td,{children:"Integer"}),(0,n.jsx)(t.td,{children:"The maximum number of characters for document content."})]})]})]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Outputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"results"}),(0,n.jsx)(t.td,{children:"List[Data]"}),(0,n.jsx)(t.td,{children:"A list of Wikipedia search results."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"tool"}),(0,n.jsx)(t.td,{children:"Tool"}),(0,n.jsx)(t.td,{children:"A Wikipedia search tool for use in LangChain."})]})]})]})]})]})}function x(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(a,{...e})}):a(e)}}}]);
\ No newline at end of file
diff --git a/assets/js/8ff68e6f.7dc3f376.js b/assets/js/8ff68e6f.7dc3f376.js
new file mode 100644
index 0000000000..8a8d79a4ff
--- /dev/null
+++ b/assets/js/8ff68e6f.7dc3f376.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[2624],{17886:(e,t,s)=>{s.d(t,{A:()=>i});s(96540);var r=s(64058),n=s(74848);function i({name:e,...t}){const s=r[e];return s?(0,n.jsx)(s,{...t}):null}},19680:(e,t,s)=>{s.d(t,{A:()=>r});const r=s.p+"assets/images/starter-flow-simple-agent-cd0ff46423ac65a913c22a0360d1570b.png"},28453:(e,t,s)=>{s.d(t,{R:()=>d,x:()=>l});var r=s(96540);const n={},i=r.createContext(n);function d(e){const t=r.useContext(i);return r.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(n):e.components||n:d(e.components),r.createElement(i.Provider,{value:t},e.children)}},68335:(e,t,s)=>{s.d(t,{A:()=>r});const r=s.p+"assets/images/component-astra-db-json-tool-117aff566c0df01a555264bb128b3693.png"},70893:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>c,contentTitle:()=>h,default:()=>x,frontMatter:()=>l,metadata:()=>r,toc:()=>o});const r=JSON.parse('{"id":"Components/components-tools","title":"Tools","description":"Tools are typically connected to agent components at the Tools port. Agents use LLMs as a reasoning engine to decide which of the connected tool components to use to solve a problem.","source":"@site/docs/Components/components-tools.md","sourceDirName":"Components","slug":"/components-tools","permalink":"/components-tools","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Tools","slug":"/components-tools"},"sidebar":"docs","previous":{"title":"Prompts","permalink":"/components-prompts"},"next":{"title":"Vector stores","permalink":"/components-vector-stores"}}');var n=s(74848),i=s(28453),d=s(17886);const l={title:"Tools",slug:"/components-tools"},h="Tool components in Langflow",c={},o=[{value:"Use a tool in a flow",id:"use-a-tool-in-a-flow",level:2},{value:"arXiv",id:"arxiv",level:2},{value:"Astra DB tool",id:"astra-db-tool",level:2},{value:"Define Astra DB tool parameters",id:"define-astra-db-tool-parameters",level:3},{value:"Astra DB CQL Tool",id:"astra-db-cql-tool",level:2},{value:"Bing Search API",id:"bing-search-api",level:2},{value:"Combinatorial Reasoner",id:"combinatorial-reasoner",level:2},{value:"DuckDuckGo search",id:"duckduckgo-search",level:2},{value:"Exa Search",id:"exa-search",level:2},{value:"Glean Search API",id:"glean-search-api",level:2},{value:"Google Serper API",id:"google-serper-api",level:2},{value:"MCP connection",id:"mcp-connection",level:2},{value:"MCP Tools (deprecated)",id:"mcp-tools-deprecated",level:3},{value:"Wikidata",id:"wikidata",level:2},{value:"Legacy components",id:"legacy-components",level:2},{value:"Calculator Tool",id:"calculator-tool",level:3},{value:"Google Search API",id:"google-search-api",level:3},{value:"Python Code Structured Tool",id:"python-code-structured-tool",level:3},{value:"Python REPL Tool",id:"python-repl-tool",level:3},{value:"Retriever Tool",id:"retriever-tool",level:3},{value:"Search API",id:"search-api",level:3},{value:"SearXNG Search Tool",id:"searxng-search-tool",level:3},{value:"Wikipedia API",id:"wikipedia-api",level:3}];function a(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components},{Details:r}=t;return r||function(e,t){throw new Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.header,{children:(0,n.jsx)(t.h1,{id:"tool-components-in-langflow",children:"Tool components in Langflow"})}),"\n",(0,n.jsxs)(t.p,{children:["Tools are typically connected to agent components at the ",(0,n.jsx)(t.strong,{children:"Tools"})," port. Agents use LLMs as a reasoning engine to decide which of the connected tool components to use to solve a problem."]}),"\n",(0,n.jsxs)(t.p,{children:["Tools in agentic functions are, essentially, functions that the agent can call to perform tasks or access external resources.\nA function is wrapped as a ",(0,n.jsx)(t.code,{children:"Tool"})," object, with a common interface the agent understands.\nAgents become aware of tools through tool registration, where the agent is provided a list of available tools, typically at agent initialization. The ",(0,n.jsx)(t.code,{children:"Tool"})," object's description tells the agent what the tool can do."]}),"\n",(0,n.jsx)(t.p,{children:"The agent then uses a connected LLM to reason through the problem to decide which tool is best for the job."}),"\n",(0,n.jsx)(t.h2,{id:"use-a-tool-in-a-flow",children:"Use a tool in a flow"}),"\n",(0,n.jsxs)(t.p,{children:["Tools are typically connected to agent components at the ",(0,n.jsx)(t.strong,{children:"Tools"})," port."]}),"\n",(0,n.jsxs)(t.p,{children:["The ",(0,n.jsx)(t.a,{href:"/simple-agent",children:"simple agent starter project"})," uses URL and Calculator tools connected to an ",(0,n.jsx)(t.a,{href:"/components-agents#agent-component",children:"agent component"})," to answer a user's questions. The OpenAI LLM acts as a brain for the agent to decide which tool to use."]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"Simple agent starter flow",src:s(19680).A+"",width:"4000",height:"1826"})}),"\n",(0,n.jsxs)(t.p,{children:["To make a component into a tool that an agent can use, enable ",(0,n.jsx)(t.strong,{children:"Tool mode"})," in the component. Enabling ",(0,n.jsx)(t.strong,{children:"Tool mode"})," modifies a component input to accept calls from an agent.\nIf the component you want to connect to an agent doesn't have a ",(0,n.jsx)(t.strong,{children:"Tool mode"})," option, you can modify the component's inputs to become a tool.\nFor an example, see ",(0,n.jsx)(t.a,{href:"/agents-tools#make-any-component-a-tool",children:"Make any component a tool"}),"."]}),"\n",(0,n.jsx)(t.h2,{id:"arxiv",children:"arXiv"}),"\n",(0,n.jsxs)(t.p,{children:["This component searches and retrieves papers from ",(0,n.jsx)(t.a,{href:"https://arXiv.org",children:"arXiv.org"}),"."]}),"\n",(0,n.jsxs)(r,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Inputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"search_query"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsxs)(t.td,{children:["The search query for arXiv papers. For example, ",(0,n.jsx)(t.code,{children:"quantum computing"}),"."]})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"search_type"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The field to search in."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"max_results"}),(0,n.jsx)(t.td,{children:"Integer"}),(0,n.jsx)(t.td,{children:"The maximum number of results to return."})]})]})]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Outputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsx)(t.tbody,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"papers"}),(0,n.jsx)(t.td,{children:"List[Data]"}),(0,n.jsx)(t.td,{children:"A list of retrieved arXiv papers."})]})})]})]}),"\n",(0,n.jsx)(t.h2,{id:"astra-db-tool",children:"Astra DB tool"}),"\n",(0,n.jsx)(t.p,{children:"This component allows agents to query data from Astra DB collections."}),"\n",(0,n.jsxs)(t.p,{children:["To use this tool in a flow, connect it to an ",(0,n.jsx)(t.strong,{children:"Agent"})," component.\nThe flow looks like this:"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"Astra DB JSON tool connected to an Agent",src:s(68335).A+"",width:"4000",height:"2742"})}),"\n",(0,n.jsxs)(t.p,{children:["The ",(0,n.jsx)(t.strong,{children:"Tool Name"})," and ",(0,n.jsx)(t.strong,{children:"Tool Description"})," fields are required for the Agent to decide when to use the tool.\n",(0,n.jsx)(t.strong,{children:"Tool Name"})," cannot contain spaces."]}),"\n",(0,n.jsxs)(t.p,{children:["The values for ",(0,n.jsx)(t.strong,{children:"Collection Name"}),", ",(0,n.jsx)(t.strong,{children:"Astra DB Application Token"}),", and ",(0,n.jsx)(t.strong,{children:"Astra DB API Endpoint"})," are found in your Astra DB deployment. For more information, see the ",(0,n.jsx)(t.a,{href:"https://docs.datastax.com/en/astra-db-serverless/databases/create-database.html",children:"DataStax documentation"}),"."]}),"\n",(0,n.jsxs)(t.p,{children:["In this example, an ",(0,n.jsx)(t.strong,{children:"OpenAI"})," embeddings component is connected to use the Astra DB tool component's ",(0,n.jsx)(t.strong,{children:"Semantic Search"})," capability.\nTo use ",(0,n.jsx)(t.strong,{children:"Semantic Search"}),", you must have an embedding model or Astra DB Vectorize enabled.\nIf you try to run the flow without an embedding model, you will get an error."]}),"\n",(0,n.jsxs)(t.p,{children:["Open the ",(0,n.jsx)(t.strong,{children:"Playground"})," and ask a question about your data.\nThe Agent uses the ",(0,n.jsx)(t.strong,{children:"Astra DB Tool"})," to return information about your collection."]}),"\n",(0,n.jsx)(t.h3,{id:"define-astra-db-tool-parameters",children:"Define Astra DB tool parameters"}),"\n",(0,n.jsxs)(t.p,{children:["The ",(0,n.jsx)(t.strong,{children:"Tool Parameters"})," configuration pane allows you to define parameters for ",(0,n.jsx)(t.a,{href:"https://docs.datastax.com/en/astra-db-serverless/api-reference/document-methods/find-many.html#parameters",children:"filter conditions"})," for the component's ",(0,n.jsx)(t.strong,{children:"Find"})," command."]}),"\n",(0,n.jsxs)(t.p,{children:["These filters become available as parameters that the LLM can use when calling the tool, with a better understanding of each parameter provided by the ",(0,n.jsx)(t.strong,{children:"Description"})," field."]}),"\n",(0,n.jsxs)(t.ol,{children:["\n",(0,n.jsxs)(t.li,{children:["To define a parameter for your query, in the ",(0,n.jsx)(t.strong,{children:"Tool Parameters"})," pane, click ",(0,n.jsx)(d.A,{name:"Plus","aria-hidden":"true"})," ",(0,n.jsx)(t.strong,{children:"Add a new row"}),"."]}),"\n",(0,n.jsxs)(t.li,{children:["Complete the fields based on your data. For example, with this filter, the LLM can filter by unique ",(0,n.jsx)(t.code,{children:"customer_id"})," values."]}),"\n"]}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["Name: ",(0,n.jsx)(t.code,{children:"customer_id"})]}),"\n",(0,n.jsx)(t.li,{children:"Attribute Name: Leave empty if the attribute matches the field name in the database."}),"\n",(0,n.jsxs)(t.li,{children:["Description: ",(0,n.jsx)(t.code,{children:'"The unique identifier of the customer to filter by"'}),"."]}),"\n",(0,n.jsxs)(t.li,{children:["Is Metadata: ",(0,n.jsx)(t.code,{children:"False"})," unless the value stored in the metadata field."]}),"\n",(0,n.jsxs)(t.li,{children:["Is Mandatory: ",(0,n.jsx)(t.code,{children:"True"})," to require this filter."]}),"\n",(0,n.jsxs)(t.li,{children:["Is Timestamp: ",(0,n.jsx)(t.code,{children:"False"})," since the value is an ID, not a timestamp."]}),"\n",(0,n.jsxs)(t.li,{children:["Operator: ",(0,n.jsx)(t.code,{children:"$eq"})," to look for an exact match."]}),"\n"]}),"\n",(0,n.jsxs)(t.p,{children:["If you want to apply filters regardless of the LLM's input, use the ",(0,n.jsx)(t.strong,{children:"Static Filters"})," option, which is available in the component's ",(0,n.jsx)(t.strong,{children:"Controls"})," pane."]}),"\n",(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Parameter"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Name"}),(0,n.jsx)(t.td,{children:"The name of the parameter that is exposed to the LLM. It can be the same as the underlying field name or a more descriptive label. The LLM uses this name, along with the description, to infer what value to provide during execution."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Attribute Name"}),(0,n.jsxs)(t.td,{children:["When the parameter name shown to the LLM differs from the actual field or property in the database, use this setting to map the user-facing name to the correct attribute. For example, to apply a range filter to the timestamp field, define two separate parameters, such as ",(0,n.jsx)(t.code,{children:"start_date"})," and ",(0,n.jsx)(t.code,{children:"end_date"}),", that both reference the same timestamp attribute."]})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Description"}),(0,n.jsxs)(t.td,{children:["Provides instructions to the LLM on how the parameter should be used. Clear and specific guidance helps the LLM provide valid input. For example, if a field such as ",(0,n.jsx)(t.code,{children:"specialty"})," is stored in lowercase, the description should indicate that the input must be lowercase."]})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Is Metadata"}),(0,n.jsxs)(t.td,{children:["When loading data using LangChain or Langflow, additional attributes may be stored under a metadata object. If the target attribute is stored this way, enable this option. It adjusts the query by generating a filter in the format: ",(0,n.jsx)(t.code,{children:'{"metadata.": ""}'})]})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Is Timestamp"}),(0,n.jsx)(t.td,{children:"For date or time-based filters, enable this option to automatically convert values to the timestamp format that the Astrapy client expects. This ensures compatibility with the underlying API without requiring manual formatting."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Operator"}),(0,n.jsxs)(t.td,{children:["Defines the filtering logic applied to the attribute. You can use any valid ",(0,n.jsx)(t.a,{href:"https://docs.datastax.com/en/astra-db-serverless/api-reference/filter-operator-collections.html",children:"Data API filter operator"}),". For example, to filter a time range on the timestamp attribute, use two parameters: one with the ",(0,n.jsx)(t.code,{children:"$gt"}),' operator for "greater than", and another with the ',(0,n.jsx)(t.code,{children:"$lt"}),' operator for "less than".']})]})]})]}),"\n",(0,n.jsxs)(r,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Inputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Tool Name"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The name used to reference the tool in the agent's prompt."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Tool Description"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"A brief description of the tool. This helps the model decide when to use it."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Collection Name"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The name of the Astra DB collection to query."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Token"}),(0,n.jsx)(t.td,{children:"SecretString"}),(0,n.jsx)(t.td,{children:"The authentication token for accessing Astra DB."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"API Endpoint"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The Astra DB API endpoint."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Projection Fields"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsxs)(t.td,{children:["The attributes to return, separated by commas. The default is ",(0,n.jsx)(t.code,{children:"*"}),"."]})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Tool Parameters"}),(0,n.jsx)(t.td,{children:"Dict"}),(0,n.jsxs)(t.td,{children:["Parameters the model needs to fill to execute the tool. For required parameters, use an exclamation mark, for example ",(0,n.jsx)(t.code,{children:"!customer_id"}),"."]})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Static Filters"}),(0,n.jsx)(t.td,{children:"Dict"}),(0,n.jsx)(t.td,{children:"Attribute-value pairs used to filter query results."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Limit"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The number of documents to return."})]})]})]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Outputs"})}),(0,n.jsxs)(t.p,{children:["The ",(0,n.jsx)(t.strong,{children:"Data"})," output is used when directly querying Astra DB, while the ",(0,n.jsx)(t.strong,{children:"Tool"})," output is used when integrating with agents."]}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Data"}),(0,n.jsx)(t.td,{children:"List[Data]"}),(0,n.jsxs)(t.td,{children:["A list of ",(0,n.jsx)(t.a,{href:"/concepts-objects",children:"Data"})," objects containing the query results from Astra DB. Each ",(0,n.jsx)(t.code,{children:"Data"})," object contains the document fields specified by the projection attributes. Limited by the ",(0,n.jsx)(t.code,{children:"number_of_results"})," parameter."]})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Tool"}),(0,n.jsx)(t.td,{children:"StructuredTool"}),(0,n.jsxs)(t.td,{children:["A LangChain ",(0,n.jsx)(t.code,{children:"StructuredTool"})," object that can be used in agent workflows. Contains the tool name, description, argument schema based on tool parameters, and the query function."]})]})]})]})]}),"\n",(0,n.jsx)(t.h2,{id:"astra-db-cql-tool",children:"Astra DB CQL Tool"}),"\n",(0,n.jsxs)(t.p,{children:["The ",(0,n.jsx)(t.code,{children:"Astra DB CQL Tool"})," allows agents to query data from CQL tables in Astra DB."]}),"\n",(0,n.jsxs)(r,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Inputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Tool Name"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The name used to reference the tool in the agent's prompt."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Tool Description"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"A brief description of the tool to guide the model in using it."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Keyspace"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The name of the keyspace."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Table Name"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The name of the Astra DB CQL table to query."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Token"}),(0,n.jsx)(t.td,{children:"SecretString"}),(0,n.jsx)(t.td,{children:"The authentication token for Astra DB."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"API Endpoint"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The Astra DB API endpoint."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Projection Fields"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:'The attributes to return, separated by commas. Default: "*".'})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Partition Keys"}),(0,n.jsx)(t.td,{children:"Dict"}),(0,n.jsx)(t.td,{children:"Required parameters that the model must fill to query the tool."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Clustering Keys"}),(0,n.jsx)(t.td,{children:"Dict"}),(0,n.jsxs)(t.td,{children:["Optional parameters the model can fill to refine the query. Required parameters should be marked with an exclamation mark, for example, ",(0,n.jsx)(t.code,{children:"!customer_id"}),"."]})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Static Filters"}),(0,n.jsx)(t.td,{children:"Dict"}),(0,n.jsx)(t.td,{children:"Attribute-value pairs used to filter query results."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Limit"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The number of records to return."})]})]})]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Outputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Data"}),(0,n.jsx)(t.td,{children:"List[Data]"}),(0,n.jsxs)(t.td,{children:["A list of ",(0,n.jsx)(t.a,{href:"/concepts-objects",children:"Data"})," objects containing the query results from the Astra DB CQL table. Each Data object contains the document fields specified by the projection fields. Limited by the ",(0,n.jsx)(t.code,{children:"number_of_results"})," parameter."]})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Tool"}),(0,n.jsx)(t.td,{children:"StructuredTool"}),(0,n.jsx)(t.td,{children:"A LangChain StructuredTool object that can be used in agent workflows. Contains the tool name, description, argument schema based on partition and clustering keys, and the query function."})]})]})]})]}),"\n",(0,n.jsx)(t.h2,{id:"bing-search-api",children:"Bing Search API"}),"\n",(0,n.jsx)(t.p,{children:"This component allows you to call the Bing Search API."}),"\n",(0,n.jsxs)(r,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Inputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"bing_subscription_key"}),(0,n.jsx)(t.td,{children:"SecretString"}),(0,n.jsx)(t.td,{children:"A Bing API subscription key."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"input_value"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The search query input."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"bing_search_url"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"A custom Bing Search URL."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"k"}),(0,n.jsx)(t.td,{children:"Integer"}),(0,n.jsx)(t.td,{children:"The number of search results to return."})]})]})]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Outputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"results"}),(0,n.jsx)(t.td,{children:"List[Data]"}),(0,n.jsx)(t.td,{children:"A list of search results."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"tool"}),(0,n.jsx)(t.td,{children:"Tool"}),(0,n.jsx)(t.td,{children:"A Bing Search tool for use in LangChain."})]})]})]})]}),"\n",(0,n.jsx)(t.h2,{id:"combinatorial-reasoner",children:"Combinatorial Reasoner"}),"\n",(0,n.jsxs)(t.p,{children:["This component runs Icosa's Combinatorial Reasoning (CR) pipeline on an input to create an optimized prompt with embedded reasons. For more information, see ",(0,n.jsx)(t.a,{href:"https://www.icosacomputing.com/",children:"Icosa computing"}),"."]}),"\n",(0,n.jsxs)(r,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Inputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"prompt"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The input to run CR on."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"openai_api_key"}),(0,n.jsx)(t.td,{children:"SecretString"}),(0,n.jsx)(t.td,{children:"An OpenAI API key for authentication."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"username"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"A username for Icosa API authentication."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"password"}),(0,n.jsx)(t.td,{children:"SecretString"}),(0,n.jsx)(t.td,{children:"A password for Icosa API authentication."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"model_name"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The OpenAI LLM to use for reason generation."})]})]})]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Outputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"optimized_prompt"}),(0,n.jsx)(t.td,{children:"Message"}),(0,n.jsx)(t.td,{children:"A message object containing the optimized prompt."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"reasons"}),(0,n.jsx)(t.td,{children:"List[String]"}),(0,n.jsx)(t.td,{children:"A list of the selected reasons that are embedded in the optimized prompt."})]})]})]})]}),"\n",(0,n.jsx)(t.h2,{id:"duckduckgo-search",children:"DuckDuckGo search"}),"\n",(0,n.jsxs)(t.p,{children:["This component performs web searches using the ",(0,n.jsx)(t.a,{href:"https://www.duckduckgo.com",children:"DuckDuckGo"})," search engine with result-limiting capabilities."]}),"\n",(0,n.jsxs)(r,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Inputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"input_value"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The search query to execute with DuckDuckGo."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"max_results"}),(0,n.jsx)(t.td,{children:"Integer"}),(0,n.jsx)(t.td,{children:"The maximum number of search results to return. Default: 5."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"max_snippet_length"}),(0,n.jsx)(t.td,{children:"Integer"}),(0,n.jsx)(t.td,{children:"The maximum length of each result snippet. Default: 100."})]})]})]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Outputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"data"}),(0,n.jsx)(t.td,{children:"List[Data]"}),(0,n.jsx)(t.td,{children:"A list of search results as Data objects containing snippets and full content."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"text"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The search results formatted as a single text string."})]})]})]})]}),"\n",(0,n.jsx)(t.h2,{id:"exa-search",children:"Exa Search"}),"\n",(0,n.jsxs)(t.p,{children:["This component provides an ",(0,n.jsx)(t.a,{href:"https://exa.ai/",children:"Exa Search"})," toolkit for search and content retrieval."]}),"\n",(0,n.jsxs)(r,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Inputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"metaphor_api_key"}),(0,n.jsx)(t.td,{children:"SecretString"}),(0,n.jsx)(t.td,{children:"An API key for Exa Search."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"use_autoprompt"}),(0,n.jsx)(t.td,{children:"Boolean"}),(0,n.jsx)(t.td,{children:"Whether to use the autoprompt feature. Default: true."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"search_num_results"}),(0,n.jsx)(t.td,{children:"Integer"}),(0,n.jsx)(t.td,{children:"The number of results to return for search. Default: 5."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"similar_num_results"}),(0,n.jsx)(t.td,{children:"Integer"}),(0,n.jsx)(t.td,{children:"The number of similar results to return. Default: 5."})]})]})]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Outputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsx)(t.tbody,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"tools"}),(0,n.jsx)(t.td,{children:"List[Tool]"}),(0,n.jsx)(t.td,{children:"A list of search tools provided by the toolkit."})]})})]})]}),"\n",(0,n.jsx)(t.h2,{id:"glean-search-api",children:"Glean Search API"}),"\n",(0,n.jsx)(t.p,{children:"This component allows you to call the Glean Search API."}),"\n",(0,n.jsxs)(r,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Inputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"glean_api_url"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The URL of the Glean API."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"glean_access_token"}),(0,n.jsx)(t.td,{children:"SecretString"}),(0,n.jsx)(t.td,{children:"An access token for Glean API authentication."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"query"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The search query input."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"page_size"}),(0,n.jsx)(t.td,{children:"Integer"}),(0,n.jsx)(t.td,{children:"The number of results per page. Default: 10."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"request_options"}),(0,n.jsx)(t.td,{children:"Dict"}),(0,n.jsx)(t.td,{children:"Additional options for the API request."})]})]})]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Outputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"results"}),(0,n.jsx)(t.td,{children:"List[Data]"}),(0,n.jsx)(t.td,{children:"A list of search results."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"tool"}),(0,n.jsx)(t.td,{children:"Tool"}),(0,n.jsx)(t.td,{children:"A Glean Search tool for use in LangChain."})]})]})]})]}),"\n",(0,n.jsx)(t.h2,{id:"google-serper-api",children:"Google Serper API"}),"\n",(0,n.jsx)(t.p,{children:"This component allows you to call the Serper.dev Google Search API."}),"\n",(0,n.jsxs)(r,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Inputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"serper_api_key"}),(0,n.jsx)(t.td,{children:"SecretString"}),(0,n.jsx)(t.td,{children:"An API key for Serper.dev authentication."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"input_value"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The search query input."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"k"}),(0,n.jsx)(t.td,{children:"Integer"}),(0,n.jsx)(t.td,{children:"The number of search results to return."})]})]})]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Outputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"results"}),(0,n.jsx)(t.td,{children:"List[Data]"}),(0,n.jsx)(t.td,{children:"A list of search results."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"tool"}),(0,n.jsx)(t.td,{children:"Tool"}),(0,n.jsx)(t.td,{children:"A Google Serper search tool for use in LangChain."})]})]})]})]}),"\n",(0,n.jsx)(t.h2,{id:"mcp-connection",children:"MCP connection"}),"\n",(0,n.jsxs)(t.p,{children:["The ",(0,n.jsx)(t.strong,{children:"MCP connection"})," component exposes Model Context Protocol (MCP) servers, including your other flows, as tools for Langflow agents. For information about this component, see ",(0,n.jsx)(t.a,{href:"/mcp-client",children:"Use Langflow as an MCP client"}),"."]}),"\n",(0,n.jsx)(t.h3,{id:"mcp-tools-deprecated",children:"MCP Tools (deprecated)"}),"\n",(0,n.jsxs)(t.p,{children:["The ",(0,n.jsx)(t.strong,{children:"MCP Tools (stdio)"})," and ",(0,n.jsx)(t.strong,{children:"MCP Tools (SSE)"})," components are deprecated as of Langflow version 1.3.\nThey are replaced by the ",(0,n.jsx)(t.a,{href:"/mcp-client",children:"MCP connection component"}),"."]}),"\n",(0,n.jsx)(t.h2,{id:"wikidata",children:"Wikidata"}),"\n",(0,n.jsx)(t.p,{children:"This component performs a search using the Wikidata API."}),"\n",(0,n.jsxs)(r,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Inputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsx)(t.tbody,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"query"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The text query for similarity search on Wikidata."})]})})]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Outputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"data"}),(0,n.jsx)(t.td,{children:"List[Data]"}),(0,n.jsx)(t.td,{children:"The search results from Wikidata API as a list of Data objects."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"text"}),(0,n.jsx)(t.td,{children:"Message"}),(0,n.jsx)(t.td,{children:"The search results formatted as a text message."})]})]})]})]}),"\n",(0,n.jsx)(t.h2,{id:"legacy-components",children:"Legacy components"}),"\n",(0,n.jsx)(t.p,{children:"Legacy components are available for use but are no longer supported."}),"\n",(0,n.jsx)(t.h3,{id:"calculator-tool",children:"Calculator Tool"}),"\n",(0,n.jsx)(t.p,{children:"This component allows you to evaluate basic arithmetic expressions. It supports addition, subtraction, multiplication, division, and exponentiation."}),"\n",(0,n.jsxs)(r,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Inputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsx)(t.tbody,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"expression"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsxs)(t.td,{children:["The arithmetic expression to evaluate. For example, ",(0,n.jsx)(t.code,{children:"4*4*(33/22)+12-20"}),"."]})]})})]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Outputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsx)(t.tbody,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"result"}),(0,n.jsx)(t.td,{children:"Tool"}),(0,n.jsx)(t.td,{children:"A calculator tool for use in LangChain."})]})})]})]}),"\n",(0,n.jsx)(t.h3,{id:"google-search-api",children:"Google Search API"}),"\n",(0,n.jsx)(t.p,{children:"This component allows you to call the Google Search API."}),"\n",(0,n.jsxs)(r,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Inputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"google_api_key"}),(0,n.jsx)(t.td,{children:"SecretString"}),(0,n.jsx)(t.td,{children:"A Google API key for authentication."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"google_cse_id"}),(0,n.jsx)(t.td,{children:"SecretString"}),(0,n.jsx)(t.td,{children:"A Google Custom Search Engine ID."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"input_value"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The search query input."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"k"}),(0,n.jsx)(t.td,{children:"Integer"}),(0,n.jsx)(t.td,{children:"The number of search results to return."})]})]})]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Outputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"results"}),(0,n.jsx)(t.td,{children:"List[Data]"}),(0,n.jsx)(t.td,{children:"A list of search results."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"tool"}),(0,n.jsx)(t.td,{children:"Tool"}),(0,n.jsx)(t.td,{children:"A Google Search tool for use in LangChain."})]})]})]})]}),"\n",(0,n.jsx)(t.h3,{id:"python-code-structured-tool",children:"Python Code Structured Tool"}),"\n",(0,n.jsx)(t.p,{children:"This component creates a structured tool from Python code using a dataclass."}),"\n",(0,n.jsx)(t.p,{children:"The component dynamically updates its configuration based on the provided Python code, allowing for custom function arguments and descriptions."}),"\n",(0,n.jsxs)(r,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Inputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"tool_code"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The Python code for the tool's dataclass."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"tool_name"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The name of the tool."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"tool_description"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The description of the tool."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"return_direct"}),(0,n.jsx)(t.td,{children:"Boolean"}),(0,n.jsx)(t.td,{children:"Whether to return the function output directly."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"tool_function"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The selected function for the tool."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"global_variables"}),(0,n.jsx)(t.td,{children:"Dict"}),(0,n.jsx)(t.td,{children:"Global variables or data for the tool."})]})]})]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Outputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsx)(t.tbody,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"result_tool"}),(0,n.jsx)(t.td,{children:"Tool"}),(0,n.jsx)(t.td,{children:"A structured tool created from the Python code."})]})})]})]}),"\n",(0,n.jsx)(t.h3,{id:"python-repl-tool",children:"Python REPL Tool"}),"\n",(0,n.jsx)(t.p,{children:"This component creates a Python REPL (Read-Eval-Print Loop) tool for executing Python code."}),"\n",(0,n.jsxs)(r,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Inputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"name"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsxs)(t.td,{children:["The name of the tool. Default: ",(0,n.jsx)(t.code,{children:"python_repl"}),"."]})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"description"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"A description of the tool's functionality."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"global_imports"}),(0,n.jsx)(t.td,{children:"List[String]"}),(0,n.jsxs)(t.td,{children:["A list of modules to import globally. Default: ",(0,n.jsx)(t.code,{children:"math"}),"."]})]})]})]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Outputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsx)(t.tbody,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"tool"}),(0,n.jsx)(t.td,{children:"Tool"}),(0,n.jsx)(t.td,{children:"A Python REPL tool for use in LangChain."})]})})]})]}),"\n",(0,n.jsx)(t.h3,{id:"retriever-tool",children:"Retriever Tool"}),"\n",(0,n.jsx)(t.p,{children:"This component creates a tool for interacting with a retriever in LangChain."}),"\n",(0,n.jsxs)(r,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Inputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"retriever"}),(0,n.jsx)(t.td,{children:"BaseRetriever"}),(0,n.jsx)(t.td,{children:"The retriever to interact with."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"name"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The name of the tool."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"description"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"A description of the tool's functionality."})]})]})]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Outputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsx)(t.tbody,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"tool"}),(0,n.jsx)(t.td,{children:"Tool"}),(0,n.jsx)(t.td,{children:"A retriever tool for use in LangChain."})]})})]})]}),"\n",(0,n.jsx)(t.h3,{id:"search-api",children:"Search API"}),"\n",(0,n.jsxs)(t.p,{children:["This component calls the ",(0,n.jsx)(t.code,{children:"searchapi.io"})," API. It can be used to search the web for information."]}),"\n",(0,n.jsxs)(t.p,{children:["For more information, see the ",(0,n.jsx)(t.a,{href:"https://www.searchapi.io/docs/google",children:"SearchAPI documentation"}),"."]}),"\n",(0,n.jsxs)(r,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Inputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"engine"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsxs)(t.td,{children:["The search engine to use. Default: ",(0,n.jsx)(t.code,{children:"google"}),"."]})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"api_key"}),(0,n.jsx)(t.td,{children:"SecretString"}),(0,n.jsx)(t.td,{children:"The API key for authenticating with SearchAPI."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"input_value"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The search query or input for the API call."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"search_params"}),(0,n.jsx)(t.td,{children:"Dict"}),(0,n.jsx)(t.td,{children:"Additional parameters for customizing the search."})]})]})]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Outputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"data"}),(0,n.jsx)(t.td,{children:"List[Data]"}),(0,n.jsx)(t.td,{children:"A list of Data objects containing search results."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"tool"}),(0,n.jsx)(t.td,{children:"Tool"}),(0,n.jsx)(t.td,{children:"A Tool object for use in LangChain workflows."})]})]})]})]}),"\n",(0,n.jsx)(t.h3,{id:"searxng-search-tool",children:"SearXNG Search Tool"}),"\n",(0,n.jsx)(t.p,{children:"This component creates a tool for searching using SearXNG, a metasearch engine."}),"\n",(0,n.jsxs)(r,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Inputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"url"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The URL of the SearXNG instance."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"max_results"}),(0,n.jsx)(t.td,{children:"Integer"}),(0,n.jsx)(t.td,{children:"The maximum number of results to return."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"categories"}),(0,n.jsx)(t.td,{children:"List[String]"}),(0,n.jsx)(t.td,{children:"The categories to search in."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"language"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The language for the search results."})]})]})]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Outputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsx)(t.tbody,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"result_tool"}),(0,n.jsx)(t.td,{children:"Tool"}),(0,n.jsx)(t.td,{children:"A SearXNG search tool for use in LangChain."})]})})]})]}),"\n",(0,n.jsx)(t.h3,{id:"wikipedia-api",children:"Wikipedia API"}),"\n",(0,n.jsx)(t.p,{children:"This component creates a tool for searching and retrieving information from Wikipedia."}),"\n",(0,n.jsxs)(r,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Inputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"input_value"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"The search query input."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"lang"}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsxs)(t.td,{children:["The language code for Wikipedia. Default: ",(0,n.jsx)(t.code,{children:"en"}),"."]})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"k"}),(0,n.jsx)(t.td,{children:"Integer"}),(0,n.jsx)(t.td,{children:"The number of results to return."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"load_all_available_meta"}),(0,n.jsx)(t.td,{children:"Boolean"}),(0,n.jsx)(t.td,{children:"Whether to load all available metadata."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"doc_content_chars_max"}),(0,n.jsx)(t.td,{children:"Integer"}),(0,n.jsx)(t.td,{children:"The maximum number of characters for document content."})]})]})]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Outputs"})}),(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Name"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"results"}),(0,n.jsx)(t.td,{children:"List[Data]"}),(0,n.jsx)(t.td,{children:"A list of Wikipedia search results."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"tool"}),(0,n.jsx)(t.td,{children:"Tool"}),(0,n.jsx)(t.td,{children:"A Wikipedia search tool for use in LangChain."})]})]})]})]})]})}function x(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(a,{...e})}):a(e)}}}]);
\ No newline at end of file
diff --git a/assets/js/914b1bec.64303cfc.js b/assets/js/914b1bec.64303cfc.js
deleted file mode 100644
index 18e147a28f..0000000000
--- a/assets/js/914b1bec.64303cfc.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[3266],{17886:(e,n,t)=>{t.d(n,{A:()=>o});t(96540);var r=t(64058),i=t(74848);function o({name:e,...n}){const t=r[e];return t?(0,i.jsx)(t,{...n}):null}},48161:(e,n,t)=>{t.r(n),t.d(n,{CH:()=>h,assets:()=>d,chCodeConfig:()=>p,contentTitle:()=>l,default:()=>m,frontMatter:()=>c,metadata:()=>r,toc:()=>g});const r=JSON.parse('{"id":"Templates/basic-prompting","title":"Basic prompting","description":"Prompts serve as the inputs to a large language model (LLM), acting as the interface between human instructions and computational tasks.","source":"@site/docs/Templates/basic-prompting.md","sourceDirName":"Templates","slug":"/basic-prompting","permalink":"/basic-prompting","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Basic prompting","slug":"/basic-prompting"},"sidebar":"docs","previous":{"title":"Quickstart","permalink":"/get-started-quickstart"},"next":{"title":"Simple agent","permalink":"/simple-agent"}}');var i=t(74848),o=t(28453),s=t(24754),a=t(17886);const c={title:"Basic prompting",slug:"/basic-prompting"},l=void 0,d={},h={annotations:s.hk,Code:s.Cy},p={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},g=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Create the basic prompting flow",id:"create-the-basic-prompting-flow",level:2},{value:"Run the basic prompting flow",id:"run-the-basic-prompting-flow",level:2},{value:"Modify the prompt for a different result",id:"modify-the-prompt-for-a-different-result",level:2}];function u(e){const n={a:"a",code:"code",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return h||f("CH",!1),h.Code||f("CH.Code",!0),(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("style",{dangerouslySetInnerHTML:{__html:'[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }'}}),"\n","\n",(0,i.jsx)(n.p,{children:"Prompts serve as the inputs to a large language model (LLM), acting as the interface between human instructions and computational tasks."}),"\n",(0,i.jsx)(n.p,{children:"By submitting natural language requests in a prompt to an LLM, you can obtain answers, generate text, and solve problems."}),"\n",(0,i.jsx)(n.p,{children:"This article demonstrates how to use Langflow's prompt tools to issue basic prompts to an LLM, and how various prompting strategies can affect your outcomes."}),"\n",(0,i.jsx)(n.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/get-started-installation",children:"A running Langflow instance"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://platform.openai.com/",children:"An OpenAI API key"})}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"create-the-basic-prompting-flow",children:"Create the basic prompting flow"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["From the Langflow dashboard, click\xa0",(0,i.jsx)(n.strong,{children:"New Flow"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["Select\xa0",(0,i.jsx)(n.strong,{children:"Basic Prompting"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["The\xa0",(0,i.jsx)(n.strong,{children:"Basic Prompting"}),"\xa0flow is created."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:t(90567).A+"",width:"2500",height:"1528"})}),"\n",(0,i.jsxs)(n.p,{children:["This flow allows you to chat with the\xa0",(0,i.jsx)(n.strong,{children:"OpenAI model"}),"\xa0component.\nThe model will respond according to the prompt constructed in the\xa0",(0,i.jsx)(n.strong,{children:"Prompt"}),"\xa0component."]}),"\n",(0,i.jsxs)(n.ol,{start:"4",children:["\n",(0,i.jsxs)(n.li,{children:["To examine the ",(0,i.jsx)(n.strong,{children:"Template"}),", in the ",(0,i.jsx)(n.strong,{children:"Prompt"})," component, click the ",(0,i.jsx)(n.strong,{children:"Template"})," field."]}),"\n"]}),"\n",(0,i.jsx)(h.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"Answer the user as if you were a GenAI expert, enthusiastic about helping them get started building something fresh.",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,i.jsxs)(n.ol,{start:"5",children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["To create an environment variable for the\xa0",(0,i.jsx)(n.strong,{children:"OpenAI"}),"\xa0component, in the\xa0",(0,i.jsx)(n.strong,{children:"OpenAI API Key"}),"\xa0field, click the\xa0",(0,i.jsx)(a.A,{name:"Globe","aria-label":"Globe icon"})," ",(0,i.jsx)(n.strong,{children:"Globe"}),"\xa0button, and then click\xa0",(0,i.jsx)(n.strong,{children:"Add New Variable"}),"."]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["In the\xa0",(0,i.jsx)(n.strong,{children:"Variable Name"}),"\xa0field, enter\xa0",(0,i.jsx)(n.code,{children:"openai_api_key"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:["In the\xa0",(0,i.jsx)(n.strong,{children:"Value"}),"\xa0field, paste your OpenAI API Key (",(0,i.jsx)(n.code,{children:"sk-..."}),")."]}),"\n",(0,i.jsxs)(n.li,{children:["Click\xa0",(0,i.jsx)(n.strong,{children:"Save Variable"}),"."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"run-the-basic-prompting-flow",children:"Run the basic prompting flow"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["Click the\xa0",(0,i.jsx)(n.strong,{children:"Playground"}),"\xa0button."]}),"\n",(0,i.jsx)(n.li,{children:"Type a message and press Enter. The bot should respond in a markedly piratical manner!"}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"modify-the-prompt-for-a-different-result",children:"Modify the prompt for a different result"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["To modify your prompt results, in the\xa0",(0,i.jsx)(n.strong,{children:"Prompt"}),"\xa0component, click the\xa0",(0,i.jsx)(n.strong,{children:"Template"}),"\xa0field. The\xa0",(0,i.jsx)(n.strong,{children:"Edit Prompt"}),"\xa0window opens."]}),"\n",(0,i.jsxs)(n.li,{children:["Change\xa0the existing prompt\xa0to a different character, perhaps\xa0",(0,i.jsx)(n.code,{children:"Answer the user as if you were Hermione Granger."})]}),"\n",(0,i.jsx)(n.li,{children:"Run the workflow again and notice how the prompt changes the model's response."}),"\n"]})]})}function m(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}function f(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}},90567:(e,n,t)=>{t.d(n,{A:()=>r});const r=t.p+"assets/images/starter-flow-basic-prompting-09331815d7282bd6a3feedf84838ba20.png"}}]);
\ No newline at end of file
diff --git a/assets/js/914b1bec.c1c0de92.js b/assets/js/914b1bec.c1c0de92.js
new file mode 100644
index 0000000000..c8edcd021f
--- /dev/null
+++ b/assets/js/914b1bec.c1c0de92.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[3266],{17886:(e,t,n)=>{n.d(t,{A:()=>o});n(96540);var r=n(64058),i=n(74848);function o({name:e,...t}){const n=r[e];return n?(0,i.jsx)(n,{...t}):null}},48161:(e,t,n)=>{n.r(t),n.d(t,{CH:()=>h,assets:()=>l,chCodeConfig:()=>p,contentTitle:()=>d,default:()=>m,frontMatter:()=>c,metadata:()=>r,toc:()=>g});const r=JSON.parse('{"id":"Templates/basic-prompting","title":"Basic prompting","description":"Prompts serve as the inputs to a large language model (LLM), acting as the interface between human instructions and computational tasks.","source":"@site/docs/Templates/basic-prompting.md","sourceDirName":"Templates","slug":"/basic-prompting","permalink":"/basic-prompting","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Basic prompting","slug":"/basic-prompting"},"sidebar":"docs","previous":{"title":"Quickstart","permalink":"/get-started-quickstart"},"next":{"title":"Simple agent","permalink":"/simple-agent"}}');var i=n(74848),o=n(28453),s=n(24754),a=n(17886);const c={title:"Basic prompting",slug:"/basic-prompting"},d=void 0,l={},h={annotations:s.hk,Code:s.Cy},p={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},g=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Create the basic prompting flow",id:"create-the-basic-prompting-flow",level:2},{value:"Run the basic prompting flow",id:"run-the-basic-prompting-flow",level:2},{value:"Modify the prompt for a different result",id:"modify-the-prompt-for-a-different-result",level:2}];function u(e){const t={a:"a",code:"code",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return h||f("CH",!1),h.Code||f("CH.Code",!0),(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("style",{dangerouslySetInnerHTML:{__html:'[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }'}}),"\n","\n",(0,i.jsx)(t.p,{children:"Prompts serve as the inputs to a large language model (LLM), acting as the interface between human instructions and computational tasks."}),"\n",(0,i.jsx)(t.p,{children:"By submitting natural language requests in a prompt to an LLM, you can obtain answers, generate text, and solve problems."}),"\n",(0,i.jsx)(t.p,{children:"This article demonstrates how to use Langflow's prompt tools to issue basic prompts to an LLM, and how various prompting strategies can affect your outcomes."}),"\n",(0,i.jsx)(t.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"/get-started-installation",children:"A running Langflow instance"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://platform.openai.com/",children:"An OpenAI API key"})}),"\n"]}),"\n",(0,i.jsx)(t.h2,{id:"create-the-basic-prompting-flow",children:"Create the basic prompting flow"}),"\n",(0,i.jsxs)(t.ol,{children:["\n",(0,i.jsxs)(t.li,{children:["\n",(0,i.jsxs)(t.p,{children:["From the Langflow dashboard, click ",(0,i.jsx)(t.strong,{children:"New Flow"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(t.li,{children:["\n",(0,i.jsxs)(t.p,{children:["Select ",(0,i.jsx)(t.strong,{children:"Basic Prompting"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(t.li,{children:["\n",(0,i.jsxs)(t.p,{children:["The ",(0,i.jsx)(t.strong,{children:"Basic Prompting"})," flow is created."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{src:n(90567).A+"",width:"2500",height:"1528"})}),"\n",(0,i.jsxs)(t.p,{children:["This flow allows you to chat with the ",(0,i.jsx)(t.strong,{children:"OpenAI model"})," component.\nThe model will respond according to the prompt constructed in the ",(0,i.jsx)(t.strong,{children:"Prompt"})," component."]}),"\n",(0,i.jsxs)(t.ol,{start:"4",children:["\n",(0,i.jsxs)(t.li,{children:["To examine the ",(0,i.jsx)(t.strong,{children:"Template"}),", in the ",(0,i.jsx)(t.strong,{children:"Prompt"})," component, click the ",(0,i.jsx)(t.strong,{children:"Template"})," field."]}),"\n"]}),"\n",(0,i.jsx)(h.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"Answer the user as if you were a GenAI expert, enthusiastic about helping them get started building something fresh.",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,i.jsxs)(t.ol,{start:"5",children:["\n",(0,i.jsxs)(t.li,{children:["\n",(0,i.jsxs)(t.p,{children:["To create an environment variable for the ",(0,i.jsx)(t.strong,{children:"OpenAI"})," component, in the ",(0,i.jsx)(t.strong,{children:"OpenAI API Key"})," field, click the ",(0,i.jsx)(a.A,{name:"Globe","aria-hidden":"true"})," ",(0,i.jsx)(t.strong,{children:"Globe"})," button, and then click ",(0,i.jsx)(t.strong,{children:"Add New Variable"}),"."]}),"\n",(0,i.jsxs)(t.ol,{children:["\n",(0,i.jsxs)(t.li,{children:["In the ",(0,i.jsx)(t.strong,{children:"Variable Name"})," field, enter ",(0,i.jsx)(t.code,{children:"openai_api_key"}),"."]}),"\n",(0,i.jsxs)(t.li,{children:["In the ",(0,i.jsx)(t.strong,{children:"Value"})," field, paste your OpenAI API Key (",(0,i.jsx)(t.code,{children:"sk-..."}),")."]}),"\n",(0,i.jsxs)(t.li,{children:["Click ",(0,i.jsx)(t.strong,{children:"Save Variable"}),"."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(t.h2,{id:"run-the-basic-prompting-flow",children:"Run the basic prompting flow"}),"\n",(0,i.jsxs)(t.ol,{children:["\n",(0,i.jsxs)(t.li,{children:["Click the ",(0,i.jsx)(t.strong,{children:"Playground"})," button."]}),"\n",(0,i.jsx)(t.li,{children:"Type a message and press Enter. The bot should respond in a markedly piratical manner!"}),"\n"]}),"\n",(0,i.jsx)(t.h2,{id:"modify-the-prompt-for-a-different-result",children:"Modify the prompt for a different result"}),"\n",(0,i.jsxs)(t.ol,{children:["\n",(0,i.jsxs)(t.li,{children:["To modify your prompt results, in the ",(0,i.jsx)(t.strong,{children:"Prompt"})," component, click the ",(0,i.jsx)(t.strong,{children:"Template"})," field. The ",(0,i.jsx)(t.strong,{children:"Edit Prompt"})," window opens."]}),"\n",(0,i.jsxs)(t.li,{children:["Change the existing prompt to a different character, perhaps ",(0,i.jsx)(t.code,{children:"Answer the user as if you were Hermione Granger."})]}),"\n",(0,i.jsx)(t.li,{children:"Run the workflow again and notice how the prompt changes the model's response."}),"\n"]})]})}function m(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}function f(e,t){throw new Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}},90567:(e,t,n)=>{n.d(t,{A:()=>r});const r=n.p+"assets/images/starter-flow-basic-prompting-09331815d7282bd6a3feedf84838ba20.png"}}]);
\ No newline at end of file
diff --git a/assets/js/921b5fc1.809898cb.js b/assets/js/921b5fc1.78f1d79f.js
similarity index 75%
rename from assets/js/921b5fc1.809898cb.js
rename to assets/js/921b5fc1.78f1d79f.js
index d61694e66a..9385fe5e9a 100644
--- a/assets/js/921b5fc1.809898cb.js
+++ b/assets/js/921b5fc1.78f1d79f.js
@@ -1 +1 @@
-"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[7462],{7369:(e,n,s)=>{s.d(n,{A:()=>d});const d=s.p+"assets/images/component-ollama-embeddings-chromadb-c02d6ef9e753b61c274778d90f2a6eec.png"},17886:(e,n,s)=>{s.d(n,{A:()=>i});s(96540);var d=s(64058),t=s(74848);function i({name:e,...n}){const s=d[e];return s?(0,t.jsx)(s,{...n}):null}},28453:(e,n,s)=>{s.d(n,{R:()=>r,x:()=>l});var d=s(96540);const t={},i=d.createContext(t);function r(e){const n=d.useContext(i);return d.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),d.createElement(i.Provider,{value:n},e.children)}},79491:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>h,default:()=>x,frontMatter:()=>l,metadata:()=>d,toc:()=>o});const d=JSON.parse('{"id":"Components/components-embedding-models","title":"Embeddings","description":"Embeddings models convert text into numerical vectors. These embeddings capture the semantic meaning of the input text, and allow LLMs to understand context.","source":"@site/docs/Components/components-embedding-models.md","sourceDirName":"Components","slug":"/components-embedding-models","permalink":"/components-embedding-models","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Embeddings","slug":"/components-embedding-models"},"sidebar":"docs","previous":{"title":"Data","permalink":"/components-data"},"next":{"title":"Helpers","permalink":"/components-helpers"}}');var t=s(74848),i=s(28453),r=s(17886);const l={title:"Embeddings",slug:"/components-embedding-models"},h="Embeddings models in Langflow",c={},o=[{value:"Use an embeddings model component in a flow",id:"use-an-embeddings-model-component-in-a-flow",level:2},{value:"AI/ML",id:"aiml",level:2},{value:"Amazon Bedrock Embeddings",id:"amazon-bedrock-embeddings",level:2},{value:"Astra DB vectorize",id:"astra-db-vectorize",level:2},{value:"Azure OpenAI Embeddings",id:"azure-openai-embeddings",level:2},{value:"Cloudflare Workers AI Embeddings",id:"cloudflare-workers-ai-embeddings",level:2},{value:"Cohere Embeddings",id:"cohere-embeddings",level:2},{value:"Embedding similarity",id:"embedding-similarity",level:2},{value:"Google generative AI embeddings",id:"google-generative-ai-embeddings",level:2},{value:"Hugging Face Embeddings",id:"hugging-face-embeddings",level:2},{value:"Hugging Face embeddings inference",id:"hugging-face-embeddings-inference",level:2},{value:"Connect the Hugging Face component to a local embeddings model",id:"connect-the-hugging-face-component-to-a-local-embeddings-model",level:3},{value:"IBM watsonx embeddings",id:"ibm-watsonx-embeddings",level:2},{value:"Default models",id:"default-models",level:3},{value:"LM Studio Embeddings",id:"lm-studio-embeddings",level:2},{value:"MistralAI",id:"mistralai",level:2},{value:"NVIDIA",id:"nvidia",level:2},{value:"Ollama embeddings",id:"ollama-embeddings",level:2},{value:"OpenAI Embeddings",id:"openai-embeddings",level:2},{value:"Text embedder",id:"text-embedder",level:2},{value:"VertexAI Embeddings",id:"vertexai-embeddings",level:2}];function a(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components},{Details:d}=n;return d||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.header,{children:(0,t.jsx)(n.h1,{id:"embeddings-models-in-langflow",children:"Embeddings models in Langflow"})}),"\n",(0,t.jsx)(n.p,{children:"Embeddings models convert text into numerical vectors. These embeddings capture the semantic meaning of the input text, and allow LLMs to understand context."}),"\n",(0,t.jsx)(n.p,{children:"Refer to your specific component's documentation for more information on parameters."}),"\n",(0,t.jsx)(n.h2,{id:"use-an-embeddings-model-component-in-a-flow",children:"Use an embeddings model component in a flow"}),"\n",(0,t.jsxs)(n.p,{children:["In this example of a document ingestion pipeline, the ",(0,t.jsx)(n.strong,{children:"OpenAI"})," embeddings model is connected to a vector database. The component converts the text chunks into vectors and stores them in the vector database. The vectorized data can be used to inform AI workloads like chatbots, similarity searches, and agents."]}),"\n",(0,t.jsx)(n.p,{children:"This embeddings component uses an OpenAI API key for authentication. Refer to your specific embeddings component's documentation for more information on authentication."}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{alt:"URL component in a data ingestion pipeline",src:s(80352).A+"",width:"2306",height:"1632"})}),"\n",(0,t.jsx)(n.h2,{id:"aiml",children:"AI/ML"}),"\n",(0,t.jsxs)(n.p,{children:["This component generates embeddings using the ",(0,t.jsx)(n.a,{href:"https://docs.aimlapi.com/api-overview/embeddings",children:"AI/ML API"}),"."]}),"\n",(0,t.jsxs)(d,{children:[(0,t.jsx)("summary",{children:"Parameters"}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Inputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"model_name"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsx)(n.td,{children:"The name of the AI/ML embedding model to use."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"aiml_api_key"}),(0,t.jsx)(n.td,{children:"SecretString"}),(0,t.jsx)(n.td,{children:"The API key required for authenticating with the AI/ML service."})]})]})]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Outputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"embeddings"}),(0,t.jsx)(n.td,{children:"Embeddings"}),(0,t.jsxs)(n.td,{children:["An instance of ",(0,t.jsx)(n.code,{children:"AIMLEmbeddingsImpl"})," for generating embeddings."]})]})})]})]}),"\n",(0,t.jsx)(n.h2,{id:"amazon-bedrock-embeddings",children:"Amazon Bedrock Embeddings"}),"\n",(0,t.jsxs)(n.p,{children:["This component is used to load embedding models from ",(0,t.jsx)(n.a,{href:"https://aws.amazon.com/bedrock/",children:"Amazon Bedrock"}),"."]}),"\n",(0,t.jsxs)(d,{children:[(0,t.jsx)("summary",{children:"Parameters"}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Inputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"credentials_profile_name"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsxs)(n.td,{children:["The name of the AWS credentials profile in ",(0,t.jsx)(n.code,{children:"~/.aws/credentials"})," or ",(0,t.jsx)(n.code,{children:"~/.aws/config"}),", which has access keys or role information."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"model_id"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsxs)(n.td,{children:["The ID of the model to call, such as ",(0,t.jsx)(n.code,{children:"amazon.titan-embed-text-v1"}),". This is equivalent to the ",(0,t.jsx)(n.code,{children:"modelId"})," property in the ",(0,t.jsx)(n.code,{children:"list-foundation-models"})," API."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"endpoint_url"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsx)(n.td,{children:"The URL to set a specific service endpoint other than the default AWS endpoint."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"region_name"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsxs)(n.td,{children:["The AWS region to use, such as ",(0,t.jsx)(n.code,{children:"us-west-2"}),". Falls back to the ",(0,t.jsx)(n.code,{children:"AWS_DEFAULT_REGION"})," environment variable or region specified in ",(0,t.jsx)(n.code,{children:"~/.aws/config"})," if not provided."]})]})]})]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Outputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"embeddings"}),(0,t.jsx)(n.td,{children:"Embeddings"}),(0,t.jsx)(n.td,{children:"An instance for generating embeddings using Amazon Bedrock."})]})})]})]}),"\n",(0,t.jsx)(n.h2,{id:"astra-db-vectorize",children:"Astra DB vectorize"}),"\n",(0,t.jsx)(n.admonition,{type:"important",children:(0,t.jsxs)(n.p,{children:["This component is deprecated as of Langflow version 1.1.2.\nInstead, use the ",(0,t.jsx)(n.a,{href:"/components-vector-stores#astra-db-vector-store",children:"Astra DB vector store component"}),"."]})}),"\n",(0,t.jsxs)(n.p,{children:["Connect this component to the ",(0,t.jsx)(n.strong,{children:"Embeddings"})," port of the ",(0,t.jsx)(n.a,{href:"/components-vector-stores#astra-db-vector-store",children:"Astra DB vector store component"})," to generate embeddings."]}),"\n",(0,t.jsxs)(n.p,{children:["This component requires that your Astra DB database has a collection that uses a vectorize embedding provider integration.\nFor more information and instructions, see ",(0,t.jsx)(n.a,{href:"https://docs.datastax.com/en/astra-db-serverless/databases/embedding-generation.html",children:"Embedding Generation"}),"."]}),"\n",(0,t.jsxs)(d,{children:[(0,t.jsx)("summary",{children:"Parameters"}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Inputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Display Name"}),(0,t.jsx)(n.th,{children:"Info"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"provider"}),(0,t.jsx)(n.td,{children:"Embedding Provider"}),(0,t.jsx)(n.td,{children:"The embedding provider to use."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"model_name"}),(0,t.jsx)(n.td,{children:"Model Name"}),(0,t.jsx)(n.td,{children:"The embedding model to use."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"authentication"}),(0,t.jsx)(n.td,{children:"Authentication"}),(0,t.jsxs)(n.td,{children:["The name of the API key in Astra that stores your ",(0,t.jsx)(n.a,{href:"https://docs.datastax.com/en/astra-db-serverless/databases/embedding-generation.html#embedding-provider-authentication",children:"vectorize embedding provider credentials"}),". (Not required if using an ",(0,t.jsx)(n.a,{href:"https://docs.datastax.com/en/astra-db-serverless/databases/embedding-generation.html#supported-embedding-providers",children:"Astra-hosted embedding provider"}),".)"]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"provider_api_key"}),(0,t.jsx)(n.td,{children:"Provider API Key"}),(0,t.jsxs)(n.td,{children:["As an alternative to ",(0,t.jsx)(n.code,{children:"authentication"}),", directly provide your embedding provider credentials."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"model_parameters"}),(0,t.jsx)(n.td,{children:"Model Parameters"}),(0,t.jsx)(n.td,{children:"Additional model parameters."})]})]})]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Outputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"embeddings"}),(0,t.jsx)(n.td,{children:"Embeddings"}),(0,t.jsx)(n.td,{children:"An instance for generating embeddings using Astra vectorize."})]})})]})]}),"\n",(0,t.jsx)(n.h2,{id:"azure-openai-embeddings",children:"Azure OpenAI Embeddings"}),"\n",(0,t.jsx)(n.p,{children:"This component generates embeddings using Azure OpenAI models."}),"\n",(0,t.jsxs)(d,{children:[(0,t.jsx)("summary",{children:"Parameters"}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Inputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Model"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsxs)(n.td,{children:["The name of the model to use. Default: ",(0,t.jsx)(n.code,{children:"text-embedding-3-small"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Azure Endpoint"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsxs)(n.td,{children:["Your Azure endpoint, including the resource, such as ",(0,t.jsx)(n.code,{children:"https://example-resource.azure.openai.com/"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Deployment Name"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsx)(n.td,{children:"The name of the deployment."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"API Version"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsx)(n.td,{children:"The API version to use, with options including various dates."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"API Key"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsx)(n.td,{children:"The API key required to access the Azure OpenAI service."})]})]})]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Outputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"embeddings"}),(0,t.jsx)(n.td,{children:"Embeddings"}),(0,t.jsx)(n.td,{children:"An instance for generating embeddings using Azure OpenAI."})]})})]})]}),"\n",(0,t.jsx)(n.h2,{id:"cloudflare-workers-ai-embeddings",children:"Cloudflare Workers AI Embeddings"}),"\n",(0,t.jsxs)(n.p,{children:["This component generates embeddings using ",(0,t.jsx)(n.a,{href:"https://developers.cloudflare.com/workers-ai/",children:"Cloudflare Workers AI models"}),"."]}),"\n",(0,t.jsxs)(d,{children:[(0,t.jsx)("summary",{children:"Parameters"}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Inputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Display Name"}),(0,t.jsx)(n.th,{children:"Info"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"account_id"}),(0,t.jsx)(n.td,{children:"Cloudflare account ID"}),(0,t.jsxs)(n.td,{children:[(0,t.jsx)(n.a,{href:"https://developers.cloudflare.com/fundamentals/setup/find-account-and-zone-ids/#find-account-id-workers-and-pages",children:"Find your Cloudflare account ID"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"api_token"}),(0,t.jsx)(n.td,{children:"Cloudflare API token"}),(0,t.jsxs)(n.td,{children:[(0,t.jsx)(n.a,{href:"https://developers.cloudflare.com/fundamentals/api/get-started/create-token/",children:"Create an API token"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"model_name"}),(0,t.jsx)(n.td,{children:"Model Name"}),(0,t.jsxs)(n.td,{children:[(0,t.jsx)(n.a,{href:"https://developers.cloudflare.com/workers-ai/models/#text-embeddings",children:"List of supported models"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"strip_new_lines"}),(0,t.jsx)(n.td,{children:"Strip New Lines"}),(0,t.jsx)(n.td,{children:"Whether to strip new lines from the input text."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"batch_size"}),(0,t.jsx)(n.td,{children:"Batch Size"}),(0,t.jsx)(n.td,{children:"The number of texts to embed in each batch."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"api_base_url"}),(0,t.jsx)(n.td,{children:"Cloudflare API base URL"}),(0,t.jsx)(n.td,{children:"The base URL for the Cloudflare API."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"headers"}),(0,t.jsx)(n.td,{children:"Headers"}),(0,t.jsx)(n.td,{children:"Additional request headers."})]})]})]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Outputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Display Name"}),(0,t.jsx)(n.th,{children:"Info"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"embeddings"}),(0,t.jsx)(n.td,{children:"Embeddings"}),(0,t.jsx)(n.td,{children:"An instance for generating embeddings using Cloudflare Workers."})]})})]})]}),"\n",(0,t.jsx)(n.h2,{id:"cohere-embeddings",children:"Cohere Embeddings"}),"\n",(0,t.jsxs)(n.p,{children:["This component is used to load embedding models from ",(0,t.jsx)(n.a,{href:"https://cohere.com/",children:"Cohere"}),"."]}),"\n",(0,t.jsxs)(d,{children:[(0,t.jsx)("summary",{children:"Parameters"}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Inputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"cohere_api_key"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsx)(n.td,{children:"The API key required to authenticate with the Cohere service."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"model"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsxs)(n.td,{children:["The language model used for embedding text documents and performing queries. Default: ",(0,t.jsx)(n.code,{children:"embed-english-v2.0"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"truncate"}),(0,t.jsx)(n.td,{children:"Boolean"}),(0,t.jsxs)(n.td,{children:["Whether to truncate the input text to fit within the model's constraints. Default: ",(0,t.jsx)(n.code,{children:"False"}),"."]})]})]})]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Outputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"embeddings"}),(0,t.jsx)(n.td,{children:"Embeddings"}),(0,t.jsx)(n.td,{children:"An instance for generating embeddings using Cohere."})]})})]})]}),"\n",(0,t.jsx)(n.h2,{id:"embedding-similarity",children:"Embedding similarity"}),"\n",(0,t.jsx)(n.p,{children:"This component computes selected forms of similarity between two embedding vectors."}),"\n",(0,t.jsxs)(d,{children:[(0,t.jsx)("summary",{children:"Parameters"}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Inputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Display Name"}),(0,t.jsx)(n.th,{children:"Info"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"embedding_vectors"}),(0,t.jsx)(n.td,{children:"Embedding Vectors"}),(0,t.jsx)(n.td,{children:"A list containing exactly two data objects with embedding vectors to compare."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"similarity_metric"}),(0,t.jsx)(n.td,{children:"Similarity Metric"}),(0,t.jsx)(n.td,{children:'Select the similarity metric to use. Options: "Cosine Similarity", "Euclidean Distance", "Manhattan Distance".'})]})]})]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Outputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Display Name"}),(0,t.jsx)(n.th,{children:"Info"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"similarity_data"}),(0,t.jsx)(n.td,{children:"Similarity Data"}),(0,t.jsx)(n.td,{children:"A data object containing the computed similarity score and additional information."})]})})]})]}),"\n",(0,t.jsx)(n.h2,{id:"google-generative-ai-embeddings",children:"Google generative AI embeddings"}),"\n",(0,t.jsxs)(n.p,{children:["This component connects to Google's generative AI embedding service using the GoogleGenerativeAIEmbeddings class from the ",(0,t.jsx)(n.code,{children:"langchain-google-genai"})," package."]}),"\n",(0,t.jsxs)(d,{children:[(0,t.jsx)("summary",{children:"Parameters"}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Inputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Display Name"}),(0,t.jsx)(n.th,{children:"Info"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"api_key"}),(0,t.jsx)(n.td,{children:"API Key"}),(0,t.jsx)(n.td,{children:"The secret API key for accessing Google's generative AI service. Required."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"model_name"}),(0,t.jsx)(n.td,{children:"Model Name"}),(0,t.jsx)(n.td,{children:'The name of the embedding model to use. Default: "models/text-embedding-004".'})]})]})]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Outputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Display Name"}),(0,t.jsx)(n.th,{children:"Info"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"embeddings"}),(0,t.jsx)(n.td,{children:"Embeddings"}),(0,t.jsx)(n.td,{children:"The built GoogleGenerativeAIEmbeddings object."})]})})]})]}),"\n",(0,t.jsx)(n.h2,{id:"hugging-face-embeddings",children:"Hugging Face Embeddings"}),"\n",(0,t.jsx)(n.admonition,{type:"note",children:(0,t.jsxs)(n.p,{children:["This component is deprecated as of Langflow version 1.0.18.\nInstead, use the ",(0,t.jsx)(n.a,{href:"#hugging-face-embeddings-inference",children:"Hugging Face Embeddings Inference component"}),"."]})}),"\n",(0,t.jsx)(n.p,{children:"This component loads embedding models from HuggingFace."}),"\n",(0,t.jsx)(n.p,{children:"Use this component to generate embeddings using locally downloaded Hugging Face models. Ensure you have sufficient computational resources to run the models."}),"\n",(0,t.jsxs)(d,{children:[(0,t.jsx)("summary",{children:"Parameters"}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Inputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Display Name"}),(0,t.jsx)(n.th,{children:"Info"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Cache Folder"}),(0,t.jsx)(n.td,{children:"Cache Folder"}),(0,t.jsx)(n.td,{children:"The folder path to cache HuggingFace models."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Encode Kwargs"}),(0,t.jsx)(n.td,{children:"Encoding Arguments"}),(0,t.jsx)(n.td,{children:"Additional arguments for the encoding process."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Model Kwargs"}),(0,t.jsx)(n.td,{children:"Model Arguments"}),(0,t.jsx)(n.td,{children:"Additional arguments for the model."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Model Name"}),(0,t.jsx)(n.td,{children:"Model Name"}),(0,t.jsx)(n.td,{children:"The name of the HuggingFace model to use."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Multi Process"}),(0,t.jsx)(n.td,{children:"Multi-Process"}),(0,t.jsx)(n.td,{children:"Whether to use multiple processes."})]})]})]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Outputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Display Name"}),(0,t.jsx)(n.th,{children:"Info"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"embeddings"}),(0,t.jsx)(n.td,{children:"Embeddings"}),(0,t.jsx)(n.td,{children:"The generated embeddings."})]})})]})]}),"\n",(0,t.jsx)(n.h2,{id:"hugging-face-embeddings-inference",children:"Hugging Face embeddings inference"}),"\n",(0,t.jsxs)(n.p,{children:["This component generates embeddings using ",(0,t.jsx)(n.a,{href:"https://huggingface.co/",children:"Hugging Face Inference API models"})," and requires a ",(0,t.jsx)(n.a,{href:"https://huggingface.co/docs/hub/security-tokens",children:"Hugging Face API token"})," to authenticate. Local inference models do not require an API key."]}),"\n",(0,t.jsx)(n.p,{children:"Use this component to create embeddings with Hugging Face's hosted models, or to connect to your own locally hosted models."}),"\n",(0,t.jsxs)(d,{children:[(0,t.jsx)("summary",{children:"Parameters"}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Inputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Display Name"}),(0,t.jsx)(n.th,{children:"Info"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"API Key"}),(0,t.jsx)(n.td,{children:"API Key"}),(0,t.jsx)(n.td,{children:"The API key for accessing the Hugging Face Inference API."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"API URL"}),(0,t.jsx)(n.td,{children:"API URL"}),(0,t.jsx)(n.td,{children:"The URL of the Hugging Face Inference API."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Model Name"}),(0,t.jsx)(n.td,{children:"Model Name"}),(0,t.jsx)(n.td,{children:"The name of the model to use for embeddings."})]})]})]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Outputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Display Name"}),(0,t.jsx)(n.th,{children:"Info"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"embeddings"}),(0,t.jsx)(n.td,{children:"Embeddings"}),(0,t.jsx)(n.td,{children:"The generated embeddings."})]})})]})]}),"\n",(0,t.jsx)(n.h3,{id:"connect-the-hugging-face-component-to-a-local-embeddings-model",children:"Connect the Hugging Face component to a local embeddings model"}),"\n",(0,t.jsxs)(n.p,{children:["To run an embeddings inference locally, see the ",(0,t.jsx)(n.a,{href:"https://huggingface.co/docs/text-embeddings-inference/local_cpu",children:"HuggingFace documentation"}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["To connect the local Hugging Face model to the ",(0,t.jsx)(n.strong,{children:"Hugging Face embeddings inference"})," component and use it in a flow, follow these steps:"]}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:["Create a ",(0,t.jsx)(n.a,{href:"/vector-store-rag",children:"Vector store RAG flow"}),".\nThere are two embeddings models in this flow that you can replace with ",(0,t.jsx)(n.strong,{children:"Hugging Face"})," embeddings inference components."]}),"\n",(0,t.jsxs)(n.li,{children:["Replace both ",(0,t.jsx)(n.strong,{children:"OpenAI"})," embeddings model components with ",(0,t.jsx)(n.strong,{children:"Hugging Face"})," model components."]}),"\n",(0,t.jsxs)(n.li,{children:["Connect both ",(0,t.jsx)(n.strong,{children:"Hugging Face"})," components to the ",(0,t.jsx)(n.strong,{children:"Embeddings"})," ports of the ",(0,t.jsx)(n.strong,{children:"Astra DB vector store"})," components."]}),"\n",(0,t.jsxs)(n.li,{children:["In the ",(0,t.jsx)(n.strong,{children:"Hugging Face"})," components, set the ",(0,t.jsx)(n.strong,{children:"Inference Endpoint"})," field to the URL of your local inference model. ",(0,t.jsxs)(n.strong,{children:["The ",(0,t.jsx)(n.strong,{children:"API Key"})," field is not required for local inference."]})]}),"\n",(0,t.jsx)(n.li,{children:"Run the flow. The local inference models generate embeddings for the input text."}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"ibm-watsonx-embeddings",children:"IBM watsonx embeddings"}),"\n",(0,t.jsxs)(n.p,{children:["This component generates text using ",(0,t.jsx)(n.a,{href:"https://www.ibm.com/watsonx",children:"IBM watsonx.ai"})," foundation models."]}),"\n",(0,t.jsxs)(n.p,{children:["To use ",(0,t.jsx)(n.strong,{children:"IBM watsonx.ai"})," embeddings components, replace an embeddings component with the IBM watsonx.ai component in a flow."]}),"\n",(0,t.jsx)(n.p,{children:"An example document processing flow looks like the following:"}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{alt:"IBM watsonx embeddings model loading a chroma-db with split text",src:s(96425).A+"",width:"1714",height:"1486"})}),"\n",(0,t.jsx)(n.p,{children:"This flow loads a PDF file from local storage and splits the text into chunks."}),"\n",(0,t.jsxs)(n.p,{children:["The ",(0,t.jsx)(n.strong,{children:"IBM watsonx"})," embeddings component converts the text chunks into embeddings, which are then stored in a Chroma DB vector store."]}),"\n",(0,t.jsxs)(n.p,{children:["The values for ",(0,t.jsx)(n.strong,{children:"API endpoint"}),", ",(0,t.jsx)(n.strong,{children:"Project ID"}),", ",(0,t.jsx)(n.strong,{children:"API key"}),", and ",(0,t.jsx)(n.strong,{children:"Model Name"})," are found in your IBM watsonx.ai deployment.\nFor more information, see the ",(0,t.jsx)(n.a,{href:"https://python.langchain.com/docs/integrations/text_embedding/ibm_watsonx/",children:"Langchain documentation"}),"."]}),"\n",(0,t.jsx)(n.h3,{id:"default-models",children:"Default models"}),"\n",(0,t.jsx)(n.p,{children:"The component supports several default models with the following vector dimensions:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"sentence-transformers/all-minilm-l12-v2"}),": 384-dimensional embeddings"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"ibm/slate-125m-english-rtrvr-v2"}),": 768-dimensional embeddings"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"ibm/slate-30m-english-rtrvr-v2"}),": 768-dimensional embeddings"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"intfloat/multilingual-e5-large"}),": 1024-dimensional embeddings"]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:"The component automatically fetches and updates the list of available models from your watsonx.ai instance when you provide your API endpoint and credentials."}),"\n",(0,t.jsxs)(d,{children:[(0,t.jsx)("summary",{children:"Parameters"}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Inputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Display Name"}),(0,t.jsx)(n.th,{children:"Info"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"url"}),(0,t.jsx)(n.td,{children:"watsonx API Endpoint"}),(0,t.jsx)(n.td,{children:"The base URL of the API."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"project_id"}),(0,t.jsx)(n.td,{children:"watsonx project id"}),(0,t.jsx)(n.td,{children:"The project ID for your watsonx.ai instance."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"api_key"}),(0,t.jsx)(n.td,{children:"API Key"}),(0,t.jsx)(n.td,{children:"The API Key to use for the model."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"model_name"}),(0,t.jsx)(n.td,{children:"Model Name"}),(0,t.jsx)(n.td,{children:"The name of the embedding model to use."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"truncate_input_tokens"}),(0,t.jsx)(n.td,{children:"Truncate Input Tokens"}),(0,t.jsxs)(n.td,{children:["The maximum number of tokens to process. Default: ",(0,t.jsx)(n.code,{children:"200"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"input_text"}),(0,t.jsx)(n.td,{children:"Include the original text in the output"}),(0,t.jsxs)(n.td,{children:["Determines if the original text is included in the output. Default: ",(0,t.jsx)(n.code,{children:"True"}),"."]})]})]})]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Outputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Display Name"}),(0,t.jsx)(n.th,{children:"Info"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"embeddings"}),(0,t.jsx)(n.td,{children:"Embeddings"}),(0,t.jsx)(n.td,{children:"An instance for generating embeddings using watsonx.ai."})]})})]})]}),"\n",(0,t.jsx)(n.h2,{id:"lm-studio-embeddings",children:"LM Studio Embeddings"}),"\n",(0,t.jsxs)(n.p,{children:["This component generates embeddings using ",(0,t.jsx)(n.a,{href:"https://lmstudio.ai/docs",children:"LM Studio"})," models."]}),"\n",(0,t.jsxs)(d,{children:[(0,t.jsx)("summary",{children:"Parameters"}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Inputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Display Name"}),(0,t.jsx)(n.th,{children:"Info"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"model"}),(0,t.jsx)(n.td,{children:"Model"}),(0,t.jsx)(n.td,{children:"The LM Studio model to use for generating embeddings."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"base_url"}),(0,t.jsx)(n.td,{children:"LM Studio Base URL"}),(0,t.jsx)(n.td,{children:"The base URL for the LM Studio API."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"api_key"}),(0,t.jsx)(n.td,{children:"LM Studio API Key"}),(0,t.jsx)(n.td,{children:"The API key for authentication with LM Studio."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"temperature"}),(0,t.jsx)(n.td,{children:"Model Temperature"}),(0,t.jsx)(n.td,{children:"The temperature setting for the model."})]})]})]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Outputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Display Name"}),(0,t.jsx)(n.th,{children:"Info"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"embeddings"}),(0,t.jsx)(n.td,{children:"Embeddings"}),(0,t.jsx)(n.td,{children:"The generated embeddings."})]})})]})]}),"\n",(0,t.jsx)(n.h2,{id:"mistralai",children:"MistralAI"}),"\n",(0,t.jsxs)(n.p,{children:["This component generates embeddings using ",(0,t.jsx)(n.a,{href:"https://docs.mistral.ai/",children:"MistralAI"})," models."]}),"\n",(0,t.jsxs)(d,{children:[(0,t.jsx)("summary",{children:"Parameters"}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Inputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"model"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsx)(n.td,{children:'The MistralAI model to use. Default: "mistral-embed".'})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"mistral_api_key"}),(0,t.jsx)(n.td,{children:"SecretString"}),(0,t.jsx)(n.td,{children:"The API key for authenticating with MistralAI."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"max_concurrent_requests"}),(0,t.jsx)(n.td,{children:"Integer"}),(0,t.jsx)(n.td,{children:"The maximum number of concurrent API requests. Default: 64."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"max_retries"}),(0,t.jsx)(n.td,{children:"Integer"}),(0,t.jsx)(n.td,{children:"The maximum number of retry attempts for failed requests. Default: 5."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"timeout"}),(0,t.jsx)(n.td,{children:"Integer"}),(0,t.jsx)(n.td,{children:"The request timeout in seconds. Default: 120."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"endpoint"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsxs)(n.td,{children:["The custom API endpoint URL. Default: ",(0,t.jsx)(n.code,{children:"https://api.mistral.ai/v1/"}),")."]})]})]})]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Outputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"embeddings"}),(0,t.jsx)(n.td,{children:"Embeddings"}),(0,t.jsx)(n.td,{children:"A MistralAIEmbeddings instance for generating embeddings."})]})})]})]}),"\n",(0,t.jsx)(n.h2,{id:"nvidia",children:"NVIDIA"}),"\n",(0,t.jsxs)(n.p,{children:["This component generates embeddings using ",(0,t.jsx)(n.a,{href:"https://docs.nvidia.com",children:"NVIDIA models"}),"."]}),"\n",(0,t.jsxs)(d,{children:[(0,t.jsx)("summary",{children:"Parameters"}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Inputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"model"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsxs)(n.td,{children:["The NVIDIA model to use for embeddings, such as ",(0,t.jsx)(n.code,{children:"nvidia/nv-embed-v1"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"base_url"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsxs)(n.td,{children:["The base URL for the NVIDIA API. Default: ",(0,t.jsx)(n.code,{children:"https://integrate.api.nvidia.com/v1"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"nvidia_api_key"}),(0,t.jsx)(n.td,{children:"SecretString"}),(0,t.jsx)(n.td,{children:"The API key for authenticating with NVIDIA's service."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"temperature"}),(0,t.jsx)(n.td,{children:"Float"}),(0,t.jsxs)(n.td,{children:["The model temperature for embedding generation. Default: ",(0,t.jsx)(n.code,{children:"0.1"}),"."]})]})]})]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Outputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"embeddings"}),(0,t.jsx)(n.td,{children:"Embeddings"}),(0,t.jsx)(n.td,{children:"A NVIDIAEmbeddings instance for generating embeddings."})]})})]})]}),"\n",(0,t.jsx)(n.h2,{id:"ollama-embeddings",children:"Ollama embeddings"}),"\n",(0,t.jsxs)(n.p,{children:["This component generates embeddings using ",(0,t.jsx)(n.a,{href:"https://ollama.com/",children:"Ollama models"}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["For a list of Ollama embeddings models, see the ",(0,t.jsx)(n.a,{href:"https://ollama.com/search?c=embedding",children:"Ollama documentation"}),"."]}),"\n",(0,t.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,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:["In the Ollama component, in the ",(0,t.jsx)(n.strong,{children:"Ollama Base URL"})," field, enter the address for your locally running Ollama server.\nThis value is set as the ",(0,t.jsx)(n.code,{children:"OLLAMA_HOST"})," environment variable in Ollama. The default base URL is ",(0,t.jsx)(n.code,{children:"http://localhost:11434"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["To refresh the server's list of models, click ",(0,t.jsx)(r.A,{name:"RefreshCw","aria-label":"Refresh"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["In the ",(0,t.jsx)(n.strong,{children:"Ollama Model"})," field, select an embeddings model. This example uses ",(0,t.jsx)(n.code,{children:"all-minilm:latest"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["Connect the ",(0,t.jsx)(n.strong,{children:"Ollama"})," embeddings component to a flow.\nFor example, this flow connects a local Ollama server running a ",(0,t.jsx)(n.code,{children:"all-minilm:latest"})," embeddings model to a ",(0,t.jsx)(n.a,{href:"/components-vector-stores#chroma-db",children:"Chroma DB"})," vector store to generate embeddings for split text."]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{alt:"Ollama embeddings connected to Chroma DB",src:s(7369).A+"",width:"1098",height:"811"})}),"\n",(0,t.jsxs)(n.p,{children:["For more information, see the ",(0,t.jsx)(n.a,{href:"https://ollama.com/",children:"Ollama documentation"}),"."]}),"\n",(0,t.jsxs)(d,{children:[(0,t.jsx)("summary",{children:"Parameters"}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Inputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Ollama Model"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsxs)(n.td,{children:["The name of the Ollama model to use. Default: ",(0,t.jsx)(n.code,{children:"llama2"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Ollama Base URL"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsxs)(n.td,{children:["The base URL of the Ollama API. Default: ",(0,t.jsx)(n.code,{children:"http://localhost:11434"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Model Temperature"}),(0,t.jsx)(n.td,{children:"Float"}),(0,t.jsx)(n.td,{children:"The temperature parameter for the model. Adjusts the randomness in the generated embeddings."})]})]})]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Outputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"embeddings"}),(0,t.jsx)(n.td,{children:"Embeddings"}),(0,t.jsx)(n.td,{children:"An instance for generating embeddings using Ollama."})]})})]})]}),"\n",(0,t.jsx)(n.h2,{id:"openai-embeddings",children:"OpenAI Embeddings"}),"\n",(0,t.jsxs)(n.p,{children:["This component is used to load embedding models from ",(0,t.jsx)(n.a,{href:"https://openai.com/",children:"OpenAI"}),"."]}),"\n",(0,t.jsxs)(d,{children:[(0,t.jsx)("summary",{children:"Parameters"}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Inputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"OpenAI API Key"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsx)(n.td,{children:"The API key to use for accessing the OpenAI API."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Default Headers"}),(0,t.jsx)(n.td,{children:"Dict"}),(0,t.jsx)(n.td,{children:"The default headers for the HTTP requests."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Default Query"}),(0,t.jsx)(n.td,{children:"NestedDict"}),(0,t.jsx)(n.td,{children:"The default query parameters for the HTTP requests."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Allowed Special"}),(0,t.jsx)(n.td,{children:"List"}),(0,t.jsxs)(n.td,{children:["The special tokens allowed for processing. Default: ",(0,t.jsx)(n.code,{children:"[]"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Disallowed Special"}),(0,t.jsx)(n.td,{children:"List"}),(0,t.jsxs)(n.td,{children:["The special tokens disallowed for processing. Default: ",(0,t.jsx)(n.code,{children:'["all"]'}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Chunk Size"}),(0,t.jsx)(n.td,{children:"Integer"}),(0,t.jsxs)(n.td,{children:["The chunk size for processing. Default: ",(0,t.jsx)(n.code,{children:"1000"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Client"}),(0,t.jsx)(n.td,{children:"Any"}),(0,t.jsx)(n.td,{children:"The HTTP client for making requests."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Deployment"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsxs)(n.td,{children:["The deployment name for the model. Default: ",(0,t.jsx)(n.code,{children:"text-embedding-3-small"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Embedding Context Length"}),(0,t.jsx)(n.td,{children:"Integer"}),(0,t.jsxs)(n.td,{children:["The length of embedding context. Default: ",(0,t.jsx)(n.code,{children:"8191"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Max Retries"}),(0,t.jsx)(n.td,{children:"Integer"}),(0,t.jsxs)(n.td,{children:["The maximum number of retries for failed requests. Default: ",(0,t.jsx)(n.code,{children:"6"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Model"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsxs)(n.td,{children:["The name of the model to use. Default: ",(0,t.jsx)(n.code,{children:"text-embedding-3-small"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Model Kwargs"}),(0,t.jsx)(n.td,{children:"NestedDict"}),(0,t.jsx)(n.td,{children:"Additional keyword arguments for the model."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"OpenAI API Base"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsx)(n.td,{children:"The base URL of the OpenAI API."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"OpenAI API Type"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsx)(n.td,{children:"The type of the OpenAI API."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"OpenAI API Version"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsx)(n.td,{children:"The version of the OpenAI API."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"OpenAI Organization"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsx)(n.td,{children:"The organization associated with the API key."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"OpenAI Proxy"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsx)(n.td,{children:"The proxy server for the requests."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Request Timeout"}),(0,t.jsx)(n.td,{children:"Float"}),(0,t.jsx)(n.td,{children:"The timeout for the HTTP requests."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Show Progress Bar"}),(0,t.jsx)(n.td,{children:"Boolean"}),(0,t.jsxs)(n.td,{children:["Whether to show a progress bar for processing. Default: ",(0,t.jsx)(n.code,{children:"False"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Skip Empty"}),(0,t.jsx)(n.td,{children:"Boolean"}),(0,t.jsxs)(n.td,{children:["Whether to skip empty inputs. Default: ",(0,t.jsx)(n.code,{children:"False"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"TikToken Enable"}),(0,t.jsx)(n.td,{children:"Boolean"}),(0,t.jsxs)(n.td,{children:["Whether to enable TikToken. Default: ",(0,t.jsx)(n.code,{children:"True"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"TikToken Model Name"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsx)(n.td,{children:"The name of the TikToken model."})]})]})]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Outputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"embeddings"}),(0,t.jsx)(n.td,{children:"Embeddings"}),(0,t.jsx)(n.td,{children:"An instance for generating embeddings using OpenAI."})]})})]})]}),"\n",(0,t.jsx)(n.h2,{id:"text-embedder",children:"Text embedder"}),"\n",(0,t.jsx)(n.p,{children:"This component generates embeddings for a given message using a specified embedding model."}),"\n",(0,t.jsxs)(d,{children:[(0,t.jsx)("summary",{children:"Parameters"}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Inputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Display Name"}),(0,t.jsx)(n.th,{children:"Info"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"embedding_model"}),(0,t.jsx)(n.td,{children:"Embedding Model"}),(0,t.jsx)(n.td,{children:"The embedding model to use for generating embeddings."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"message"}),(0,t.jsx)(n.td,{children:"Message"}),(0,t.jsx)(n.td,{children:"The message for which to generate embeddings."})]})]})]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Outputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Display Name"}),(0,t.jsx)(n.th,{children:"Info"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"embeddings"}),(0,t.jsx)(n.td,{children:"Embedding Data"}),(0,t.jsx)(n.td,{children:"A data object containing the original text and its embedding vector."})]})})]})]}),"\n",(0,t.jsx)(n.h2,{id:"vertexai-embeddings",children:"VertexAI Embeddings"}),"\n",(0,t.jsxs)(n.p,{children:["This component is a wrapper around ",(0,t.jsx)(n.a,{href:"https://cloud.google.com/vertex-ai",children:"Google Vertex AI"})," ",(0,t.jsx)(n.a,{href:"https://cloud.google.com/vertex-ai/docs/generative-ai/embeddings/get-text-embeddings",children:"Embeddings API"}),"."]}),"\n",(0,t.jsxs)(d,{children:[(0,t.jsx)("summary",{children:"Parameters"}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Inputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"credentials"}),(0,t.jsx)(n.td,{children:"Credentials"}),(0,t.jsx)(n.td,{children:"The default custom credentials to use."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"location"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsxs)(n.td,{children:["The default location to use when making API calls. Default: ",(0,t.jsx)(n.code,{children:"us-central1"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"max_output_tokens"}),(0,t.jsx)(n.td,{children:"Integer"}),(0,t.jsxs)(n.td,{children:["The token limit determines the maximum amount of text output from one prompt. Default: ",(0,t.jsx)(n.code,{children:"128"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"model_name"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsxs)(n.td,{children:["The name of the Vertex AI large language model. Default: ",(0,t.jsx)(n.code,{children:"text-bison"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"project"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsx)(n.td,{children:"The default GCP project to use when making Vertex API calls."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"request_parallelism"}),(0,t.jsx)(n.td,{children:"Integer"}),(0,t.jsxs)(n.td,{children:["The amount of parallelism allowed for requests issued to VertexAI models. Default: ",(0,t.jsx)(n.code,{children:"5"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"temperature"}),(0,t.jsx)(n.td,{children:"Float"}),(0,t.jsxs)(n.td,{children:["Tunes the degree of randomness in text generations. Should be a non-negative value. Default: ",(0,t.jsx)(n.code,{children:"0"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"top_k"}),(0,t.jsx)(n.td,{children:"Integer"}),(0,t.jsxs)(n.td,{children:["How the model selects tokens for output. The next token is selected from the top ",(0,t.jsx)(n.code,{children:"k"})," tokens. Default: ",(0,t.jsx)(n.code,{children:"40"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"top_p"}),(0,t.jsx)(n.td,{children:"Float"}),(0,t.jsxs)(n.td,{children:["Tokens are selected from the most probable to least until the sum of their probabilities exceeds the top ",(0,t.jsx)(n.code,{children:"p"})," value. Default: ",(0,t.jsx)(n.code,{children:"0.95"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"tuned_model_name"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsxs)(n.td,{children:["The name of a tuned model. If provided, ",(0,t.jsx)(n.code,{children:"model_name"})," is ignored."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"verbose"}),(0,t.jsx)(n.td,{children:"Boolean"}),(0,t.jsxs)(n.td,{children:["This parameter controls the level of detail in the output. When set to ",(0,t.jsx)(n.code,{children:"True"}),", it prints internal states of the chain to help debug. Default: ",(0,t.jsx)(n.code,{children:"False"}),"."]})]})]})]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Outputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"embeddings"}),(0,t.jsx)(n.td,{children:"Embeddings"}),(0,t.jsx)(n.td,{children:"An instance for generating embeddings using VertexAI."})]})})]})]})]})}function x(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(a,{...e})}):a(e)}},80352:(e,n,s)=>{s.d(n,{A:()=>d});const d=s.p+"assets/images/url-component-fb712df73581345c0f344013ce6ff2fd.png"},96425:(e,n,s)=>{s.d(n,{A:()=>d});const d=s.p+"assets/images/component-watsonx-embeddings-chroma-591e45d59ab635d1e1e68ab8036cfed7.png"}}]);
\ No newline at end of file
+"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[7462],{7369:(e,n,s)=>{s.d(n,{A:()=>d});const d=s.p+"assets/images/component-ollama-embeddings-chromadb-c02d6ef9e753b61c274778d90f2a6eec.png"},17886:(e,n,s)=>{s.d(n,{A:()=>i});s(96540);var d=s(64058),t=s(74848);function i({name:e,...n}){const s=d[e];return s?(0,t.jsx)(s,{...n}):null}},28453:(e,n,s)=>{s.d(n,{R:()=>r,x:()=>l});var d=s(96540);const t={},i=d.createContext(t);function r(e){const n=d.useContext(i);return d.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),d.createElement(i.Provider,{value:n},e.children)}},79491:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>h,default:()=>x,frontMatter:()=>l,metadata:()=>d,toc:()=>o});const d=JSON.parse('{"id":"Components/components-embedding-models","title":"Embeddings","description":"Embeddings models convert text into numerical vectors. These embeddings capture the semantic meaning of the input text, and allow LLMs to understand context.","source":"@site/docs/Components/components-embedding-models.md","sourceDirName":"Components","slug":"/components-embedding-models","permalink":"/components-embedding-models","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Embeddings","slug":"/components-embedding-models"},"sidebar":"docs","previous":{"title":"Data","permalink":"/components-data"},"next":{"title":"Helpers","permalink":"/components-helpers"}}');var t=s(74848),i=s(28453),r=s(17886);const l={title:"Embeddings",slug:"/components-embedding-models"},h="Embeddings models in Langflow",c={},o=[{value:"Use an embeddings model component in a flow",id:"use-an-embeddings-model-component-in-a-flow",level:2},{value:"AI/ML",id:"aiml",level:2},{value:"Amazon Bedrock Embeddings",id:"amazon-bedrock-embeddings",level:2},{value:"Astra DB vectorize",id:"astra-db-vectorize",level:2},{value:"Azure OpenAI Embeddings",id:"azure-openai-embeddings",level:2},{value:"Cloudflare Workers AI Embeddings",id:"cloudflare-workers-ai-embeddings",level:2},{value:"Cohere Embeddings",id:"cohere-embeddings",level:2},{value:"Embedding similarity",id:"embedding-similarity",level:2},{value:"Google generative AI embeddings",id:"google-generative-ai-embeddings",level:2},{value:"Hugging Face Embeddings",id:"hugging-face-embeddings",level:2},{value:"Hugging Face embeddings inference",id:"hugging-face-embeddings-inference",level:2},{value:"Connect the Hugging Face component to a local embeddings model",id:"connect-the-hugging-face-component-to-a-local-embeddings-model",level:3},{value:"IBM watsonx embeddings",id:"ibm-watsonx-embeddings",level:2},{value:"Default models",id:"default-models",level:3},{value:"LM Studio Embeddings",id:"lm-studio-embeddings",level:2},{value:"MistralAI",id:"mistralai",level:2},{value:"NVIDIA",id:"nvidia",level:2},{value:"Ollama embeddings",id:"ollama-embeddings",level:2},{value:"OpenAI Embeddings",id:"openai-embeddings",level:2},{value:"Text embedder",id:"text-embedder",level:2},{value:"VertexAI Embeddings",id:"vertexai-embeddings",level:2}];function a(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components},{Details:d}=n;return d||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.header,{children:(0,t.jsx)(n.h1,{id:"embeddings-models-in-langflow",children:"Embeddings models in Langflow"})}),"\n",(0,t.jsx)(n.p,{children:"Embeddings models convert text into numerical vectors. These embeddings capture the semantic meaning of the input text, and allow LLMs to understand context."}),"\n",(0,t.jsx)(n.p,{children:"Refer to your specific component's documentation for more information on parameters."}),"\n",(0,t.jsx)(n.h2,{id:"use-an-embeddings-model-component-in-a-flow",children:"Use an embeddings model component in a flow"}),"\n",(0,t.jsxs)(n.p,{children:["In this example of a document ingestion pipeline, the ",(0,t.jsx)(n.strong,{children:"OpenAI"})," embeddings model is connected to a vector database. The component converts the text chunks into vectors and stores them in the vector database. The vectorized data can be used to inform AI workloads like chatbots, similarity searches, and agents."]}),"\n",(0,t.jsx)(n.p,{children:"This embeddings component uses an OpenAI API key for authentication. Refer to your specific embeddings component's documentation for more information on authentication."}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{alt:"URL component in a data ingestion pipeline",src:s(80352).A+"",width:"2306",height:"1632"})}),"\n",(0,t.jsx)(n.h2,{id:"aiml",children:"AI/ML"}),"\n",(0,t.jsxs)(n.p,{children:["This component generates embeddings using the ",(0,t.jsx)(n.a,{href:"https://docs.aimlapi.com/api-overview/embeddings",children:"AI/ML API"}),"."]}),"\n",(0,t.jsxs)(d,{children:[(0,t.jsx)("summary",{children:"Parameters"}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Inputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"model_name"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsx)(n.td,{children:"The name of the AI/ML embedding model to use."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"aiml_api_key"}),(0,t.jsx)(n.td,{children:"SecretString"}),(0,t.jsx)(n.td,{children:"The API key required for authenticating with the AI/ML service."})]})]})]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Outputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"embeddings"}),(0,t.jsx)(n.td,{children:"Embeddings"}),(0,t.jsxs)(n.td,{children:["An instance of ",(0,t.jsx)(n.code,{children:"AIMLEmbeddingsImpl"})," for generating embeddings."]})]})})]})]}),"\n",(0,t.jsx)(n.h2,{id:"amazon-bedrock-embeddings",children:"Amazon Bedrock Embeddings"}),"\n",(0,t.jsxs)(n.p,{children:["This component is used to load embedding models from ",(0,t.jsx)(n.a,{href:"https://aws.amazon.com/bedrock/",children:"Amazon Bedrock"}),"."]}),"\n",(0,t.jsxs)(d,{children:[(0,t.jsx)("summary",{children:"Parameters"}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Inputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"credentials_profile_name"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsxs)(n.td,{children:["The name of the AWS credentials profile in ",(0,t.jsx)(n.code,{children:"~/.aws/credentials"})," or ",(0,t.jsx)(n.code,{children:"~/.aws/config"}),", which has access keys or role information."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"model_id"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsxs)(n.td,{children:["The ID of the model to call, such as ",(0,t.jsx)(n.code,{children:"amazon.titan-embed-text-v1"}),". This is equivalent to the ",(0,t.jsx)(n.code,{children:"modelId"})," property in the ",(0,t.jsx)(n.code,{children:"list-foundation-models"})," API."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"endpoint_url"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsx)(n.td,{children:"The URL to set a specific service endpoint other than the default AWS endpoint."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"region_name"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsxs)(n.td,{children:["The AWS region to use, such as ",(0,t.jsx)(n.code,{children:"us-west-2"}),". Falls back to the ",(0,t.jsx)(n.code,{children:"AWS_DEFAULT_REGION"})," environment variable or region specified in ",(0,t.jsx)(n.code,{children:"~/.aws/config"})," if not provided."]})]})]})]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Outputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"embeddings"}),(0,t.jsx)(n.td,{children:"Embeddings"}),(0,t.jsx)(n.td,{children:"An instance for generating embeddings using Amazon Bedrock."})]})})]})]}),"\n",(0,t.jsx)(n.h2,{id:"astra-db-vectorize",children:"Astra DB vectorize"}),"\n",(0,t.jsx)(n.admonition,{type:"important",children:(0,t.jsxs)(n.p,{children:["This component is deprecated as of Langflow version 1.1.2.\nInstead, use the ",(0,t.jsx)(n.a,{href:"/components-vector-stores#astra-db-vector-store",children:"Astra DB vector store component"}),"."]})}),"\n",(0,t.jsxs)(n.p,{children:["Connect this component to the ",(0,t.jsx)(n.strong,{children:"Embeddings"})," port of the ",(0,t.jsx)(n.a,{href:"/components-vector-stores#astra-db-vector-store",children:"Astra DB vector store component"})," to generate embeddings."]}),"\n",(0,t.jsxs)(n.p,{children:["This component requires that your Astra DB database has a collection that uses a vectorize embedding provider integration.\nFor more information and instructions, see ",(0,t.jsx)(n.a,{href:"https://docs.datastax.com/en/astra-db-serverless/databases/embedding-generation.html",children:"Embedding Generation"}),"."]}),"\n",(0,t.jsxs)(d,{children:[(0,t.jsx)("summary",{children:"Parameters"}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Inputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Display Name"}),(0,t.jsx)(n.th,{children:"Info"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"provider"}),(0,t.jsx)(n.td,{children:"Embedding Provider"}),(0,t.jsx)(n.td,{children:"The embedding provider to use."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"model_name"}),(0,t.jsx)(n.td,{children:"Model Name"}),(0,t.jsx)(n.td,{children:"The embedding model to use."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"authentication"}),(0,t.jsx)(n.td,{children:"Authentication"}),(0,t.jsxs)(n.td,{children:["The name of the API key in Astra that stores your ",(0,t.jsx)(n.a,{href:"https://docs.datastax.com/en/astra-db-serverless/databases/embedding-generation.html#embedding-provider-authentication",children:"vectorize embedding provider credentials"}),". (Not required if using an ",(0,t.jsx)(n.a,{href:"https://docs.datastax.com/en/astra-db-serverless/databases/embedding-generation.html#supported-embedding-providers",children:"Astra-hosted embedding provider"}),".)"]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"provider_api_key"}),(0,t.jsx)(n.td,{children:"Provider API Key"}),(0,t.jsxs)(n.td,{children:["As an alternative to ",(0,t.jsx)(n.code,{children:"authentication"}),", directly provide your embedding provider credentials."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"model_parameters"}),(0,t.jsx)(n.td,{children:"Model Parameters"}),(0,t.jsx)(n.td,{children:"Additional model parameters."})]})]})]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Outputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"embeddings"}),(0,t.jsx)(n.td,{children:"Embeddings"}),(0,t.jsx)(n.td,{children:"An instance for generating embeddings using Astra vectorize."})]})})]})]}),"\n",(0,t.jsx)(n.h2,{id:"azure-openai-embeddings",children:"Azure OpenAI Embeddings"}),"\n",(0,t.jsx)(n.p,{children:"This component generates embeddings using Azure OpenAI models."}),"\n",(0,t.jsxs)(d,{children:[(0,t.jsx)("summary",{children:"Parameters"}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Inputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Model"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsxs)(n.td,{children:["The name of the model to use. Default: ",(0,t.jsx)(n.code,{children:"text-embedding-3-small"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Azure Endpoint"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsxs)(n.td,{children:["Your Azure endpoint, including the resource, such as ",(0,t.jsx)(n.code,{children:"https://example-resource.azure.openai.com/"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Deployment Name"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsx)(n.td,{children:"The name of the deployment."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"API Version"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsx)(n.td,{children:"The API version to use, with options including various dates."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"API Key"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsx)(n.td,{children:"The API key required to access the Azure OpenAI service."})]})]})]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Outputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"embeddings"}),(0,t.jsx)(n.td,{children:"Embeddings"}),(0,t.jsx)(n.td,{children:"An instance for generating embeddings using Azure OpenAI."})]})})]})]}),"\n",(0,t.jsx)(n.h2,{id:"cloudflare-workers-ai-embeddings",children:"Cloudflare Workers AI Embeddings"}),"\n",(0,t.jsxs)(n.p,{children:["This component generates embeddings using ",(0,t.jsx)(n.a,{href:"https://developers.cloudflare.com/workers-ai/",children:"Cloudflare Workers AI models"}),"."]}),"\n",(0,t.jsxs)(d,{children:[(0,t.jsx)("summary",{children:"Parameters"}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Inputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Display Name"}),(0,t.jsx)(n.th,{children:"Info"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"account_id"}),(0,t.jsx)(n.td,{children:"Cloudflare account ID"}),(0,t.jsxs)(n.td,{children:[(0,t.jsx)(n.a,{href:"https://developers.cloudflare.com/fundamentals/setup/find-account-and-zone-ids/#find-account-id-workers-and-pages",children:"Find your Cloudflare account ID"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"api_token"}),(0,t.jsx)(n.td,{children:"Cloudflare API token"}),(0,t.jsxs)(n.td,{children:[(0,t.jsx)(n.a,{href:"https://developers.cloudflare.com/fundamentals/api/get-started/create-token/",children:"Create an API token"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"model_name"}),(0,t.jsx)(n.td,{children:"Model Name"}),(0,t.jsxs)(n.td,{children:[(0,t.jsx)(n.a,{href:"https://developers.cloudflare.com/workers-ai/models/#text-embeddings",children:"List of supported models"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"strip_new_lines"}),(0,t.jsx)(n.td,{children:"Strip New Lines"}),(0,t.jsx)(n.td,{children:"Whether to strip new lines from the input text."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"batch_size"}),(0,t.jsx)(n.td,{children:"Batch Size"}),(0,t.jsx)(n.td,{children:"The number of texts to embed in each batch."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"api_base_url"}),(0,t.jsx)(n.td,{children:"Cloudflare API base URL"}),(0,t.jsx)(n.td,{children:"The base URL for the Cloudflare API."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"headers"}),(0,t.jsx)(n.td,{children:"Headers"}),(0,t.jsx)(n.td,{children:"Additional request headers."})]})]})]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Outputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Display Name"}),(0,t.jsx)(n.th,{children:"Info"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"embeddings"}),(0,t.jsx)(n.td,{children:"Embeddings"}),(0,t.jsx)(n.td,{children:"An instance for generating embeddings using Cloudflare Workers."})]})})]})]}),"\n",(0,t.jsx)(n.h2,{id:"cohere-embeddings",children:"Cohere Embeddings"}),"\n",(0,t.jsxs)(n.p,{children:["This component is used to load embedding models from ",(0,t.jsx)(n.a,{href:"https://cohere.com/",children:"Cohere"}),"."]}),"\n",(0,t.jsxs)(d,{children:[(0,t.jsx)("summary",{children:"Parameters"}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Inputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"cohere_api_key"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsx)(n.td,{children:"The API key required to authenticate with the Cohere service."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"model"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsxs)(n.td,{children:["The language model used for embedding text documents and performing queries. Default: ",(0,t.jsx)(n.code,{children:"embed-english-v2.0"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"truncate"}),(0,t.jsx)(n.td,{children:"Boolean"}),(0,t.jsxs)(n.td,{children:["Whether to truncate the input text to fit within the model's constraints. Default: ",(0,t.jsx)(n.code,{children:"False"}),"."]})]})]})]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Outputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"embeddings"}),(0,t.jsx)(n.td,{children:"Embeddings"}),(0,t.jsx)(n.td,{children:"An instance for generating embeddings using Cohere."})]})})]})]}),"\n",(0,t.jsx)(n.h2,{id:"embedding-similarity",children:"Embedding similarity"}),"\n",(0,t.jsx)(n.p,{children:"This component computes selected forms of similarity between two embedding vectors."}),"\n",(0,t.jsxs)(d,{children:[(0,t.jsx)("summary",{children:"Parameters"}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Inputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Display Name"}),(0,t.jsx)(n.th,{children:"Info"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"embedding_vectors"}),(0,t.jsx)(n.td,{children:"Embedding Vectors"}),(0,t.jsx)(n.td,{children:"A list containing exactly two data objects with embedding vectors to compare."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"similarity_metric"}),(0,t.jsx)(n.td,{children:"Similarity Metric"}),(0,t.jsx)(n.td,{children:'Select the similarity metric to use. Options: "Cosine Similarity", "Euclidean Distance", "Manhattan Distance".'})]})]})]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Outputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Display Name"}),(0,t.jsx)(n.th,{children:"Info"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"similarity_data"}),(0,t.jsx)(n.td,{children:"Similarity Data"}),(0,t.jsx)(n.td,{children:"A data object containing the computed similarity score and additional information."})]})})]})]}),"\n",(0,t.jsx)(n.h2,{id:"google-generative-ai-embeddings",children:"Google generative AI embeddings"}),"\n",(0,t.jsxs)(n.p,{children:["This component connects to Google's generative AI embedding service using the GoogleGenerativeAIEmbeddings class from the ",(0,t.jsx)(n.code,{children:"langchain-google-genai"})," package."]}),"\n",(0,t.jsxs)(d,{children:[(0,t.jsx)("summary",{children:"Parameters"}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Inputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Display Name"}),(0,t.jsx)(n.th,{children:"Info"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"api_key"}),(0,t.jsx)(n.td,{children:"API Key"}),(0,t.jsx)(n.td,{children:"The secret API key for accessing Google's generative AI service. Required."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"model_name"}),(0,t.jsx)(n.td,{children:"Model Name"}),(0,t.jsx)(n.td,{children:'The name of the embedding model to use. Default: "models/text-embedding-004".'})]})]})]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Outputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Display Name"}),(0,t.jsx)(n.th,{children:"Info"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"embeddings"}),(0,t.jsx)(n.td,{children:"Embeddings"}),(0,t.jsx)(n.td,{children:"The built GoogleGenerativeAIEmbeddings object."})]})})]})]}),"\n",(0,t.jsx)(n.h2,{id:"hugging-face-embeddings",children:"Hugging Face Embeddings"}),"\n",(0,t.jsx)(n.admonition,{type:"note",children:(0,t.jsxs)(n.p,{children:["This component is deprecated as of Langflow version 1.0.18.\nInstead, use the ",(0,t.jsx)(n.a,{href:"#hugging-face-embeddings-inference",children:"Hugging Face Embeddings Inference component"}),"."]})}),"\n",(0,t.jsx)(n.p,{children:"This component loads embedding models from HuggingFace."}),"\n",(0,t.jsx)(n.p,{children:"Use this component to generate embeddings using locally downloaded Hugging Face models. Ensure you have sufficient computational resources to run the models."}),"\n",(0,t.jsxs)(d,{children:[(0,t.jsx)("summary",{children:"Parameters"}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Inputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Display Name"}),(0,t.jsx)(n.th,{children:"Info"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Cache Folder"}),(0,t.jsx)(n.td,{children:"Cache Folder"}),(0,t.jsx)(n.td,{children:"The folder path to cache HuggingFace models."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Encode Kwargs"}),(0,t.jsx)(n.td,{children:"Encoding Arguments"}),(0,t.jsx)(n.td,{children:"Additional arguments for the encoding process."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Model Kwargs"}),(0,t.jsx)(n.td,{children:"Model Arguments"}),(0,t.jsx)(n.td,{children:"Additional arguments for the model."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Model Name"}),(0,t.jsx)(n.td,{children:"Model Name"}),(0,t.jsx)(n.td,{children:"The name of the HuggingFace model to use."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Multi Process"}),(0,t.jsx)(n.td,{children:"Multi-Process"}),(0,t.jsx)(n.td,{children:"Whether to use multiple processes."})]})]})]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Outputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Display Name"}),(0,t.jsx)(n.th,{children:"Info"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"embeddings"}),(0,t.jsx)(n.td,{children:"Embeddings"}),(0,t.jsx)(n.td,{children:"The generated embeddings."})]})})]})]}),"\n",(0,t.jsx)(n.h2,{id:"hugging-face-embeddings-inference",children:"Hugging Face embeddings inference"}),"\n",(0,t.jsxs)(n.p,{children:["This component generates embeddings using ",(0,t.jsx)(n.a,{href:"https://huggingface.co/",children:"Hugging Face Inference API models"})," and requires a ",(0,t.jsx)(n.a,{href:"https://huggingface.co/docs/hub/security-tokens",children:"Hugging Face API token"})," to authenticate. Local inference models do not require an API key."]}),"\n",(0,t.jsx)(n.p,{children:"Use this component to create embeddings with Hugging Face's hosted models, or to connect to your own locally hosted models."}),"\n",(0,t.jsxs)(d,{children:[(0,t.jsx)("summary",{children:"Parameters"}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Inputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Display Name"}),(0,t.jsx)(n.th,{children:"Info"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"API Key"}),(0,t.jsx)(n.td,{children:"API Key"}),(0,t.jsx)(n.td,{children:"The API key for accessing the Hugging Face Inference API."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"API URL"}),(0,t.jsx)(n.td,{children:"API URL"}),(0,t.jsx)(n.td,{children:"The URL of the Hugging Face Inference API."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Model Name"}),(0,t.jsx)(n.td,{children:"Model Name"}),(0,t.jsx)(n.td,{children:"The name of the model to use for embeddings."})]})]})]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Outputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Display Name"}),(0,t.jsx)(n.th,{children:"Info"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"embeddings"}),(0,t.jsx)(n.td,{children:"Embeddings"}),(0,t.jsx)(n.td,{children:"The generated embeddings."})]})})]})]}),"\n",(0,t.jsx)(n.h3,{id:"connect-the-hugging-face-component-to-a-local-embeddings-model",children:"Connect the Hugging Face component to a local embeddings model"}),"\n",(0,t.jsxs)(n.p,{children:["To run an embeddings inference locally, see the ",(0,t.jsx)(n.a,{href:"https://huggingface.co/docs/text-embeddings-inference/local_cpu",children:"HuggingFace documentation"}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["To connect the local Hugging Face model to the ",(0,t.jsx)(n.strong,{children:"Hugging Face embeddings inference"})," component and use it in a flow, follow these steps:"]}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:["Create a ",(0,t.jsx)(n.a,{href:"/vector-store-rag",children:"Vector store RAG flow"}),".\nThere are two embeddings models in this flow that you can replace with ",(0,t.jsx)(n.strong,{children:"Hugging Face"})," embeddings inference components."]}),"\n",(0,t.jsxs)(n.li,{children:["Replace both ",(0,t.jsx)(n.strong,{children:"OpenAI"})," embeddings model components with ",(0,t.jsx)(n.strong,{children:"Hugging Face"})," model components."]}),"\n",(0,t.jsxs)(n.li,{children:["Connect both ",(0,t.jsx)(n.strong,{children:"Hugging Face"})," components to the ",(0,t.jsx)(n.strong,{children:"Embeddings"})," ports of the ",(0,t.jsx)(n.strong,{children:"Astra DB vector store"})," components."]}),"\n",(0,t.jsxs)(n.li,{children:["In the ",(0,t.jsx)(n.strong,{children:"Hugging Face"})," components, set the ",(0,t.jsx)(n.strong,{children:"Inference Endpoint"})," field to the URL of your local inference model. ",(0,t.jsxs)(n.strong,{children:["The ",(0,t.jsx)(n.strong,{children:"API Key"})," field is not required for local inference."]})]}),"\n",(0,t.jsx)(n.li,{children:"Run the flow. The local inference models generate embeddings for the input text."}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"ibm-watsonx-embeddings",children:"IBM watsonx embeddings"}),"\n",(0,t.jsxs)(n.p,{children:["This component generates text using ",(0,t.jsx)(n.a,{href:"https://www.ibm.com/watsonx",children:"IBM watsonx.ai"})," foundation models."]}),"\n",(0,t.jsxs)(n.p,{children:["To use ",(0,t.jsx)(n.strong,{children:"IBM watsonx.ai"})," embeddings components, replace an embeddings component with the IBM watsonx.ai component in a flow."]}),"\n",(0,t.jsx)(n.p,{children:"An example document processing flow looks like the following:"}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{alt:"IBM watsonx embeddings model loading a chroma-db with split text",src:s(96425).A+"",width:"1714",height:"1486"})}),"\n",(0,t.jsx)(n.p,{children:"This flow loads a PDF file from local storage and splits the text into chunks."}),"\n",(0,t.jsxs)(n.p,{children:["The ",(0,t.jsx)(n.strong,{children:"IBM watsonx"})," embeddings component converts the text chunks into embeddings, which are then stored in a Chroma DB vector store."]}),"\n",(0,t.jsxs)(n.p,{children:["The values for ",(0,t.jsx)(n.strong,{children:"API endpoint"}),", ",(0,t.jsx)(n.strong,{children:"Project ID"}),", ",(0,t.jsx)(n.strong,{children:"API key"}),", and ",(0,t.jsx)(n.strong,{children:"Model Name"})," are found in your IBM watsonx.ai deployment.\nFor more information, see the ",(0,t.jsx)(n.a,{href:"https://python.langchain.com/docs/integrations/text_embedding/ibm_watsonx/",children:"Langchain documentation"}),"."]}),"\n",(0,t.jsx)(n.h3,{id:"default-models",children:"Default models"}),"\n",(0,t.jsx)(n.p,{children:"The component supports several default models with the following vector dimensions:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"sentence-transformers/all-minilm-l12-v2"}),": 384-dimensional embeddings"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"ibm/slate-125m-english-rtrvr-v2"}),": 768-dimensional embeddings"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"ibm/slate-30m-english-rtrvr-v2"}),": 768-dimensional embeddings"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"intfloat/multilingual-e5-large"}),": 1024-dimensional embeddings"]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:"The component automatically fetches and updates the list of available models from your watsonx.ai instance when you provide your API endpoint and credentials."}),"\n",(0,t.jsxs)(d,{children:[(0,t.jsx)("summary",{children:"Parameters"}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Inputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Display Name"}),(0,t.jsx)(n.th,{children:"Info"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"url"}),(0,t.jsx)(n.td,{children:"watsonx API Endpoint"}),(0,t.jsx)(n.td,{children:"The base URL of the API."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"project_id"}),(0,t.jsx)(n.td,{children:"watsonx project id"}),(0,t.jsx)(n.td,{children:"The project ID for your watsonx.ai instance."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"api_key"}),(0,t.jsx)(n.td,{children:"API Key"}),(0,t.jsx)(n.td,{children:"The API Key to use for the model."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"model_name"}),(0,t.jsx)(n.td,{children:"Model Name"}),(0,t.jsx)(n.td,{children:"The name of the embedding model to use."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"truncate_input_tokens"}),(0,t.jsx)(n.td,{children:"Truncate Input Tokens"}),(0,t.jsxs)(n.td,{children:["The maximum number of tokens to process. Default: ",(0,t.jsx)(n.code,{children:"200"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"input_text"}),(0,t.jsx)(n.td,{children:"Include the original text in the output"}),(0,t.jsxs)(n.td,{children:["Determines if the original text is included in the output. Default: ",(0,t.jsx)(n.code,{children:"True"}),"."]})]})]})]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Outputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Display Name"}),(0,t.jsx)(n.th,{children:"Info"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"embeddings"}),(0,t.jsx)(n.td,{children:"Embeddings"}),(0,t.jsx)(n.td,{children:"An instance for generating embeddings using watsonx.ai."})]})})]})]}),"\n",(0,t.jsx)(n.h2,{id:"lm-studio-embeddings",children:"LM Studio Embeddings"}),"\n",(0,t.jsxs)(n.p,{children:["This component generates embeddings using ",(0,t.jsx)(n.a,{href:"https://lmstudio.ai/docs",children:"LM Studio"})," models."]}),"\n",(0,t.jsxs)(d,{children:[(0,t.jsx)("summary",{children:"Parameters"}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Inputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Display Name"}),(0,t.jsx)(n.th,{children:"Info"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"model"}),(0,t.jsx)(n.td,{children:"Model"}),(0,t.jsx)(n.td,{children:"The LM Studio model to use for generating embeddings."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"base_url"}),(0,t.jsx)(n.td,{children:"LM Studio Base URL"}),(0,t.jsx)(n.td,{children:"The base URL for the LM Studio API."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"api_key"}),(0,t.jsx)(n.td,{children:"LM Studio API Key"}),(0,t.jsx)(n.td,{children:"The API key for authentication with LM Studio."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"temperature"}),(0,t.jsx)(n.td,{children:"Model Temperature"}),(0,t.jsx)(n.td,{children:"The temperature setting for the model."})]})]})]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Outputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Display Name"}),(0,t.jsx)(n.th,{children:"Info"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"embeddings"}),(0,t.jsx)(n.td,{children:"Embeddings"}),(0,t.jsx)(n.td,{children:"The generated embeddings."})]})})]})]}),"\n",(0,t.jsx)(n.h2,{id:"mistralai",children:"MistralAI"}),"\n",(0,t.jsxs)(n.p,{children:["This component generates embeddings using ",(0,t.jsx)(n.a,{href:"https://docs.mistral.ai/",children:"MistralAI"})," models."]}),"\n",(0,t.jsxs)(d,{children:[(0,t.jsx)("summary",{children:"Parameters"}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Inputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"model"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsx)(n.td,{children:'The MistralAI model to use. Default: "mistral-embed".'})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"mistral_api_key"}),(0,t.jsx)(n.td,{children:"SecretString"}),(0,t.jsx)(n.td,{children:"The API key for authenticating with MistralAI."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"max_concurrent_requests"}),(0,t.jsx)(n.td,{children:"Integer"}),(0,t.jsx)(n.td,{children:"The maximum number of concurrent API requests. Default: 64."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"max_retries"}),(0,t.jsx)(n.td,{children:"Integer"}),(0,t.jsx)(n.td,{children:"The maximum number of retry attempts for failed requests. Default: 5."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"timeout"}),(0,t.jsx)(n.td,{children:"Integer"}),(0,t.jsx)(n.td,{children:"The request timeout in seconds. Default: 120."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"endpoint"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsxs)(n.td,{children:["The custom API endpoint URL. Default: ",(0,t.jsx)(n.code,{children:"https://api.mistral.ai/v1/"}),")."]})]})]})]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Outputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"embeddings"}),(0,t.jsx)(n.td,{children:"Embeddings"}),(0,t.jsx)(n.td,{children:"A MistralAIEmbeddings instance for generating embeddings."})]})})]})]}),"\n",(0,t.jsx)(n.h2,{id:"nvidia",children:"NVIDIA"}),"\n",(0,t.jsxs)(n.p,{children:["This component generates embeddings using ",(0,t.jsx)(n.a,{href:"https://docs.nvidia.com",children:"NVIDIA models"}),"."]}),"\n",(0,t.jsxs)(d,{children:[(0,t.jsx)("summary",{children:"Parameters"}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Inputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"model"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsxs)(n.td,{children:["The NVIDIA model to use for embeddings, such as ",(0,t.jsx)(n.code,{children:"nvidia/nv-embed-v1"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"base_url"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsxs)(n.td,{children:["The base URL for the NVIDIA API. Default: ",(0,t.jsx)(n.code,{children:"https://integrate.api.nvidia.com/v1"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"nvidia_api_key"}),(0,t.jsx)(n.td,{children:"SecretString"}),(0,t.jsx)(n.td,{children:"The API key for authenticating with NVIDIA's service."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"temperature"}),(0,t.jsx)(n.td,{children:"Float"}),(0,t.jsxs)(n.td,{children:["The model temperature for embedding generation. Default: ",(0,t.jsx)(n.code,{children:"0.1"}),"."]})]})]})]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Outputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"embeddings"}),(0,t.jsx)(n.td,{children:"Embeddings"}),(0,t.jsx)(n.td,{children:"A NVIDIAEmbeddings instance for generating embeddings."})]})})]})]}),"\n",(0,t.jsx)(n.h2,{id:"ollama-embeddings",children:"Ollama embeddings"}),"\n",(0,t.jsxs)(n.p,{children:["This component generates embeddings using ",(0,t.jsx)(n.a,{href:"https://ollama.com/",children:"Ollama models"}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["For a list of Ollama embeddings models, see the ",(0,t.jsx)(n.a,{href:"https://ollama.com/search?c=embedding",children:"Ollama documentation"}),"."]}),"\n",(0,t.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,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:["In the Ollama component, in the ",(0,t.jsx)(n.strong,{children:"Ollama Base URL"})," field, enter the address for your locally running Ollama server.\nThis value is set as the ",(0,t.jsx)(n.code,{children:"OLLAMA_HOST"})," environment variable in Ollama. The default base URL is ",(0,t.jsx)(n.code,{children:"http://localhost:11434"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["To refresh the server's list of models, click ",(0,t.jsx)(r.A,{name:"RefreshCw","aria-hidden":"true"})," ",(0,t.jsx)(n.strong,{children:"Refresh"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["In the ",(0,t.jsx)(n.strong,{children:"Ollama Model"})," field, select an embeddings model. This example uses ",(0,t.jsx)(n.code,{children:"all-minilm:latest"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:["Connect the ",(0,t.jsx)(n.strong,{children:"Ollama"})," embeddings component to a flow.\nFor example, this flow connects a local Ollama server running a ",(0,t.jsx)(n.code,{children:"all-minilm:latest"})," embeddings model to a ",(0,t.jsx)(n.a,{href:"/components-vector-stores#chroma-db",children:"Chroma DB"})," vector store to generate embeddings for split text."]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{alt:"Ollama embeddings connected to Chroma DB",src:s(7369).A+"",width:"1098",height:"811"})}),"\n",(0,t.jsxs)(n.p,{children:["For more information, see the ",(0,t.jsx)(n.a,{href:"https://ollama.com/",children:"Ollama documentation"}),"."]}),"\n",(0,t.jsxs)(d,{children:[(0,t.jsx)("summary",{children:"Parameters"}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Inputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Ollama Model"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsxs)(n.td,{children:["The name of the Ollama model to use. Default: ",(0,t.jsx)(n.code,{children:"llama2"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Ollama Base URL"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsxs)(n.td,{children:["The base URL of the Ollama API. Default: ",(0,t.jsx)(n.code,{children:"http://localhost:11434"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Model Temperature"}),(0,t.jsx)(n.td,{children:"Float"}),(0,t.jsx)(n.td,{children:"The temperature parameter for the model. Adjusts the randomness in the generated embeddings."})]})]})]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Outputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"embeddings"}),(0,t.jsx)(n.td,{children:"Embeddings"}),(0,t.jsx)(n.td,{children:"An instance for generating embeddings using Ollama."})]})})]})]}),"\n",(0,t.jsx)(n.h2,{id:"openai-embeddings",children:"OpenAI Embeddings"}),"\n",(0,t.jsxs)(n.p,{children:["This component is used to load embedding models from ",(0,t.jsx)(n.a,{href:"https://openai.com/",children:"OpenAI"}),"."]}),"\n",(0,t.jsxs)(d,{children:[(0,t.jsx)("summary",{children:"Parameters"}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Inputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"OpenAI API Key"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsx)(n.td,{children:"The API key to use for accessing the OpenAI API."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Default Headers"}),(0,t.jsx)(n.td,{children:"Dict"}),(0,t.jsx)(n.td,{children:"The default headers for the HTTP requests."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Default Query"}),(0,t.jsx)(n.td,{children:"NestedDict"}),(0,t.jsx)(n.td,{children:"The default query parameters for the HTTP requests."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Allowed Special"}),(0,t.jsx)(n.td,{children:"List"}),(0,t.jsxs)(n.td,{children:["The special tokens allowed for processing. Default: ",(0,t.jsx)(n.code,{children:"[]"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Disallowed Special"}),(0,t.jsx)(n.td,{children:"List"}),(0,t.jsxs)(n.td,{children:["The special tokens disallowed for processing. Default: ",(0,t.jsx)(n.code,{children:'["all"]'}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Chunk Size"}),(0,t.jsx)(n.td,{children:"Integer"}),(0,t.jsxs)(n.td,{children:["The chunk size for processing. Default: ",(0,t.jsx)(n.code,{children:"1000"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Client"}),(0,t.jsx)(n.td,{children:"Any"}),(0,t.jsx)(n.td,{children:"The HTTP client for making requests."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Deployment"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsxs)(n.td,{children:["The deployment name for the model. Default: ",(0,t.jsx)(n.code,{children:"text-embedding-3-small"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Embedding Context Length"}),(0,t.jsx)(n.td,{children:"Integer"}),(0,t.jsxs)(n.td,{children:["The length of embedding context. Default: ",(0,t.jsx)(n.code,{children:"8191"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Max Retries"}),(0,t.jsx)(n.td,{children:"Integer"}),(0,t.jsxs)(n.td,{children:["The maximum number of retries for failed requests. Default: ",(0,t.jsx)(n.code,{children:"6"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Model"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsxs)(n.td,{children:["The name of the model to use. Default: ",(0,t.jsx)(n.code,{children:"text-embedding-3-small"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Model Kwargs"}),(0,t.jsx)(n.td,{children:"NestedDict"}),(0,t.jsx)(n.td,{children:"Additional keyword arguments for the model."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"OpenAI API Base"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsx)(n.td,{children:"The base URL of the OpenAI API."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"OpenAI API Type"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsx)(n.td,{children:"The type of the OpenAI API."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"OpenAI API Version"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsx)(n.td,{children:"The version of the OpenAI API."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"OpenAI Organization"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsx)(n.td,{children:"The organization associated with the API key."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"OpenAI Proxy"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsx)(n.td,{children:"The proxy server for the requests."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Request Timeout"}),(0,t.jsx)(n.td,{children:"Float"}),(0,t.jsx)(n.td,{children:"The timeout for the HTTP requests."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Show Progress Bar"}),(0,t.jsx)(n.td,{children:"Boolean"}),(0,t.jsxs)(n.td,{children:["Whether to show a progress bar for processing. Default: ",(0,t.jsx)(n.code,{children:"False"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Skip Empty"}),(0,t.jsx)(n.td,{children:"Boolean"}),(0,t.jsxs)(n.td,{children:["Whether to skip empty inputs. Default: ",(0,t.jsx)(n.code,{children:"False"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"TikToken Enable"}),(0,t.jsx)(n.td,{children:"Boolean"}),(0,t.jsxs)(n.td,{children:["Whether to enable TikToken. Default: ",(0,t.jsx)(n.code,{children:"True"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"TikToken Model Name"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsx)(n.td,{children:"The name of the TikToken model."})]})]})]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Outputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"embeddings"}),(0,t.jsx)(n.td,{children:"Embeddings"}),(0,t.jsx)(n.td,{children:"An instance for generating embeddings using OpenAI."})]})})]})]}),"\n",(0,t.jsx)(n.h2,{id:"text-embedder",children:"Text embedder"}),"\n",(0,t.jsx)(n.p,{children:"This component generates embeddings for a given message using a specified embedding model."}),"\n",(0,t.jsxs)(d,{children:[(0,t.jsx)("summary",{children:"Parameters"}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Inputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Display Name"}),(0,t.jsx)(n.th,{children:"Info"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"embedding_model"}),(0,t.jsx)(n.td,{children:"Embedding Model"}),(0,t.jsx)(n.td,{children:"The embedding model to use for generating embeddings."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"message"}),(0,t.jsx)(n.td,{children:"Message"}),(0,t.jsx)(n.td,{children:"The message for which to generate embeddings."})]})]})]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Outputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Display Name"}),(0,t.jsx)(n.th,{children:"Info"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"embeddings"}),(0,t.jsx)(n.td,{children:"Embedding Data"}),(0,t.jsx)(n.td,{children:"A data object containing the original text and its embedding vector."})]})})]})]}),"\n",(0,t.jsx)(n.h2,{id:"vertexai-embeddings",children:"VertexAI Embeddings"}),"\n",(0,t.jsxs)(n.p,{children:["This component is a wrapper around ",(0,t.jsx)(n.a,{href:"https://cloud.google.com/vertex-ai",children:"Google Vertex AI"})," ",(0,t.jsx)(n.a,{href:"https://cloud.google.com/vertex-ai/docs/generative-ai/embeddings/get-text-embeddings",children:"Embeddings API"}),"."]}),"\n",(0,t.jsxs)(d,{children:[(0,t.jsx)("summary",{children:"Parameters"}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Inputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"credentials"}),(0,t.jsx)(n.td,{children:"Credentials"}),(0,t.jsx)(n.td,{children:"The default custom credentials to use."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"location"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsxs)(n.td,{children:["The default location to use when making API calls. Default: ",(0,t.jsx)(n.code,{children:"us-central1"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"max_output_tokens"}),(0,t.jsx)(n.td,{children:"Integer"}),(0,t.jsxs)(n.td,{children:["The token limit determines the maximum amount of text output from one prompt. Default: ",(0,t.jsx)(n.code,{children:"128"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"model_name"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsxs)(n.td,{children:["The name of the Vertex AI large language model. Default: ",(0,t.jsx)(n.code,{children:"text-bison"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"project"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsx)(n.td,{children:"The default GCP project to use when making Vertex API calls."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"request_parallelism"}),(0,t.jsx)(n.td,{children:"Integer"}),(0,t.jsxs)(n.td,{children:["The amount of parallelism allowed for requests issued to VertexAI models. Default: ",(0,t.jsx)(n.code,{children:"5"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"temperature"}),(0,t.jsx)(n.td,{children:"Float"}),(0,t.jsxs)(n.td,{children:["Tunes the degree of randomness in text generations. Should be a non-negative value. Default: ",(0,t.jsx)(n.code,{children:"0"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"top_k"}),(0,t.jsx)(n.td,{children:"Integer"}),(0,t.jsxs)(n.td,{children:["How the model selects tokens for output. The next token is selected from the top ",(0,t.jsx)(n.code,{children:"k"})," tokens. Default: ",(0,t.jsx)(n.code,{children:"40"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"top_p"}),(0,t.jsx)(n.td,{children:"Float"}),(0,t.jsxs)(n.td,{children:["Tokens are selected from the most probable to least until the sum of their probabilities exceeds the top ",(0,t.jsx)(n.code,{children:"p"})," value. Default: ",(0,t.jsx)(n.code,{children:"0.95"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"tuned_model_name"}),(0,t.jsx)(n.td,{children:"String"}),(0,t.jsxs)(n.td,{children:["The name of a tuned model. If provided, ",(0,t.jsx)(n.code,{children:"model_name"})," is ignored."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"verbose"}),(0,t.jsx)(n.td,{children:"Boolean"}),(0,t.jsxs)(n.td,{children:["This parameter controls the level of detail in the output. When set to ",(0,t.jsx)(n.code,{children:"True"}),", it prints internal states of the chain to help debug. Default: ",(0,t.jsx)(n.code,{children:"False"}),"."]})]})]})]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Outputs"})}),(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Name"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"embeddings"}),(0,t.jsx)(n.td,{children:"Embeddings"}),(0,t.jsx)(n.td,{children:"An instance for generating embeddings using VertexAI."})]})})]})]})]})}function x(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(a,{...e})}):a(e)}},80352:(e,n,s)=>{s.d(n,{A:()=>d});const d=s.p+"assets/images/url-component-fb712df73581345c0f344013ce6ff2fd.png"},96425:(e,n,s)=>{s.d(n,{A:()=>d});const d=s.p+"assets/images/component-watsonx-embeddings-chroma-591e45d59ab635d1e1e68ab8036cfed7.png"}}]);
\ No newline at end of file
diff --git a/assets/js/c39b795e.3f04ba13.js b/assets/js/c39b795e.3f04ba13.js
deleted file mode 100644
index cc92234003..0000000000
--- a/assets/js/c39b795e.3f04ba13.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[7338],{17886:(e,t,s)=>{s.d(t,{A:()=>i});s(96540);var n=s(64058),r=s(74848);function i({name:e,...t}){const s=n[e];return s?(0,r.jsx)(s,{...t}):null}},41809:(e,t,s)=>{s.r(t),s.d(t,{CH:()=>a,assets:()=>l,chCodeConfig:()=>x,contentTitle:()=>h,default:()=>p,frontMatter:()=>c,metadata:()=>n,toc:()=>j});const n=JSON.parse('{"id":"Components/components-helpers","title":"Helpers","description":"Helper components provide utility functions to help manage data, tasks, and other components in your flow.","source":"@site/docs/Components/components-helpers.md","sourceDirName":"Components","slug":"/components-helpers","permalink":"/components-helpers","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Helpers","slug":"/components-helpers"},"sidebar":"docs","previous":{"title":"Embeddings","permalink":"/components-embedding-models"},"next":{"title":"Inputs and outputs","permalink":"/components-io"}}');var r=s(74848),i=s(28453),d=s(24754),o=s(17886);const c={title:"Helpers",slug:"/components-helpers"},h="Helper components in Langflow",l={},a={annotations:d.hk,Code:d.Cy},x={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},j=[{value:"Use a helper component in a flow",id:"use-a-helper-component-in-a-flow",level:2},{value:"Batch Run",id:"batch-run",level:2},{value:"Current date",id:"current-date",level:2},{value:"ID Generator",id:"id-generator",level:2},{value:"Message history",id:"message-history",level:2},{value:"Message store",id:"message-store",level:2},{value:"Structured output",id:"structured-output",level:2},{value:"Legacy components",id:"legacy-components",level:2},{value:"Create List",id:"create-list",level:3},{value:"Output Parser",id:"output-parser",level:3},{value:"See also",id:"see-also",level:2}];function u(e){const t={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components},{Details:n}=t;return a||m("CH",!1),a.Code||m("CH.Code",!0),n||m("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.header,{children:(0,r.jsx)(t.h1,{id:"helper-components-in-langflow",children:"Helper components in Langflow"})}),"\n",(0,r.jsx)(t.p,{children:"Helper components provide utility functions to help manage data, tasks, and other components in your flow."}),"\n",(0,r.jsx)(t.h2,{id:"use-a-helper-component-in-a-flow",children:"Use a helper component in a flow"}),"\n",(0,r.jsxs)(t.p,{children:["Chat memory in Langflow is stored either in local Langflow tables with ",(0,r.jsx)(t.code,{children:"LCBufferMemory"}),", or connected to an external database."]}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Store Message"})," helper component stores chat memories as ",(0,r.jsx)(t.a,{href:"/concepts-objects",children:"Data"})," objects, and the ",(0,r.jsx)(t.strong,{children:"Message History"})," helper component retrieves chat messages as data objects or strings."]}),"\n",(0,r.jsxs)(t.p,{children:["This example flow stores and retrieves chat history from an ",(0,r.jsx)(t.a,{href:"/components-memories#astradbchatmemory-component",children:"AstraDBChatMemory"})," component with ",(0,r.jsx)(t.strong,{children:"Store Message"})," and ",(0,r.jsx)(t.strong,{children:"Chat Memory"})," components."]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"Sample Flow storing Chat Memory in AstraDB",src:s(72654).A+"",width:"3178",height:"1228"})}),"\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.strong,{children:"each row"})," of a ",(0,r.jsx)(t.a,{href:"/concepts-objects#dataframe-object",children:"DataFrame"})," text column and returns a new DataFrame with the original text and an LLM response."]}),"\n",(0,r.jsx)(t.p,{children:"The response 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 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 processing order, with a ",(0,r.jsx)(t.code,{children:"0"}),"-based index."]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:"metadata"})," (optional): Additional information about the processing."]}),"\n"]}),"\n",(0,r.jsxs)(t.p,{children:["These columns, when connected to a ",(0,r.jsx)(t.strong,{children:"Parser"})," component, can be used as variables within curly braces."]}),"\n",(0,r.jsxs)(t.p,{children:["To use the Batch Run component with a ",(0,r.jsx)(t.strong,{children:"Parser"})," component, do the following:"]}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["Connect a ",(0,r.jsx)(t.strong,{children:"Model"})," component to the ",(0,r.jsx)(t.strong,{children:"Batch Run"})," component's ",(0,r.jsx)(t.strong,{children:"Language model"})," port."]}),"\n",(0,r.jsxs)(t.li,{children:["Connect a component that outputs DataFrame, like ",(0,r.jsx)(t.strong,{children:"File"})," component, to the ",(0,r.jsx)(t.strong,{children:"Batch Run"})," component's ",(0,r.jsx)(t.strong,{children:"DataFrame"})," input."]}),"\n",(0,r.jsxs)(t.li,{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.\nThe flow looks like this:"]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"A batch run component connected to OpenAI and a Parser",src:s(88103).A+"",width:"1776",height:"1370"})}),"\n",(0,r.jsxs)(t.ol,{start:"4",children:["\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:"Column Name"})," field of the ",(0,r.jsx)(t.strong,{children:"Batch Run"})," component, enter a column name based on the data you're loading from the ",(0,r.jsx)(t.strong,{children:"File"})," loader. For example, to process a column of ",(0,r.jsx)(t.code,{children:"name"}),", enter ",(0,r.jsx)(t.code,{children:"name"}),"."]}),"\n",(0,r.jsxs)(t.li,{children:["Optionally, in the ",(0,r.jsx)(t.strong,{children:"System Message"})," field of the ",(0,r.jsx)(t.strong,{children:"Batch Run"})," component, enter a ",(0,r.jsx)(t.strong,{children:"System Message"})," to instruct the connected LLM on how to process your file. For example, ",(0,r.jsx)(t.code,{children:"Create a business card for each name."})]}),"\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:"Template"})," field of the ",(0,r.jsx)(t.strong,{children:"Parser"})," component, enter a template for using the ",(0,r.jsx)(t.strong,{children:"Batch Run"})," component's new DataFrame columns.\nTo use all three columns from the ",(0,r.jsx)(t.strong,{children:"Batch Run"})," component, include them like this:"]}),"\n"]}),"\n",(0,r.jsx)(a.Code,{codeConfig:x,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",(0,r.jsxs)(t.ol,{start:"7",children:["\n",(0,r.jsxs)(t.li,{children:["To run the flow, in the ",(0,r.jsx)(t.strong,{children:"Parser"})," component, click ",(0,r.jsx)(o.A,{name:"Play","aria-label":"Play icon"}),"."]}),"\n",(0,r.jsxs)(t.li,{children:["To view your created DataFrame, in the ",(0,r.jsx)(t.strong,{children:"Parser"})," component, click ",(0,r.jsx)(o.A,{name:"TextSearch","aria-label":"Inspect icon"}),"."]}),"\n",(0,r.jsxs)(t.li,{children:["Optionally, connect a ",(0,r.jsx)(t.strong,{children:"Chat Output"})," component, and open the ",(0,r.jsx)(t.strong,{children:"Playground"})," to see the output."]}),"\n"]}),"\n",(0,r.jsxs)(n,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"Connect the 'Language Model' output from your LLM component here. 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:"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:"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:"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:["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.jsx)(t.td,{children:"If True, add metadata to the output DataFrame."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(t.tbody,{children:(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:"A DataFrame with all original columns plus the model's response column."})]})})]})]}),"\n",(0,r.jsx)(t.h2,{id:"current-date",children:"Current date"}),"\n",(0,r.jsx)(t.p,{children:"The Current Date component returns the current date and time in a selected timezone. This component provides a flexible way to obtain timezone-specific date and time information within a Langflow pipeline."}),"\n",(0,r.jsxs)(n,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"timezone"}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsx)(t.td,{children:"The timezone for the current date and time."})]})})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"current_date"}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsx)(t.td,{children:"The resulting current date and time in the selected timezone."})]})})]})]}),"\n",(0,r.jsx)(t.h2,{id:"id-generator",children:"ID Generator"}),"\n",(0,r.jsx)(t.p,{children:"This component generates a unique ID."}),"\n",(0,r.jsxs)(n,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"unique_id"}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsx)(t.td,{children:"The generated unique ID."})]})})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"id"}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsx)(t.td,{children:"The generated unique ID."})]})})]})]}),"\n",(0,r.jsx)(t.h2,{id:"message-history",children:"Message history"}),"\n",(0,r.jsx)(t.admonition,{type:"info",children:(0,r.jsx)(t.p,{children:"Prior to Langflow 1.1, this component was known as the Chat Memory component."})}),"\n",(0,r.jsx)(t.p,{children:"This component retrieves chat messages from Langflow tables or external memory."}),"\n",(0,r.jsxs)(t.p,{children:["In this example, the ",(0,r.jsx)(t.strong,{children:"Message Store"})," component stores the complete chat history in a local Langflow table, which the ",(0,r.jsx)(t.strong,{children:"Message History"})," component retrieves as context for the LLM to answer each question."]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"Message store and history components",src:s(77111).A+"",width:"2778",height:"1166"})}),"\n",(0,r.jsxs)(t.p,{children:["For more information on configuring memory in Langflow, see ",(0,r.jsx)(t.a,{href:"/memory",children:"Memory"}),"."]}),"\n",(0,r.jsxs)(n,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"memory"}),(0,r.jsx)(t.td,{children:"Memory"}),(0,r.jsx)(t.td,{children:"Retrieve messages from an external memory. If empty, the Langflow tables are used."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"sender"}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsx)(t.td,{children:"Filter by sender type."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"sender_name"}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsx)(t.td,{children:"Filter by sender name."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"n_messages"}),(0,r.jsx)(t.td,{children:"Integer"}),(0,r.jsx)(t.td,{children:"The number of messages to retrieve."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"session_id"}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsx)(t.td,{children:"The session ID of the chat. If empty, the current session ID parameter is used."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"order"}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsx)(t.td,{children:"The order of the messages."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"template"}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsxs)(t.td,{children:["The template to use for formatting the data. It can contain the keys ",(0,r.jsx)(t.code,{children:"{text}"}),", ",(0,r.jsx)(t.code,{children:"{sender}"})," or any other key in the message data."]})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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:"messages"}),(0,r.jsx)(t.td,{children:"Data"}),(0,r.jsx)(t.td,{children:"The retrieved messages as Data objects."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"messages_text"}),(0,r.jsx)(t.td,{children:"Message"}),(0,r.jsx)(t.td,{children:"The retrieved messages formatted as text."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"dataframe"}),(0,r.jsx)(t.td,{children:"DataFrame"}),(0,r.jsx)(t.td,{children:"A DataFrame containing the message data."})]})]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"message-store",children:"Message store"}),"\n",(0,r.jsx)(t.p,{children:"This component stores chat messages or text in Langflow tables or external memory."}),"\n",(0,r.jsxs)(t.p,{children:["In this example, the ",(0,r.jsx)(t.strong,{children:"Message Store"})," component stores the complete chat history in a local Langflow table, which the ",(0,r.jsx)(t.strong,{children:"Message History"})," component retrieves as context for the LLM to answer each question."]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"Message store and history components",src:s(77111).A+"",width:"2778",height:"1166"})}),"\n",(0,r.jsxs)(t.p,{children:["For more information on configuring memory in Langflow, see ",(0,r.jsx)(t.a,{href:"/memory",children:"Memory"}),"."]}),"\n",(0,r.jsxs)(n,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"message"}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsx)(t.td,{children:"The chat message to be stored. (Required)"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"memory"}),(0,r.jsx)(t.td,{children:"Memory"}),(0,r.jsx)(t.td,{children:"The external memory to store the message. If empty, the Langflow tables are used."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"sender"}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsx)(t.td,{children:"The sender of the message. Can be Machine or User. If empty, the current sender parameter is used."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"sender_name"}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsx)(t.td,{children:"The name of the sender. Can be AI or User. If empty, the current sender parameter is used."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"session_id"}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsx)(t.td,{children:"The session ID of the chat. If empty, the current session ID parameter is used."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"stored_messages"}),(0,r.jsx)(t.td,{children:"List[Data]"}),(0,r.jsx)(t.td,{children:"The list of stored messages after the current message has been added."})]})})]})]}),"\n",(0,r.jsx)(t.h2,{id:"structured-output",children:"Structured output"}),"\n",(0,r.jsx)(t.p,{children:"This component transforms LLM responses into structured data formats."}),"\n",(0,r.jsxs)(t.p,{children:["In this example from the ",(0,r.jsx)(t.strong,{children:"Financial Report Parser"})," template, the ",(0,r.jsx)(t.strong,{children:"Structured Output"})," component transforms unstructured financial reports into structured data."]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"Structured output example",src:s(82798).A+"",width:"2554",height:"1548"})}),"\n",(0,r.jsxs)(t.p,{children:["The connected LLM model is prompted by the ",(0,r.jsx)(t.strong,{children:"Structured Output"})," component's ",(0,r.jsx)(t.code,{children:"Format Instructions"})," parameter to extract structured output from the unstructured text. ",(0,r.jsx)(t.code,{children:"Format Instructions"})," is utilized as the system prompt for the ",(0,r.jsx)(t.strong,{children:"Structured Output"})," component."]}),"\n",(0,r.jsxs)(t.p,{children:["In the ",(0,r.jsx)(t.strong,{children:"Structured Output"})," component, click the ",(0,r.jsx)(t.strong,{children:"Open table"})," button to view the ",(0,r.jsx)(t.code,{children:"Output Schema"})," table.\nThe ",(0,r.jsx)(t.code,{children:"Output Schema"})," parameter defines the structure and data types for the model's output using a table with the following fields:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Name"}),": The name of the output field."]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Description"}),": The purpose of the output field."]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Type"}),": The data type of the output field. The available types are ",(0,r.jsx)(t.code,{children:"str"}),", ",(0,r.jsx)(t.code,{children:"int"}),", ",(0,r.jsx)(t.code,{children:"float"}),", ",(0,r.jsx)(t.code,{children:"bool"}),", ",(0,r.jsx)(t.code,{children:"list"}),", or ",(0,r.jsx)(t.code,{children:"dict"}),". The default is ",(0,r.jsx)(t.code,{children:"text"}),"."]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Multiple"}),": This feature is deprecated. Currently, it is set to ",(0,r.jsx)(t.code,{children:"True"})," by default if you expect multiple values for a single field. For example, a ",(0,r.jsx)(t.code,{children:"list"})," of ",(0,r.jsx)(t.code,{children:"features"})," is set to ",(0,r.jsx)(t.code,{children:"True"})," to contain multiple values, such as ",(0,r.jsx)(t.code,{children:'["waterproof", "durable", "lightweight"]'}),". Default: ",(0,r.jsx)(t.code,{children:"True"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Parser"})," component parses the structured output into a template for orderly presentation in chat output. The template receives the values from the ",(0,r.jsx)(t.code,{children:"output_schema"})," table with curly braces."]}),"\n",(0,r.jsxs)(t.p,{children:["For example, the template ",(0,r.jsx)(t.code,{children:"EBITDA: {EBITDA} , Net Income: {NET_INCOME} , GROSS_PROFIT: {GROSS_PROFIT}"})," presents the extracted values in the ",(0,r.jsx)(t.strong,{children:"Playground"})," as ",(0,r.jsx)(t.code,{children:"EBITDA: 900 million , Net Income: 500 million , GROSS_PROFIT: 1.2 billion"}),"."]}),"\n",(0,r.jsxs)(n,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"llm"}),(0,r.jsx)(t.td,{children:"LanguageModel"}),(0,r.jsx)(t.td,{children:"The language model to use to generate the structured output."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"input_value"}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsx)(t.td,{children:"The input message to the language model."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"system_prompt"}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsx)(t.td,{children:"The instructions to the language model for formatting the output."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"schema_name"}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsx)(t.td,{children:"The name for the output data schema."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"output_schema"}),(0,r.jsx)(t.td,{children:"Table"}),(0,r.jsx)(t.td,{children:"The structure and data types for the model's output."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"multiple"}),(0,r.jsx)(t.td,{children:"Boolean"}),(0,r.jsxs)(t.td,{children:["[Deprecated] Always set to ",(0,r.jsx)(t.code,{children:"True"}),"."]})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"structured_output"}),(0,r.jsx)(t.td,{children:"Data"}),(0,r.jsx)(t.td,{children:"The structured output is a Data object based on the defined schema."})]})})]})]}),"\n",(0,r.jsx)(t.h2,{id:"legacy-components",children:"Legacy components"}),"\n",(0,r.jsx)(t.p,{children:"Legacy components are available for use but are no longer supported."}),"\n",(0,r.jsx)(t.h3,{id:"create-list",children:"Create List"}),"\n",(0,r.jsx)(t.p,{children:"This component dynamically creates a record with a specified number of fields."}),"\n",(0,r.jsxs)(n,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"n_fields"}),(0,r.jsx)(t.td,{children:"Integer"}),(0,r.jsx)(t.td,{children:"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:"String"}),(0,r.jsx)(t.td,{children:"The key used as text."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"list"}),(0,r.jsx)(t.td,{children:"List"}),(0,r.jsx)(t.td,{children:"The dynamically created list with the specified number of fields."})]})})]})]}),"\n",(0,r.jsx)(t.h3,{id:"output-parser",children:"Output Parser"}),"\n",(0,r.jsxs)(t.p,{children:["This component transforms the output of a language model into a specified format. It supports CSV format parsing, which converts LLM responses into comma-separated lists using Langchain's ",(0,r.jsx)(t.code,{children:"CommaSeparatedListOutputParser"}),"."]}),"\n",(0,r.jsx)(t.admonition,{type:"note",children:(0,r.jsx)(t.p,{children:"This component only provides formatting instructions and parsing functionality. It does not include a prompt. You'll need to connect it to a separate Prompt component to create the actual prompt template for the LLM to use."})}),"\n",(0,r.jsxs)(t.p,{children:["Both the ",(0,r.jsx)(t.strong,{children:"Output Parser"})," and ",(0,r.jsx)(t.strong,{children:"Structured Output"})," components format LLM responses, but they have different use cases.\nThe ",(0,r.jsx)(t.strong,{children:"Output Parser"})," is simpler and focused on converting responses into comma-separated lists. Use this when you just need a list of items, for example ",(0,r.jsx)(t.code,{children:'["item1", "item2", "item3"]'}),".\nThe ",(0,r.jsx)(t.strong,{children:"Structured Output"})," is more complex and flexible, and allows you to define custom schemas with multiple fields of different types. Use this when you need to extract structured data with specific fields and types."]}),"\n",(0,r.jsx)(t.p,{children:"To use this component:"}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["Create a Prompt component and connect the Output Parser's ",(0,r.jsx)(t.code,{children:"format_instructions"})," output to it. This ensures the LLM knows how to format its response."]}),"\n",(0,r.jsxs)(t.li,{children:["Write your actual prompt text in the Prompt component, including the ",(0,r.jsx)(t.code,{children:"{format_instructions}"})," variable.\nFor example, in your Prompt component, the template might look like:"]}),"\n"]}),"\n",(0,r.jsx)(a.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"{format_instructions}",props:{}}]},{tokens:[{content:"Please list three fruits.",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsxs)(t.ol,{start:"3",children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Connect the ",(0,r.jsx)(t.code,{children:"output_parser"})," output to your LLM model."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["The output parser converts this into a Python list: ",(0,r.jsx)(t.code,{children:'["apple", "banana", "orange"]'}),"."]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"parser_type"}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsx)(t.td,{children:'The parser type. Currently supports "CSV".'})]})})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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:"format_instructions"}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsx)(t.td,{children:"Pass to a prompt template to include formatting instructions for LLM responses."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"output_parser"}),(0,r.jsx)(t.td,{children:"Parser"}),(0,r.jsx)(t.td,{children:"The constructed output parser that can be used to parse LLM responses."})]})]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"see-also",children:"See also"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.a,{href:"/session-id",children:"Session ID"})}),"\n"]})]})}function p(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}function m(e,t){throw new Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}},72654:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/astra_db_chat_memory_rounded-9746ca2bb69d3b07ac0a071f4b9471b3.png"},77111:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/component-message-history-message-store-be0396aefa69496e8bc21452d240e04d.png"},82798:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/component-structured-output-7bb5a996464cb83d4c94a893419bb176.png"},88103:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/component-batch-run-0ad3fa6f082eb01504dae7df3cc4daad.png"}}]);
\ No newline at end of file
diff --git a/assets/js/c39b795e.90d69f0f.js b/assets/js/c39b795e.90d69f0f.js
new file mode 100644
index 0000000000..21dcc4ae11
--- /dev/null
+++ b/assets/js/c39b795e.90d69f0f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[7338],{17886:(e,t,s)=>{s.d(t,{A:()=>d});s(96540);var n=s(64058),r=s(74848);function d({name:e,...t}){const s=n[e];return s?(0,r.jsx)(s,{...t}):null}},41809:(e,t,s)=>{s.r(t),s.d(t,{CH:()=>a,assets:()=>l,chCodeConfig:()=>x,contentTitle:()=>h,default:()=>p,frontMatter:()=>c,metadata:()=>n,toc:()=>j});const n=JSON.parse('{"id":"Components/components-helpers","title":"Helpers","description":"Helper components provide utility functions to help manage data, tasks, and other components in your flow.","source":"@site/docs/Components/components-helpers.md","sourceDirName":"Components","slug":"/components-helpers","permalink":"/components-helpers","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Helpers","slug":"/components-helpers"},"sidebar":"docs","previous":{"title":"Embeddings","permalink":"/components-embedding-models"},"next":{"title":"Inputs and outputs","permalink":"/components-io"}}');var r=s(74848),d=s(28453),i=s(24754),o=s(17886);const c={title:"Helpers",slug:"/components-helpers"},h="Helper components in Langflow",l={},a={annotations:i.hk,Code:i.Cy},x={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},j=[{value:"Use a helper component in a flow",id:"use-a-helper-component-in-a-flow",level:2},{value:"Batch Run",id:"batch-run",level:2},{value:"Current date",id:"current-date",level:2},{value:"ID Generator",id:"id-generator",level:2},{value:"Message history",id:"message-history",level:2},{value:"Message store",id:"message-store",level:2},{value:"Structured output",id:"structured-output",level:2},{value:"Legacy components",id:"legacy-components",level:2},{value:"Create List",id:"create-list",level:3},{value:"Output Parser",id:"output-parser",level:3},{value:"See also",id:"see-also",level:2}];function u(e){const t={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,d.R)(),...e.components},{Details:n}=t;return a||m("CH",!1),a.Code||m("CH.Code",!0),n||m("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.header,{children:(0,r.jsx)(t.h1,{id:"helper-components-in-langflow",children:"Helper components in Langflow"})}),"\n",(0,r.jsx)(t.p,{children:"Helper components provide utility functions to help manage data, tasks, and other components in your flow."}),"\n",(0,r.jsx)(t.h2,{id:"use-a-helper-component-in-a-flow",children:"Use a helper component in a flow"}),"\n",(0,r.jsxs)(t.p,{children:["Chat memory in Langflow is stored either in local Langflow tables with ",(0,r.jsx)(t.code,{children:"LCBufferMemory"}),", or connected to an external database."]}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Store Message"})," helper component stores chat memories as ",(0,r.jsx)(t.a,{href:"/concepts-objects",children:"Data"})," objects, and the ",(0,r.jsx)(t.strong,{children:"Message History"})," helper component retrieves chat messages as data objects or strings."]}),"\n",(0,r.jsxs)(t.p,{children:["This example flow stores and retrieves chat history from an ",(0,r.jsx)(t.a,{href:"/components-memories#astradbchatmemory-component",children:"AstraDBChatMemory"})," component with ",(0,r.jsx)(t.strong,{children:"Store Message"})," and ",(0,r.jsx)(t.strong,{children:"Chat Memory"})," components."]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"Sample Flow storing Chat Memory in AstraDB",src:s(72654).A+"",width:"3178",height:"1228"})}),"\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.strong,{children:"each row"})," of a ",(0,r.jsx)(t.a,{href:"/concepts-objects#dataframe-object",children:"DataFrame"})," text column and returns a new DataFrame with the original text and an LLM response."]}),"\n",(0,r.jsx)(t.p,{children:"The response 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 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 processing order, with a ",(0,r.jsx)(t.code,{children:"0"}),"-based index."]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:"metadata"})," (optional): Additional information about the processing."]}),"\n"]}),"\n",(0,r.jsxs)(t.p,{children:["These columns, when connected to a ",(0,r.jsx)(t.strong,{children:"Parser"})," component, can be used as variables within curly braces."]}),"\n",(0,r.jsxs)(t.p,{children:["To use the Batch Run component with a ",(0,r.jsx)(t.strong,{children:"Parser"})," component, do the following:"]}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["Connect a ",(0,r.jsx)(t.strong,{children:"Model"})," component to the ",(0,r.jsx)(t.strong,{children:"Batch Run"})," component's ",(0,r.jsx)(t.strong,{children:"Language model"})," port."]}),"\n",(0,r.jsxs)(t.li,{children:["Connect a component that outputs DataFrame, like ",(0,r.jsx)(t.strong,{children:"File"})," component, to the ",(0,r.jsx)(t.strong,{children:"Batch Run"})," component's ",(0,r.jsx)(t.strong,{children:"DataFrame"})," input."]}),"\n",(0,r.jsxs)(t.li,{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.\nThe flow looks like this:"]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"A batch run component connected to OpenAI and a Parser",src:s(88103).A+"",width:"1776",height:"1370"})}),"\n",(0,r.jsxs)(t.ol,{start:"4",children:["\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:"Column Name"})," field of the ",(0,r.jsx)(t.strong,{children:"Batch Run"})," component, enter a column name based on the data you're loading from the ",(0,r.jsx)(t.strong,{children:"File"})," loader. For example, to process a column of ",(0,r.jsx)(t.code,{children:"name"}),", enter ",(0,r.jsx)(t.code,{children:"name"}),"."]}),"\n",(0,r.jsxs)(t.li,{children:["Optionally, in the ",(0,r.jsx)(t.strong,{children:"System Message"})," field of the ",(0,r.jsx)(t.strong,{children:"Batch Run"})," component, enter a ",(0,r.jsx)(t.strong,{children:"System Message"})," to instruct the connected LLM on how to process your file. For example, ",(0,r.jsx)(t.code,{children:"Create a business card for each name."})]}),"\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:"Template"})," field of the ",(0,r.jsx)(t.strong,{children:"Parser"})," component, enter a template for using the ",(0,r.jsx)(t.strong,{children:"Batch Run"})," component's new DataFrame columns.\nTo use all three columns from the ",(0,r.jsx)(t.strong,{children:"Batch Run"})," component, include them like this:"]}),"\n"]}),"\n",(0,r.jsx)(a.Code,{codeConfig:x,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",(0,r.jsxs)(t.ol,{start:"7",children:["\n",(0,r.jsxs)(t.li,{children:["To run the flow, in the ",(0,r.jsx)(t.strong,{children:"Parser"})," component, click ",(0,r.jsx)(o.A,{name:"Play","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Run component"}),"."]}),"\n",(0,r.jsxs)(t.li,{children:["To view your created DataFrame, in the ",(0,r.jsx)(t.strong,{children:"Parser"})," component, click ",(0,r.jsx)(o.A,{name:"TextSearch","aria-hidden":"true"}),"."]}),"\n",(0,r.jsxs)(t.li,{children:["Optionally, connect a ",(0,r.jsx)(t.strong,{children:"Chat Output"})," component, and open the ",(0,r.jsx)(t.strong,{children:"Playground"})," to see the output."]}),"\n"]}),"\n",(0,r.jsxs)(n,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"Connect the 'Language Model' output from your LLM component here. 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:"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:"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:"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:["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.jsx)(t.td,{children:"If True, add metadata to the output DataFrame."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(t.tbody,{children:(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:"A DataFrame with all original columns plus the model's response column."})]})})]})]}),"\n",(0,r.jsx)(t.h2,{id:"current-date",children:"Current date"}),"\n",(0,r.jsx)(t.p,{children:"The Current Date component returns the current date and time in a selected timezone. This component provides a flexible way to obtain timezone-specific date and time information within a Langflow pipeline."}),"\n",(0,r.jsxs)(n,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"timezone"}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsx)(t.td,{children:"The timezone for the current date and time."})]})})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"current_date"}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsx)(t.td,{children:"The resulting current date and time in the selected timezone."})]})})]})]}),"\n",(0,r.jsx)(t.h2,{id:"id-generator",children:"ID Generator"}),"\n",(0,r.jsx)(t.p,{children:"This component generates a unique ID."}),"\n",(0,r.jsxs)(n,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"unique_id"}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsx)(t.td,{children:"The generated unique ID."})]})})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"id"}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsx)(t.td,{children:"The generated unique ID."})]})})]})]}),"\n",(0,r.jsx)(t.h2,{id:"message-history",children:"Message history"}),"\n",(0,r.jsx)(t.admonition,{type:"info",children:(0,r.jsx)(t.p,{children:"Prior to Langflow 1.1, this component was known as the Chat Memory component."})}),"\n",(0,r.jsx)(t.p,{children:"This component retrieves chat messages from Langflow tables or external memory."}),"\n",(0,r.jsxs)(t.p,{children:["In this example, the ",(0,r.jsx)(t.strong,{children:"Message Store"})," component stores the complete chat history in a local Langflow table, which the ",(0,r.jsx)(t.strong,{children:"Message History"})," component retrieves as context for the LLM to answer each question."]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"Message store and history components",src:s(77111).A+"",width:"2778",height:"1166"})}),"\n",(0,r.jsxs)(t.p,{children:["For more information on configuring memory in Langflow, see ",(0,r.jsx)(t.a,{href:"/memory",children:"Memory"}),"."]}),"\n",(0,r.jsxs)(n,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"memory"}),(0,r.jsx)(t.td,{children:"Memory"}),(0,r.jsx)(t.td,{children:"Retrieve messages from an external memory. If empty, the Langflow tables are used."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"sender"}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsx)(t.td,{children:"Filter by sender type."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"sender_name"}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsx)(t.td,{children:"Filter by sender name."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"n_messages"}),(0,r.jsx)(t.td,{children:"Integer"}),(0,r.jsx)(t.td,{children:"The number of messages to retrieve."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"session_id"}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsx)(t.td,{children:"The session ID of the chat. If empty, the current session ID parameter is used."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"order"}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsx)(t.td,{children:"The order of the messages."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"template"}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsxs)(t.td,{children:["The template to use for formatting the data. It can contain the keys ",(0,r.jsx)(t.code,{children:"{text}"}),", ",(0,r.jsx)(t.code,{children:"{sender}"})," or any other key in the message data."]})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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:"messages"}),(0,r.jsx)(t.td,{children:"Data"}),(0,r.jsx)(t.td,{children:"The retrieved messages as Data objects."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"messages_text"}),(0,r.jsx)(t.td,{children:"Message"}),(0,r.jsx)(t.td,{children:"The retrieved messages formatted as text."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"dataframe"}),(0,r.jsx)(t.td,{children:"DataFrame"}),(0,r.jsx)(t.td,{children:"A DataFrame containing the message data."})]})]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"message-store",children:"Message store"}),"\n",(0,r.jsx)(t.p,{children:"This component stores chat messages or text in Langflow tables or external memory."}),"\n",(0,r.jsxs)(t.p,{children:["In this example, the ",(0,r.jsx)(t.strong,{children:"Message Store"})," component stores the complete chat history in a local Langflow table, which the ",(0,r.jsx)(t.strong,{children:"Message History"})," component retrieves as context for the LLM to answer each question."]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"Message store and history components",src:s(77111).A+"",width:"2778",height:"1166"})}),"\n",(0,r.jsxs)(t.p,{children:["For more information on configuring memory in Langflow, see ",(0,r.jsx)(t.a,{href:"/memory",children:"Memory"}),"."]}),"\n",(0,r.jsxs)(n,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"message"}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsx)(t.td,{children:"The chat message to be stored. (Required)"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"memory"}),(0,r.jsx)(t.td,{children:"Memory"}),(0,r.jsx)(t.td,{children:"The external memory to store the message. If empty, the Langflow tables are used."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"sender"}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsx)(t.td,{children:"The sender of the message. Can be Machine or User. If empty, the current sender parameter is used."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"sender_name"}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsx)(t.td,{children:"The name of the sender. Can be AI or User. If empty, the current sender parameter is used."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"session_id"}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsx)(t.td,{children:"The session ID of the chat. If empty, the current session ID parameter is used."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"stored_messages"}),(0,r.jsx)(t.td,{children:"List[Data]"}),(0,r.jsx)(t.td,{children:"The list of stored messages after the current message has been added."})]})})]})]}),"\n",(0,r.jsx)(t.h2,{id:"structured-output",children:"Structured output"}),"\n",(0,r.jsx)(t.p,{children:"This component transforms LLM responses into structured data formats."}),"\n",(0,r.jsxs)(t.p,{children:["In this example from the ",(0,r.jsx)(t.strong,{children:"Financial Report Parser"})," template, the ",(0,r.jsx)(t.strong,{children:"Structured Output"})," component transforms unstructured financial reports into structured data."]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"Structured output example",src:s(82798).A+"",width:"2554",height:"1548"})}),"\n",(0,r.jsxs)(t.p,{children:["The connected LLM model is prompted by the ",(0,r.jsx)(t.strong,{children:"Structured Output"})," component's ",(0,r.jsx)(t.code,{children:"Format Instructions"})," parameter to extract structured output from the unstructured text. ",(0,r.jsx)(t.code,{children:"Format Instructions"})," is utilized as the system prompt for the ",(0,r.jsx)(t.strong,{children:"Structured Output"})," component."]}),"\n",(0,r.jsxs)(t.p,{children:["In the ",(0,r.jsx)(t.strong,{children:"Structured Output"})," component, click the ",(0,r.jsx)(t.strong,{children:"Open table"})," button to view the ",(0,r.jsx)(t.code,{children:"Output Schema"})," table.\nThe ",(0,r.jsx)(t.code,{children:"Output Schema"})," parameter defines the structure and data types for the model's output using a table with the following fields:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Name"}),": The name of the output field."]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Description"}),": The purpose of the output field."]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Type"}),": The data type of the output field. The available types are ",(0,r.jsx)(t.code,{children:"str"}),", ",(0,r.jsx)(t.code,{children:"int"}),", ",(0,r.jsx)(t.code,{children:"float"}),", ",(0,r.jsx)(t.code,{children:"bool"}),", ",(0,r.jsx)(t.code,{children:"list"}),", or ",(0,r.jsx)(t.code,{children:"dict"}),". The default is ",(0,r.jsx)(t.code,{children:"text"}),"."]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Multiple"}),": This feature is deprecated. Currently, it is set to ",(0,r.jsx)(t.code,{children:"True"})," by default if you expect multiple values for a single field. For example, a ",(0,r.jsx)(t.code,{children:"list"})," of ",(0,r.jsx)(t.code,{children:"features"})," is set to ",(0,r.jsx)(t.code,{children:"True"})," to contain multiple values, such as ",(0,r.jsx)(t.code,{children:'["waterproof", "durable", "lightweight"]'}),". Default: ",(0,r.jsx)(t.code,{children:"True"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Parser"})," component parses the structured output into a template for orderly presentation in chat output. The template receives the values from the ",(0,r.jsx)(t.code,{children:"output_schema"})," table with curly braces."]}),"\n",(0,r.jsxs)(t.p,{children:["For example, the template ",(0,r.jsx)(t.code,{children:"EBITDA: {EBITDA} , Net Income: {NET_INCOME} , GROSS_PROFIT: {GROSS_PROFIT}"})," presents the extracted values in the ",(0,r.jsx)(t.strong,{children:"Playground"})," as ",(0,r.jsx)(t.code,{children:"EBITDA: 900 million , Net Income: 500 million , GROSS_PROFIT: 1.2 billion"}),"."]}),"\n",(0,r.jsxs)(n,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"llm"}),(0,r.jsx)(t.td,{children:"LanguageModel"}),(0,r.jsx)(t.td,{children:"The language model to use to generate the structured output."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"input_value"}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsx)(t.td,{children:"The input message to the language model."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"system_prompt"}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsx)(t.td,{children:"The instructions to the language model for formatting the output."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"schema_name"}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsx)(t.td,{children:"The name for the output data schema."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"output_schema"}),(0,r.jsx)(t.td,{children:"Table"}),(0,r.jsx)(t.td,{children:"The structure and data types for the model's output."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"multiple"}),(0,r.jsx)(t.td,{children:"Boolean"}),(0,r.jsxs)(t.td,{children:["[Deprecated] Always set to ",(0,r.jsx)(t.code,{children:"True"}),"."]})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"structured_output"}),(0,r.jsx)(t.td,{children:"Data"}),(0,r.jsx)(t.td,{children:"The structured output is a Data object based on the defined schema."})]})})]})]}),"\n",(0,r.jsx)(t.h2,{id:"legacy-components",children:"Legacy components"}),"\n",(0,r.jsx)(t.p,{children:"Legacy components are available for use but are no longer supported."}),"\n",(0,r.jsx)(t.h3,{id:"create-list",children:"Create List"}),"\n",(0,r.jsx)(t.p,{children:"This component dynamically creates a record with a specified number of fields."}),"\n",(0,r.jsxs)(n,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"n_fields"}),(0,r.jsx)(t.td,{children:"Integer"}),(0,r.jsx)(t.td,{children:"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:"String"}),(0,r.jsx)(t.td,{children:"The key used as text."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"list"}),(0,r.jsx)(t.td,{children:"List"}),(0,r.jsx)(t.td,{children:"The dynamically created list with the specified number of fields."})]})})]})]}),"\n",(0,r.jsx)(t.h3,{id:"output-parser",children:"Output Parser"}),"\n",(0,r.jsxs)(t.p,{children:["This component transforms the output of a language model into a specified format. It supports CSV format parsing, which converts LLM responses into comma-separated lists using Langchain's ",(0,r.jsx)(t.code,{children:"CommaSeparatedListOutputParser"}),"."]}),"\n",(0,r.jsx)(t.admonition,{type:"note",children:(0,r.jsx)(t.p,{children:"This component only provides formatting instructions and parsing functionality. It does not include a prompt. You'll need to connect it to a separate Prompt component to create the actual prompt template for the LLM to use."})}),"\n",(0,r.jsxs)(t.p,{children:["Both the ",(0,r.jsx)(t.strong,{children:"Output Parser"})," and ",(0,r.jsx)(t.strong,{children:"Structured Output"})," components format LLM responses, but they have different use cases.\nThe ",(0,r.jsx)(t.strong,{children:"Output Parser"})," is simpler and focused on converting responses into comma-separated lists. Use this when you just need a list of items, for example ",(0,r.jsx)(t.code,{children:'["item1", "item2", "item3"]'}),".\nThe ",(0,r.jsx)(t.strong,{children:"Structured Output"})," is more complex and flexible, and allows you to define custom schemas with multiple fields of different types. Use this when you need to extract structured data with specific fields and types."]}),"\n",(0,r.jsx)(t.p,{children:"To use this component:"}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["Create a Prompt component and connect the Output Parser's ",(0,r.jsx)(t.code,{children:"format_instructions"})," output to it. This ensures the LLM knows how to format its response."]}),"\n",(0,r.jsxs)(t.li,{children:["Write your actual prompt text in the Prompt component, including the ",(0,r.jsx)(t.code,{children:"{format_instructions}"})," variable.\nFor example, in your Prompt component, the template might look like:"]}),"\n"]}),"\n",(0,r.jsx)(a.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"{format_instructions}",props:{}}]},{tokens:[{content:"Please list three fruits.",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsxs)(t.ol,{start:"3",children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Connect the ",(0,r.jsx)(t.code,{children:"output_parser"})," output to your LLM model."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["The output parser converts this into a Python list: ",(0,r.jsx)(t.code,{children:'["apple", "banana", "orange"]'}),"."]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"parser_type"}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsx)(t.td,{children:'The parser type. Currently supports "CSV".'})]})})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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:"format_instructions"}),(0,r.jsx)(t.td,{children:"String"}),(0,r.jsx)(t.td,{children:"Pass to a prompt template to include formatting instructions for LLM responses."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"output_parser"}),(0,r.jsx)(t.td,{children:"Parser"}),(0,r.jsx)(t.td,{children:"The constructed output parser that can be used to parse LLM responses."})]})]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"see-also",children:"See also"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.a,{href:"/session-id",children:"Session ID"})}),"\n"]})]})}function p(e={}){const{wrapper:t}={...(0,d.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}function m(e,t){throw new Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}},72654:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/astra_db_chat_memory_rounded-9746ca2bb69d3b07ac0a071f4b9471b3.png"},77111:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/component-message-history-message-store-be0396aefa69496e8bc21452d240e04d.png"},82798:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/component-structured-output-7bb5a996464cb83d4c94a893419bb176.png"},88103:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/component-batch-run-0ad3fa6f082eb01504dae7df3cc4daad.png"}}]);
\ No newline at end of file
diff --git a/assets/js/e6c6a4d2.74acbc05.js b/assets/js/e6c6a4d2.ec93064c.js
similarity index 55%
rename from assets/js/e6c6a4d2.74acbc05.js
rename to assets/js/e6c6a4d2.ec93064c.js
index 35c788f606..d982368a03 100644
--- a/assets/js/e6c6a4d2.74acbc05.js
+++ b/assets/js/e6c6a4d2.ec93064c.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.4.3"},"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 \\"aute0\\": \\"\\"\\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.4.3"},"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 \\"commodo_6\\": \\"\\",\\n \\"laborum_1f1\\": \\"\\"\\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/f66238ae.1d66c778.js b/assets/js/f66238ae.1d66c778.js
new file mode 100644
index 0000000000..266f20ce6b
--- /dev/null
+++ b/assets/js/f66238ae.1d66c778.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[3391],{230:(e,r,t)=>{t.r(r),t.d(r,{CH:()=>o,assets:()=>a,chCodeConfig:()=>x,contentTitle:()=>l,default:()=>u,frontMatter:()=>h,metadata:()=>s,toc:()=>j});const s=JSON.parse('{"id":"Components/components-vector-stores","title":"Vector stores","description":"Vector databases store vector data, which backs AI workloads like chatbots and Retrieval Augmented Generation.","source":"@site/docs/Components/components-vector-stores.md","sourceDirName":"Components","slug":"/components-vector-stores","permalink":"/components-vector-stores","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Vector stores","slug":"/components-vector-stores"},"sidebar":"docs","previous":{"title":"Tools","permalink":"/components-tools"},"next":{"title":"Use Langflow Agents","permalink":"/agents"}}');var n=t(74848),d=t(28453),i=t(24754),c=t(17886);const h={title:"Vector stores",slug:"/components-vector-stores"},l="Vector store components in Langflow",a={},o={annotations:i.hk,Code:i.Cy},x={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},j=[{value:"Use a vector store component in a flow",id:"use-a-vector-store-component-in-a-flow",level:2},{value:"Astra DB Vector Store",id:"astra-db-vector-store",level:2},{value:"Generate embeddings",id:"generate-embeddings",level:3},{value:"Hybrid search",id:"hybrid-search",level:3},{value:"AstraDB Graph vector store",id:"astradb-graph-vector-store",level:2},{value:"Cassandra",id:"cassandra",level:2},{value:"Cassandra Graph Vector Store",id:"cassandra-graph-vector-store",level:2},{value:"Chroma DB",id:"chroma-db",level:2},{value:"Clickhouse",id:"clickhouse",level:2},{value:"Couchbase",id:"couchbase",level:2},{value:"Local DB",id:"local-db",level:2},{value:"Elasticsearch",id:"elasticsearch",level:2},{value:"FAISS",id:"faiss",level:2},{value:"Graph RAG",id:"graph-rag",level:2},{value:"Hyper-Converged Database (HCD)",id:"hyper-converged-database-hcd",level:2},{value:"Milvus",id:"milvus",level:2},{value:"MongoDB Atlas",id:"mongodb-atlas",level:2},{value:"Opensearch",id:"opensearch",level:2},{value:"PGVector",id:"pgvector",level:2},{value:"Pinecone",id:"pinecone",level:2},{value:"Qdrant",id:"qdrant",level:2},{value:"Redis",id:"redis",level:2},{value:"Supabase",id:"supabase",level:2},{value:"Upstash",id:"upstash",level:2},{value:"Vectara",id:"vectara",level:2},{value:"Vectara Search",id:"vectara-search",level:2},{value:"Weaviate",id:"weaviate",level:2},{value:"Weaviate Search",id:"weaviate-search",level:2}];function m(e){const r={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,d.R)(),...e.components},{Details:s}=r;return o||p("CH",!1),o.Code||p("CH.Code",!0),s||p("Details",!0),(0,n.jsxs)(n.Fragment,{children:[(0,n.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,n.jsx)(r.header,{children:(0,n.jsx)(r.h1,{id:"vector-store-components-in-langflow",children:"Vector store components in Langflow"})}),"\n",(0,n.jsx)(r.p,{children:"Vector databases store vector data, which backs AI workloads like chatbots and Retrieval Augmented Generation."}),"\n",(0,n.jsx)(r.p,{children:"Vector database components establish connections to existing vector databases or create in-memory vector stores for storing and retrieving vector data."}),"\n",(0,n.jsxs)(r.p,{children:["Vector database components are distinct from ",(0,n.jsx)(r.a,{href:"/components-memories",children:"memory components"}),", which are built specifically for storing and retrieving chat messages from external databases."]}),"\n",(0,n.jsx)(r.h2,{id:"use-a-vector-store-component-in-a-flow",children:"Use a vector store component in a flow"}),"\n",(0,n.jsxs)(r.p,{children:["This example uses the ",(0,n.jsx)(r.strong,{children:"Astra DB vector store"})," component. Your vector store component's parameters and authentication may be different, but the document ingestion workflow is the same. A document is loaded from a local machine and chunked. The Astra DB vector store generates embeddings with the connected ",(0,n.jsx)(r.a,{href:"/components-models",children:"model"})," component, and stores them in the connected Astra DB database."]}),"\n",(0,n.jsx)(r.p,{children:"This vector data can then be retrieved for workloads like Retrieval Augmented Generation."}),"\n",(0,n.jsx)(r.p,{children:(0,n.jsx)(r.img,{src:t(67719).A+"",width:"2734",height:"1402"})}),"\n",(0,n.jsxs)(r.p,{children:["The user's chat input is embedded and compared to the vectors embedded during document ingestion for a similarity search.\nThe results are output from the vector database component as a ",(0,n.jsx)(r.a,{href:"/concepts-objects",children:"Data"})," object and parsed into text.\nThis text fills the ",(0,n.jsx)(r.code,{children:"{context}"})," variable in the ",(0,n.jsx)(r.strong,{children:"Prompt"})," component, which informs the ",(0,n.jsx)(r.strong,{children:"Open AI model"})," component's responses."]}),"\n",(0,n.jsxs)(r.p,{children:["Alternatively, connect the vector database component's ",(0,n.jsx)(r.strong,{children:"Retriever"})," port to a ",(0,n.jsx)(r.a,{href:"components-tools#retriever-tool",children:"retriever tool"}),", and then to an ",(0,n.jsx)(r.a,{href:"/components-agents",children:"agent"})," component. This enables the agent to use your vector database as a tool and make decisions based on the available data."]}),"\n",(0,n.jsx)(r.p,{children:(0,n.jsx)(r.img,{src:t(59072).A+"",width:"2414",height:"1602"})}),"\n",(0,n.jsx)(r.h2,{id:"astra-db-vector-store",children:"Astra DB Vector Store"}),"\n",(0,n.jsx)(r.p,{children:"This component implements a Vector Store using Astra DB with search capabilities."}),"\n",(0,n.jsxs)(r.p,{children:["For more information, see the ",(0,n.jsx)(r.a,{href:"https://docs.datastax.com/en/astra-db-serverless/databases/create-database.html",children:"DataStax documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Display Name"}),(0,n.jsx)(r.th,{children:"Info"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"token"}),(0,n.jsx)(r.td,{children:"Astra DB Application Token"}),(0,n.jsx)(r.td,{children:"The authentication token for accessing Astra DB."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"environment"}),(0,n.jsx)(r.td,{children:"Environment"}),(0,n.jsxs)(r.td,{children:["The environment for the Astra DB API Endpoint. For example, ",(0,n.jsx)(r.code,{children:"dev"})," or ",(0,n.jsx)(r.code,{children:"prod"}),"."]})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"database_name"}),(0,n.jsx)(r.td,{children:"Database"}),(0,n.jsx)(r.td,{children:"The database name for the Astra DB instance."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"api_endpoint"}),(0,n.jsx)(r.td,{children:"Astra DB API Endpoint"}),(0,n.jsx)(r.td,{children:"The API endpoint for the Astra DB instance. This supersedes the database selection."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"collection_name"}),(0,n.jsx)(r.td,{children:"Collection"}),(0,n.jsx)(r.td,{children:"The name of the collection within Astra DB where the vectors are stored."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"keyspace"}),(0,n.jsx)(r.td,{children:"Keyspace"}),(0,n.jsx)(r.td,{children:"An optional keyspace within Astra DB to use for the collection."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding_choice"}),(0,n.jsx)(r.td,{children:"Embedding Model or Astra Vectorize"}),(0,n.jsx)(r.td,{children:"Choose an embedding model or use Astra vectorize."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding_model"}),(0,n.jsx)(r.td,{children:"Embedding Model"}),(0,n.jsx)(r.td,{children:"Specify the embedding model. Not required for Astra vectorize collections."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Number of Search Results"}),(0,n.jsxs)(r.td,{children:["The number of search results to return. Default:",(0,n.jsx)(r.code,{children:"4"}),"."]})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_type"}),(0,n.jsx)(r.td,{children:"Search Type"}),(0,n.jsxs)(r.td,{children:["The search type to use. The options are ",(0,n.jsx)(r.code,{children:"Similarity"}),", ",(0,n.jsx)(r.code,{children:"Similarity with score threshold"}),", and ",(0,n.jsx)(r.code,{children:"MMR (Max Marginal Relevance)"}),"."]})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_score_threshold"}),(0,n.jsx)(r.td,{children:"Search Score Threshold"}),(0,n.jsxs)(r.td,{children:["The minimum similarity score threshold for search results when using the ",(0,n.jsx)(r.code,{children:"Similarity with score threshold"})," option."]})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"advanced_search_filter"}),(0,n.jsx)(r.td,{children:"Search Metadata Filter"}),(0,n.jsx)(r.td,{children:"An optional dictionary of filters to apply to the search query."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"autodetect_collection"}),(0,n.jsx)(r.td,{children:"Autodetect Collection"}),(0,n.jsx)(r.td,{children:"A boolean flag to determine whether to autodetect the collection."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"content_field"}),(0,n.jsx)(r.td,{children:"Content Field"}),(0,n.jsx)(r.td,{children:"A field to use as the text content field for the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"deletion_field"}),(0,n.jsx)(r.td,{children:"Deletion Based On Field"}),(0,n.jsx)(r.td,{children:"When provided, documents in the target collection with metadata field values matching the input metadata field value are deleted before new data is loaded."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ignore_invalid_documents"}),(0,n.jsx)(r.td,{children:"Ignore Invalid Documents"}),(0,n.jsx)(r.td,{children:"A boolean flag to determine whether to ignore invalid documents at runtime."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"astradb_vectorstore_kwargs"}),(0,n.jsx)(r.td,{children:"AstraDBVectorStore Parameters"}),(0,n.jsx)(r.td,{children:"An optional dictionary of additional parameters for the AstraDBVectorStore."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Display Name"}),(0,n.jsx)(r.th,{children:"Info"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"Vector Store"}),(0,n.jsx)(r.td,{children:"The Astra DB vector store instance configured with the specified parameters."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"Search Results"}),(0,n.jsxs)(r.td,{children:["The results of the similarity search as a list of ",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})]})]})]}),"\n",(0,n.jsx)(r.h3,{id:"generate-embeddings",children:"Generate embeddings"}),"\n",(0,n.jsxs)(r.p,{children:["The ",(0,n.jsx)(r.strong,{children:"Astra DB Vector Store"})," component offers two methods for generating embeddings."]}),"\n",(0,n.jsxs)(r.ol,{children:["\n",(0,n.jsxs)(r.li,{children:["\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"Embedding Model"}),": Use your own embedding model by connecting an ",(0,n.jsx)(r.a,{href:"/components-embedding-models",children:"Embeddings"})," component in Langflow."]}),"\n"]}),"\n",(0,n.jsxs)(r.li,{children:["\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"Astra Vectorize"}),": Use Astra DB's built-in embedding generation service. When creating a new collection, choose the embeddings provider and models, including NVIDIA's ",(0,n.jsx)(r.code,{children:"NV-Embed-QA"})," model hosted by Datastax."]}),"\n"]}),"\n"]}),"\n",(0,n.jsx)(r.admonition,{type:"important",children:(0,n.jsx)(r.p,{children:"The embedding model selection is made when creating a new collection and cannot be changed later."})}),"\n",(0,n.jsxs)(r.p,{children:["For an example of using the ",(0,n.jsx)(r.strong,{children:"Astra DB Vector Store"})," component with an embedding model, see the ",(0,n.jsx)(r.a,{href:"/vector-store-rag",children:"Vector Store RAG starter project"}),"."]}),"\n",(0,n.jsxs)(r.p,{children:["For more information, see the ",(0,n.jsx)(r.a,{href:"https://docs.datastax.com/en/astra-db-serverless/databases/embedding-generation.html",children:"Astra DB Serverless documentation"}),"."]}),"\n",(0,n.jsx)(r.h3,{id:"hybrid-search",children:"Hybrid search"}),"\n",(0,n.jsxs)(r.p,{children:["The ",(0,n.jsx)(r.strong,{children:"Astra DB"})," component includes ",(0,n.jsx)(r.strong,{children:"hybrid search"}),", which is enabled by default."]}),"\n",(0,n.jsxs)(r.p,{children:["The component fields related to hybrid search are ",(0,n.jsx)(r.strong,{children:"Search Query"}),", ",(0,n.jsx)(r.strong,{children:"Lexical Terms"}),", and ",(0,n.jsx)(r.strong,{children:"Reranker"}),"."]}),"\n",(0,n.jsxs)(r.ul,{children:["\n",(0,n.jsxs)(r.li,{children:[(0,n.jsx)(r.strong,{children:"Search Query"})," finds results by vector similarity."]}),"\n",(0,n.jsxs)(r.li,{children:[(0,n.jsx)(r.strong,{children:"Lexical Terms"})," is a comma-separated string of keywords, like ",(0,n.jsx)(r.code,{children:"features, data, attributes, characteristics"}),"."]}),"\n",(0,n.jsxs)(r.li,{children:[(0,n.jsx)(r.strong,{children:"Reranker"})," is the re-ranker model used in the hybrid search.\nThe re-ranker model is ",(0,n.jsx)(r.code,{children:"nvidia/llama-3.2-nv.reranker"}),"."]}),"\n"]}),"\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.a,{href:"https://docs.datastax.com/en/astra-db-serverless/databases/hybrid-search.html",children:"Hybrid search"})," performs a vector similarity search and a lexical search, compares the results of both searches, and then returns the most relevant results overall."]}),"\n",(0,n.jsx)(r.admonition,{type:"important",children:(0,n.jsxs)(r.p,{children:["To use hybrid search, your collection must be created with vector, lexical, and rerank capabilities enabled. These capabilities are enabled by default when you create a collection in a database in the AWS us-east-2 region.\nFor more information, see the ",(0,n.jsx)(r.a,{href:"https://docs.datastax.com/en/astra-db-serverless/api-reference/collection-methods/create-collection.html#example-hybrid",children:"DataStax documentation"}),"."]})}),"\n",(0,n.jsxs)(r.p,{children:["To use ",(0,n.jsx)(r.strong,{children:"Hybrid search"})," in the ",(0,n.jsx)(r.strong,{children:"Astra DB"})," component, do the following:"]}),"\n",(0,n.jsxs)(r.ol,{children:["\n",(0,n.jsxs)(r.li,{children:["Click ",(0,n.jsx)(r.strong,{children:"New Flow"})," > ",(0,n.jsx)(r.strong,{children:"RAG"})," > ",(0,n.jsx)(r.strong,{children:"Hybrid Search RAG"}),"."]}),"\n",(0,n.jsxs)(r.li,{children:["In the ",(0,n.jsx)(r.strong,{children:"OpenAI"})," model component, add your ",(0,n.jsx)(r.strong,{children:"OpenAI API key"}),"."]}),"\n",(0,n.jsxs)(r.li,{children:["In the ",(0,n.jsx)(r.strong,{children:"Astra DB"})," vector store component, add your ",(0,n.jsx)(r.strong,{children:"Astra DB Application Token"}),"."]}),"\n",(0,n.jsxs)(r.li,{children:["In the ",(0,n.jsx)(r.strong,{children:"Database"})," field, select your database."]}),"\n",(0,n.jsxs)(r.li,{children:["In the ",(0,n.jsx)(r.strong,{children:"Collection"})," field, select or create a collection with hybrid search capabilities enabled."]}),"\n",(0,n.jsxs)(r.li,{children:["In the ",(0,n.jsx)(r.strong,{children:"Playground"}),", enter a question about your data, such as ",(0,n.jsx)(r.code,{children:"What are the features of my data?"}),"\nYour query is sent to two components: an ",(0,n.jsx)(r.strong,{children:"OpenAI"})," model component and the ",(0,n.jsx)(r.strong,{children:"Astra DB"})," vector database component.\nThe ",(0,n.jsx)(r.strong,{children:"OpenAI"})," component contains a prompt for creating the lexical query from your input:"]}),"\n"]}),"\n",(0,n.jsx)(o.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"You are a database query planner that takes a user's requests, and then converts to a search against the subject matter in question.",props:{}}]},{tokens:[{content:"You should convert the query into:",props:{}}]},{tokens:[{content:"1. A list of keywords to use against a Lucene text analyzer index, no more than 4. Strictly unigrams.",props:{}}]},{tokens:[{content:"2. A question to use as the basis for a QA embedding engine.",props:{}}]},{tokens:[{content:"Avoid common keywords associated with the user's subject matter.",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,n.jsxs)(r.ol,{start:"7",children:["\n",(0,n.jsxs)(r.li,{children:["To view the keywords and questions the ",(0,n.jsx)(r.strong,{children:"OpenAI"})," component generates from your collection, in the ",(0,n.jsx)(r.strong,{children:"OpenAI"})," component, click ",(0,n.jsx)(c.A,{name:"TextSearch","aria-hidden":"true"})," ",(0,n.jsx)(r.strong,{children:"Inspect output"}),"."]}),"\n"]}),"\n",(0,n.jsx)(o.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"1. Keywords: features, data, attributes, characteristics",props:{}}]},{tokens:[{content:"2. Question: What characteristics can be identified in my data?",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,n.jsxs)(r.ol,{start:"8",children:["\n",(0,n.jsxs)(r.li,{children:["\n",(0,n.jsxs)(r.p,{children:["To view the ",(0,n.jsx)(r.a,{href:"/concepts-objects#dataframe-object",children:"DataFrame"})," generated from the ",(0,n.jsx)(r.strong,{children:"OpenAI"})," component's response, in the ",(0,n.jsx)(r.strong,{children:"Structured Output"})," component, click ",(0,n.jsx)(c.A,{name:"TextSearch","aria-hidden":"true"})," ",(0,n.jsx)(r.strong,{children:"Inspect output"}),".\nThe DataFrame is passed to a ",(0,n.jsx)(r.strong,{children:"Parser"})," component, which parses the contents of the ",(0,n.jsx)(r.strong,{children:"Keywords"})," column into a string."]}),"\n",(0,n.jsxs)(r.p,{children:["This string of comma-separated words is passed to the ",(0,n.jsx)(r.strong,{children:"Lexical Terms"})," port of the ",(0,n.jsx)(r.strong,{children:"Astra DB"})," component.\nNote that the ",(0,n.jsx)(r.strong,{children:"Search Query"})," port of the Astra DB port is connected to the ",(0,n.jsx)(r.strong,{children:"Chat Input"})," component from step 6.\nThis ",(0,n.jsx)(r.strong,{children:"Search Query"})," is vectorized, and both the ",(0,n.jsx)(r.strong,{children:"Search Query"})," and ",(0,n.jsx)(r.strong,{children:"Lexical Terms"})," content are sent to the reranker at the ",(0,n.jsx)(r.code,{children:"find_and_rerank"})," endpoint."]}),"\n",(0,n.jsxs)(r.p,{children:["The reranker compares the vector search results against the string of terms from the lexical search.\nThe highest-ranked results of your hybrid search are returned to the ",(0,n.jsx)(r.strong,{children:"Playground"}),"."]}),"\n"]}),"\n"]}),"\n",(0,n.jsxs)(r.p,{children:["For more information, see the ",(0,n.jsx)(r.a,{href:"https://docs.datastax.com/en/astra-db-serverless/databases/hybrid-search.html",children:"DataStax documentation"}),"."]}),"\n",(0,n.jsx)(r.h2,{id:"astradb-graph-vector-store",children:"AstraDB Graph vector store"}),"\n",(0,n.jsxs)(r.p,{children:["This component implements a Vector Store using AstraDB with graph capabilities.\nFor more information, see the ",(0,n.jsx)(r.a,{href:"https://docs.datastax.com/en/astra-db-serverless/tutorials/graph-rag.html",children:"Astra DB Serverless documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Display Name"}),(0,n.jsx)(r.th,{children:"Info"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"collection_name"}),(0,n.jsx)(r.td,{children:"Collection Name"}),(0,n.jsx)(r.td,{children:"The name of the collection within AstraDB where the vectors are stored. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"token"}),(0,n.jsx)(r.td,{children:"Astra DB Application Token"}),(0,n.jsx)(r.td,{children:"Authentication token for accessing AstraDB. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"api_endpoint"}),(0,n.jsx)(r.td,{children:"API Endpoint"}),(0,n.jsx)(r.td,{children:"API endpoint URL for the AstraDB service. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_input"}),(0,n.jsx)(r.td,{children:"Search Input"}),(0,n.jsx)(r.td,{children:"Query string for similarity search."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ingest_data"}),(0,n.jsx)(r.td,{children:"Ingest Data"}),(0,n.jsx)(r.td,{children:"Data to be ingested into the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"namespace"}),(0,n.jsx)(r.td,{children:"Namespace"}),(0,n.jsx)(r.td,{children:"Optional namespace within AstraDB to use for the collection."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embedding Model"}),(0,n.jsx)(r.td,{children:"Embedding model to use."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"metric"}),(0,n.jsx)(r.td,{children:"Metric"}),(0,n.jsx)(r.td,{children:'Distance metric for vector comparisons. The options are "cosine", "euclidean", "dot_product".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"setup_mode"}),(0,n.jsx)(r.td,{children:"Setup Mode"}),(0,n.jsx)(r.td,{children:'Configuration mode for setting up the vector store. The options are "Sync", "Async", "Off".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"pre_delete_collection"}),(0,n.jsx)(r.td,{children:"Pre Delete Collection"}),(0,n.jsx)(r.td,{children:"Boolean flag to determine whether to delete the collection before creating a new one."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Number of Results"}),(0,n.jsx)(r.td,{children:"Number of results to return in similarity search. Default: 4."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_type"}),(0,n.jsx)(r.td,{children:"Search Type"}),(0,n.jsx)(r.td,{children:'Search type to use. The options are "Similarity", "Graph Traversal", "Hybrid".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"traversal_depth"}),(0,n.jsx)(r.td,{children:"Traversal Depth"}),(0,n.jsx)(r.td,{children:"Maximum depth for graph traversal searches. Default: 1."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_score_threshold"}),(0,n.jsx)(r.td,{children:"Search Score Threshold"}),(0,n.jsx)(r.td,{children:"Minimum similarity score threshold for search results."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_filter"}),(0,n.jsx)(r.td,{children:"Search Metadata Filter"}),(0,n.jsx)(r.td,{children:"Optional dictionary of filters to apply to the search query."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Display Name"}),(0,n.jsx)(r.th,{children:"Info"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"Vector Store"}),(0,n.jsx)(r.td,{children:"The Graph RAG vector store instance configured with the specified parameters."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"Search Results"}),(0,n.jsxs)(r.td,{children:["The results of the similarity search as a list of ",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})]})]})]}),"\n",(0,n.jsx)(r.h2,{id:"cassandra",children:"Cassandra"}),"\n",(0,n.jsxs)(r.p,{children:["This component creates a Cassandra Vector Store with search capabilities.\nFor more information, see the ",(0,n.jsx)(r.a,{href:"https://cassandra.apache.org/doc/latest/cassandra/vector-search/overview.html",children:"Cassandra documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"database_ref"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Contact points for the database or AstraDB database ID."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"username"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Username for the database (leave empty for AstraDB)."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"token"}),(0,n.jsx)(r.td,{children:"SecretString"}),(0,n.jsx)(r.td,{children:"User password for the database or AstraDB token."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"keyspace"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Table Keyspace or AstraDB namespace."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"table_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Name of the table or AstraDB collection."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ttl_seconds"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"Time-to-live for added texts."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"batch_size"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"Number of data to process in a single batch."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"setup_mode"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Configuration mode for setting up the Cassandra table."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"cluster_kwargs"}),(0,n.jsx)(r.td,{children:"Dict"}),(0,n.jsx)(r.td,{children:"Additional keyword arguments for the Cassandra cluster."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_query"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Query for similarity search."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ingest_data"}),(0,n.jsx)(r.td,{children:"Data"}),(0,n.jsx)(r.td,{children:"Data to be ingested into the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embeddings"}),(0,n.jsx)(r.td,{children:"Embedding function to use."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"Number of results to return in search."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_type"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Type of search to perform."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_score_threshold"}),(0,n.jsx)(r.td,{children:"Float"}),(0,n.jsx)(r.td,{children:"Minimum similarity score for search results."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_filter"}),(0,n.jsx)(r.td,{children:"Dict"}),(0,n.jsx)(r.td,{children:"Metadata filters for search query."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"body_search"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Document textual search terms."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"enable_body_search"}),(0,n.jsx)(r.td,{children:"Boolean"}),(0,n.jsx)(r.td,{children:"Flag to enable body search."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"Cassandra"}),(0,n.jsx)(r.td,{children:"The Cassandra vector store instance configured with the specified parameters."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"List[Data]"}),(0,n.jsxs)(r.td,{children:["The results of the similarity search as a list of ",(0,n.jsx)(r.code,{children:"Data"})," objects."]})]})]})]})]}),"\n",(0,n.jsx)(r.h2,{id:"cassandra-graph-vector-store",children:"Cassandra Graph Vector Store"}),"\n",(0,n.jsx)(r.p,{children:"This component implements a Cassandra Graph Vector Store with search capabilities."}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Display Name"}),(0,n.jsx)(r.th,{children:"Info"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"database_ref"}),(0,n.jsx)(r.td,{children:"Contact Points / Astra Database ID"}),(0,n.jsx)(r.td,{children:"The contact points for the database or AstraDB database ID. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"username"}),(0,n.jsx)(r.td,{children:"Username"}),(0,n.jsx)(r.td,{children:"The username for the database. Leave this field empty for AstraDB."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"token"}),(0,n.jsx)(r.td,{children:"Password / AstraDB Token"}),(0,n.jsx)(r.td,{children:"The user password for the database or AstraDB token. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"keyspace"}),(0,n.jsx)(r.td,{children:"Keyspace"}),(0,n.jsx)(r.td,{children:"The table Keyspace or AstraDB namespace. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"table_name"}),(0,n.jsx)(r.td,{children:"Table Name"}),(0,n.jsx)(r.td,{children:"The name of the table or AstraDB collection where vectors are stored. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"setup_mode"}),(0,n.jsx)(r.td,{children:"Setup Mode"}),(0,n.jsx)(r.td,{children:'The configuration mode for setting up the Cassandra table. The options are "Sync" or "Off". Default: "Sync".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"cluster_kwargs"}),(0,n.jsx)(r.td,{children:"Cluster arguments"}),(0,n.jsx)(r.td,{children:"An optional dictionary of additional keyword arguments for the Cassandra cluster."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_query"}),(0,n.jsx)(r.td,{children:"Search Query"}),(0,n.jsx)(r.td,{children:"The query string for similarity search."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ingest_data"}),(0,n.jsx)(r.td,{children:"Ingest Data"}),(0,n.jsx)(r.td,{children:"The list of data to be ingested into the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embedding"}),(0,n.jsx)(r.td,{children:"The embedding model to use."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Number of Results"}),(0,n.jsx)(r.td,{children:"The number of results to return in similarity search. Default: 4."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_type"}),(0,n.jsx)(r.td,{children:"Search Type"}),(0,n.jsx)(r.td,{children:'The search type to use. The options are "Traversal", "MMR traversal", "Similarity", "Similarity with score threshold", or "MMR (Max Marginal Relevance)". Default: "Traversal".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"depth"}),(0,n.jsx)(r.td,{children:"Depth of traversal"}),(0,n.jsx)(r.td,{children:'The maximum depth of edges to traverse. Used for "Traversal" or "MMR traversal" search types. Default: 1.'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_score_threshold"}),(0,n.jsx)(r.td,{children:"Search Score Threshold"}),(0,n.jsx)(r.td,{children:'The minimum similarity score threshold for search results. Used for "Similarity with score threshold" search types.'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_filter"}),(0,n.jsx)(r.td,{children:"Search Metadata Filter"}),(0,n.jsx)(r.td,{children:"An optional dictionary of filters to apply to the search query."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Display Name"}),(0,n.jsx)(r.th,{children:"Info"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"Vector Store"}),(0,n.jsx)(r.td,{children:"The Cassandra Graph vector store instance configured with the specified parameters."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"Search Results"}),(0,n.jsxs)(r.td,{children:["The results of the similarity search as a list of ",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})]})]})]}),"\n",(0,n.jsx)(r.h2,{id:"chroma-db",children:"Chroma DB"}),"\n",(0,n.jsx)(r.p,{children:"This component creates a Chroma Vector Store with search capabilities."}),"\n",(0,n.jsx)(r.p,{children:"The Chroma DB component creates an ephemeral vector database for experimentation and vector storage."}),"\n",(0,n.jsxs)(r.ol,{children:["\n",(0,n.jsxs)(r.li,{children:["To use this component in a flow, connect it to a component that outputs ",(0,n.jsx)(r.strong,{children:"Data"})," or ",(0,n.jsx)(r.strong,{children:"DataFrame"}),".\nThis example splits text from a ",(0,n.jsx)(r.a,{href:"/components-data#url",children:"URL"})," component, and computes embeddings with the connected ",(0,n.jsx)(r.strong,{children:"OpenAI Embeddings"})," component. Chroma DB computes embeddings by default, but you can connect your own embeddings model, as seen in this example."]}),"\n"]}),"\n",(0,n.jsx)(r.p,{children:(0,n.jsx)(r.img,{alt:"ChromaDB receiving split text",src:t(88690).A+"",width:"1127",height:"811"})}),"\n",(0,n.jsxs)(r.ol,{start:"2",children:["\n",(0,n.jsxs)(r.li,{children:["In the ",(0,n.jsx)(r.strong,{children:"Chroma DB"})," component, in the ",(0,n.jsx)(r.strong,{children:"Collection"})," field, enter a name for your embeddings collection."]}),"\n",(0,n.jsxs)(r.li,{children:["Optionally, to persist the Chroma database, in the ",(0,n.jsx)(r.strong,{children:"Persist"})," field, enter a directory to store the ",(0,n.jsx)(r.code,{children:"chroma.sqlite3"})," file.\nThis example uses ",(0,n.jsx)(r.code,{children:"./chroma-db"})," to create a directory relative to where Langflow is running."]}),"\n",(0,n.jsxs)(r.li,{children:["To load data and embeddings into your Chroma database, in the ",(0,n.jsx)(r.strong,{children:"Chroma DB"})," component, click ",(0,n.jsx)(c.A,{name:"Play","aria-hidden":"true"})," ",(0,n.jsx)(r.strong,{children:"Run component"}),"."]}),"\n"]}),"\n",(0,n.jsx)(r.admonition,{type:"tip",children:(0,n.jsxs)(r.p,{children:["When loading duplicate documents, enable the ",(0,n.jsx)(r.strong,{children:"Allow Duplicates"})," option in Chroma DB if you want to store multiple copies of the same content, or disable it to automatically deduplicate your data."]})}),"\n",(0,n.jsxs)(r.ol,{start:"5",children:["\n",(0,n.jsxs)(r.li,{children:["To view the split data, in the ",(0,n.jsx)(r.strong,{children:"Split Text"})," component, click ",(0,n.jsx)(c.A,{name:"TextSearch","aria-hidden":"true"})," ",(0,n.jsx)(r.strong,{children:"Inspect output"}),"."]}),"\n",(0,n.jsxs)(r.li,{children:["To query your loaded data, open the ",(0,n.jsx)(r.strong,{children:"Playground"})," and query your database.\nYour input is converted to vector data and compared to the stored vectors in a vector similarity search."]}),"\n"]}),"\n",(0,n.jsxs)(r.p,{children:["For more information, see the ",(0,n.jsx)(r.a,{href:"https://docs.trychroma.com/",children:"Chroma documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"collection_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:'The name of the Chroma collection. Default: "langflow".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"persist_directory"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The directory to persist the Chroma database."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_query"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The query to search for in the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ingest_data"}),(0,n.jsx)(r.td,{children:"Data"}),(0,n.jsxs)(r.td,{children:["The data to ingest into the vector store (list of ",(0,n.jsx)(r.code,{children:"Data"})," objects)."]})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embeddings"}),(0,n.jsx)(r.td,{children:"The embedding function to use for the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"chroma_server_cors_allow_origins"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The CORS allow origins for the Chroma server."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"chroma_server_host"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The host for the Chroma server."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"chroma_server_http_port"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"The HTTP port for the Chroma server."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"chroma_server_grpc_port"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"The gRPC port for the Chroma server."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"chroma_server_ssl_enabled"}),(0,n.jsx)(r.td,{children:"Boolean"}),(0,n.jsx)(r.td,{children:"Enable SSL for the Chroma server."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"allow_duplicates"}),(0,n.jsx)(r.td,{children:"Boolean"}),(0,n.jsx)(r.td,{children:"Allow duplicate documents in the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_type"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:'The type of search to perform: "Similarity" or "MMR".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsxs)(r.td,{children:["The number of results to return from the search. Default: ",(0,n.jsx)(r.code,{children:"10"}),"."]})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"limit"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsxs)(r.td,{children:["The limit of the number of records to compare when ",(0,n.jsx)(r.code,{children:"Allow Duplicates"})," is ",(0,n.jsx)(r.code,{children:"False"}),"."]})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"Chroma"}),(0,n.jsx)(r.td,{children:"The Chroma vector store instance."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"List[Data]"}),(0,n.jsxs)(r.td,{children:["The results of the similarity search as a list of ",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})]})]})]}),"\n",(0,n.jsx)(r.h2,{id:"clickhouse",children:"Clickhouse"}),"\n",(0,n.jsxs)(r.p,{children:["This component implements a Clickhouse Vector Store with search capabilities.\nFor more information, see the ",(0,n.jsx)(r.a,{href:"https://clickhouse.com/docs/en/intro",children:"Clickhouse Documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Display Name"}),(0,n.jsx)(r.th,{children:"Info"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"host"}),(0,n.jsx)(r.td,{children:"hostname"}),(0,n.jsx)(r.td,{children:'The Clickhouse server hostname. Required. Default: "localhost".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"port"}),(0,n.jsx)(r.td,{children:"port"}),(0,n.jsx)(r.td,{children:"The Clickhouse server port. Required. Default: 8123."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"database"}),(0,n.jsx)(r.td,{children:"database"}),(0,n.jsx)(r.td,{children:"The Clickhouse database name. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"table"}),(0,n.jsx)(r.td,{children:"Table name"}),(0,n.jsx)(r.td,{children:"The Clickhouse table name. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"username"}),(0,n.jsx)(r.td,{children:"The ClickHouse user name."}),(0,n.jsx)(r.td,{children:"Username for authentication. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"password"}),(0,n.jsx)(r.td,{children:"The password for username."}),(0,n.jsx)(r.td,{children:"Password for authentication. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"index_type"}),(0,n.jsx)(r.td,{children:"index_type"}),(0,n.jsx)(r.td,{children:'Type of the index. The options are "annoy" and "vector_similarity". Default: "annoy".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"metric"}),(0,n.jsx)(r.td,{children:"metric"}),(0,n.jsx)(r.td,{children:'Metric to compute distance. The options are "angular", "euclidean", "manhattan", "hamming", "dot". Default: "angular".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"secure"}),(0,n.jsx)(r.td,{children:"Use https/TLS"}),(0,n.jsx)(r.td,{children:"Overrides inferred values from the interface or port arguments. Default: false."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"index_param"}),(0,n.jsx)(r.td,{children:"Param of the index"}),(0,n.jsx)(r.td,{children:"Index parameters. Default: \"'L2Distance',100\"."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"index_query_params"}),(0,n.jsx)(r.td,{children:"index query params"}),(0,n.jsx)(r.td,{children:"Additional index query parameters."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_query"}),(0,n.jsx)(r.td,{children:"Search Query"}),(0,n.jsx)(r.td,{children:"The query string for similarity search."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ingest_data"}),(0,n.jsx)(r.td,{children:"Ingest Data"}),(0,n.jsx)(r.td,{children:"The data to be ingested into the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embedding"}),(0,n.jsx)(r.td,{children:"The embedding model to use."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Number of Results"}),(0,n.jsx)(r.td,{children:"The number of results to return in similarity search. Default: 4."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"score_threshold"}),(0,n.jsx)(r.td,{children:"Score threshold"}),(0,n.jsx)(r.td,{children:"The threshold for similarity scores."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Display Name"}),(0,n.jsx)(r.th,{children:"Info"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"Vector Store"}),(0,n.jsx)(r.td,{children:"The Clickhouse vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"Search Results"}),(0,n.jsx)(r.td,{children:"The results of the similarity search as a list of Data objects."})]})]})]})]}),"\n",(0,n.jsx)(r.h2,{id:"couchbase",children:"Couchbase"}),"\n",(0,n.jsxs)(r.p,{children:["This component creates a Couchbase Vector Store with search capabilities.\nFor more information, see the ",(0,n.jsx)(r.a,{href:"https://docs.couchbase.com/home/index.html",children:"Couchbase documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"couchbase_connection_string"}),(0,n.jsx)(r.td,{children:"SecretString"}),(0,n.jsx)(r.td,{children:"Couchbase Cluster connection string. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"couchbase_username"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Couchbase username. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"couchbase_password"}),(0,n.jsx)(r.td,{children:"SecretString"}),(0,n.jsx)(r.td,{children:"Couchbase password. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"bucket_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Name of the Couchbase bucket. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"scope_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Name of the Couchbase scope. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"collection_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Name of the Couchbase collection. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"index_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Name of the Couchbase index. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_query"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The query to search for in the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ingest_data"}),(0,n.jsx)(r.td,{children:"Data"}),(0,n.jsx)(r.td,{children:"The list of data to ingest into the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embeddings"}),(0,n.jsx)(r.td,{children:"The embedding function to use for the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"Number of results to return from the search. Default: 4."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsx)(r.tbody,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"CouchbaseVectorStore"}),(0,n.jsx)(r.td,{children:"A Couchbase vector store instance configured with the specified parameters."})]})})]})]}),"\n",(0,n.jsx)(r.h2,{id:"local-db",children:"Local DB"}),"\n",(0,n.jsxs)(r.p,{children:["The ",(0,n.jsx)(r.strong,{children:"Local DB"})," component is Langflow's enhanced version of Chroma DB."]}),"\n",(0,n.jsx)(r.p,{children:"The component adds a user-friendly interface with two modes (Ingest and Retrieve), automatic collection management, and built-in persistence in Langflow's cache directory."}),"\n",(0,n.jsxs)(r.p,{children:["Local DB includes ",(0,n.jsx)(r.strong,{children:"Ingest"})," and ",(0,n.jsx)(r.strong,{children:"Retrieve"})," modes."]}),"\n",(0,n.jsxs)(r.p,{children:["The ",(0,n.jsx)(r.strong,{children:"Ingest"})," mode works similarly to ",(0,n.jsx)(r.a,{href:"#chroma-db",children:"ChromaDB"}),", and persists your database to the Langflow cache directory. The Langflow cache directory location is specified in ",(0,n.jsx)(r.code,{children:"LANGFLOW_CONFIG_DIR"}),". For more information, see ",(0,n.jsx)(r.a,{href:"/environment-variables",children:"Environment variables"}),"."]}),"\n",(0,n.jsxs)(r.p,{children:["The ",(0,n.jsx)(r.strong,{children:"Retrieve"})," mode can query your ",(0,n.jsx)(r.strong,{children:"Chroma DB"})," collections."]}),"\n",(0,n.jsx)(r.p,{children:(0,n.jsx)(r.img,{alt:"Local DB retrieving vectors",src:t(60159).A+"",width:"1716",height:"960"})}),"\n",(0,n.jsxs)(r.p,{children:["For more information, see the ",(0,n.jsx)(r.a,{href:"https://docs.trychroma.com/",children:"Chroma documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"collection_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:'The name of the Chroma collection. Default: "langflow".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"persist_directory"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsxs)(r.td,{children:["Custom base directory to save the vector store. Collections are stored under ",(0,n.jsx)(r.code,{children:"$DIRECTORY/vector_stores/$COLLECTION_NAME"}),". If not specified, it uses your system's cache folder."]})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"existing_collections"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Select a previously created collection to search through its stored data."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embeddings"}),(0,n.jsx)(r.td,{children:"The embedding function to use for the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"allow_duplicates"}),(0,n.jsx)(r.td,{children:"Boolean"}),(0,n.jsx)(r.td,{children:"If false, will not add documents that are already in the Vector Store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_type"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:'Type of search to perform: "Similarity" or "MMR".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ingest_data"}),(0,n.jsx)(r.td,{children:"Data/DataFrame"}),(0,n.jsx)(r.td,{children:"Data to store. It is embedded and indexed for semantic search."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_query"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Enter text to search for similar content in the selected collection."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"Number of results to return. Default: 10."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"limit"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"Limit the number of records to compare when Allow Duplicates is False."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"Chroma"}),(0,n.jsx)(r.td,{children:"A local Chroma vector store instance configured with the specified parameters."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsxs)(r.td,{children:["List",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})]}),(0,n.jsxs)(r.td,{children:["The results of the similarity search as a list of ",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})]})]})]}),"\n",(0,n.jsx)(r.h2,{id:"elasticsearch",children:"Elasticsearch"}),"\n",(0,n.jsxs)(r.p,{children:["This component creates an Elasticsearch Vector Store with search capabilities.\nFor more information, see the ",(0,n.jsx)(r.a,{href:"https://www.elastic.co/guide/en/elasticsearch/reference/current/dense-vector.html",children:"Elasticsearch documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"es_url"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Elasticsearch server URL."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"es_user"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Username for Elasticsearch authentication."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"es_password"}),(0,n.jsx)(r.td,{children:"SecretString"}),(0,n.jsx)(r.td,{children:"Password for Elasticsearch authentication."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"index_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Name of the Elasticsearch index."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"strategy"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:'Strategy for vector search. The options are "approximate_k_nearest_neighbors" or "script_scoring".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"distance_strategy"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:'Strategy for distance calculation. The options are "COSINE", "EUCLIDEAN_DISTANCE", or "DOT_PRODUCT".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_query"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Query for similarity search."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ingest_data"}),(0,n.jsx)(r.td,{children:"Data"}),(0,n.jsx)(r.td,{children:"Data to be ingested into the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embeddings"}),(0,n.jsx)(r.td,{children:"Embedding function to use."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsxs)(r.td,{children:["Number of results to return in search. Default: ",(0,n.jsx)(r.code,{children:"4"}),"."]})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"ElasticsearchStore"}),(0,n.jsx)(r.td,{children:"The Elasticsearch vector store instance."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"List[Data]"}),(0,n.jsxs)(r.td,{children:["The results of the similarity search as a list of ",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})]})]})]}),"\n",(0,n.jsx)(r.h2,{id:"faiss",children:"FAISS"}),"\n",(0,n.jsxs)(r.p,{children:["This component creates a FAISS Vector Store with search capabilities.\nFor more information, see the ",(0,n.jsx)(r.a,{href:"https://faiss.ai/index.html",children:"FAISS documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"index_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:'The name of the FAISS index. Default: "langflow_index".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"persist_directory"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Path to save the FAISS index. It is relative to where Langflow is running."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_query"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The query to search for in the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ingest_data"}),(0,n.jsx)(r.td,{children:"Data"}),(0,n.jsx)(r.td,{children:"The list of data to ingest into the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"allow_dangerous_deserialization"}),(0,n.jsx)(r.td,{children:"Boolean"}),(0,n.jsx)(r.td,{children:"Set to True to allow loading pickle files from untrusted sources. Default: True."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embeddings"}),(0,n.jsx)(r.td,{children:"The embedding function to use for the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"Number of results to return from the search. Default: 4."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Display Name"}),(0,n.jsx)(r.th,{children:"Info"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"Vector Store"}),(0,n.jsx)(r.td,{children:"The FAISS vector store instance configured with the specified parameters."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"Search Results"}),(0,n.jsxs)(r.td,{children:["The results of the similarity search as a list of ",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})]})]})]}),"\n",(0,n.jsx)(r.h2,{id:"graph-rag",children:"Graph RAG"}),"\n",(0,n.jsxs)(r.p,{children:["This component performs Graph RAG (Retrieval Augmented Generation) traversal in a vector store, enabling graph-based document retrieval.\nFor more information, see the ",(0,n.jsx)(r.a,{href:"https://datastax.github.io/graph-rag/",children:"Graph RAG documentation"}),"."]}),"\n",(0,n.jsxs)(r.p,{children:["For an example flow, see the ",(0,n.jsx)(r.strong,{children:"Graph RAG"})," template."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Display Name"}),(0,n.jsx)(r.th,{children:"Info"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding_model"}),(0,n.jsx)(r.td,{children:"Embedding Model"}),(0,n.jsxs)(r.td,{children:["Specify the embedding model. This is not required for collections embedded with ",(0,n.jsx)(r.a,{href:"https://docs.datastax.com/en/astra-db-serverless/databases/embedding-generation.html",children:"Astra vectorize"}),"."]})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"Vector Store Connection"}),(0,n.jsx)(r.td,{children:"Connection to the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"edge_definition"}),(0,n.jsx)(r.td,{children:"Edge Definition"}),(0,n.jsxs)(r.td,{children:["Edge definition for the graph traversal. For more information, see the ",(0,n.jsx)(r.a,{href:"https://datastax.github.io/graph-rag/reference/graph_retriever/edges/",children:"GraphRAG documentation"}),"."]})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"strategy"}),(0,n.jsx)(r.td,{children:"Traversal Strategies"}),(0,n.jsx)(r.td,{children:"The strategy to use for graph traversal. Strategy options are dynamically loaded from available strategies."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_query"}),(0,n.jsx)(r.td,{children:"Search Query"}),(0,n.jsx)(r.td,{children:"The query to search for in the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"graphrag_strategy_kwargs"}),(0,n.jsx)(r.td,{children:"Strategy Parameters"}),(0,n.jsxs)(r.td,{children:["Optional dictionary of additional parameters for the retrieval strategy. For more information, see the ",(0,n.jsx)(r.a,{href:"https://datastax.github.io/graph-rag/reference/graph_retriever/strategies/",children:"strategy documentation"}),"."]})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsx)(r.tbody,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"List[Data]"}),(0,n.jsxs)(r.td,{children:["Results of the graph-based document retrieval as a list of ",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})})]})]}),"\n",(0,n.jsx)(r.h2,{id:"hyper-converged-database-hcd",children:"Hyper-Converged Database (HCD)"}),"\n",(0,n.jsx)(r.p,{children:"This component implements a Vector Store using HCD."}),"\n",(0,n.jsxs)(r.p,{children:["To use the HCD vector store, add your deployment's collection name, username, password, and HCD Data API endpoint.\nThe endpoint must be formatted like ",(0,n.jsx)(r.code,{children:"http[s]://**DOMAIN_NAME** or **IP_ADDRESS**[:port]"}),", for example, ",(0,n.jsx)(r.code,{children:"http://192.0.2.250:8181"}),"."]}),"\n",(0,n.jsxs)(r.p,{children:["Replace ",(0,n.jsx)(r.strong,{children:"DOMAIN_NAME"})," or ",(0,n.jsx)(r.strong,{children:"IP_ADDRESS"})," with the domain name or IP address of your HCD Data API connection."]}),"\n",(0,n.jsx)(r.p,{children:"To use the HCD vector store for embeddings ingestion, connect it to an embeddings model and a file loader:"}),"\n",(0,n.jsx)(r.p,{children:(0,n.jsx)(r.img,{alt:"HCD vector store embeddings ingestion",src:t(42638).A+"",width:"2294",height:"1684"})}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Display Name"}),(0,n.jsx)(r.th,{children:"Info"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"collection_name"}),(0,n.jsx)(r.td,{children:"Collection Name"}),(0,n.jsx)(r.td,{children:"The name of the collection within HCD where the vectors will be stored. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"username"}),(0,n.jsx)(r.td,{children:"HCD Username"}),(0,n.jsx)(r.td,{children:'Authentication username for accessing HCD. Default is "hcd-superuser". Required.'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"password"}),(0,n.jsx)(r.td,{children:"HCD Password"}),(0,n.jsx)(r.td,{children:"Authentication password for accessing HCD. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"api_endpoint"}),(0,n.jsx)(r.td,{children:"HCD API Endpoint"}),(0,n.jsx)(r.td,{children:"API endpoint URL for the HCD service. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_input"}),(0,n.jsx)(r.td,{children:"Search Input"}),(0,n.jsx)(r.td,{children:"Query string for similarity search."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ingest_data"}),(0,n.jsx)(r.td,{children:"Ingest Data"}),(0,n.jsx)(r.td,{children:"Data to be ingested into the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"namespace"}),(0,n.jsx)(r.td,{children:"Namespace"}),(0,n.jsx)(r.td,{children:'Optional namespace within HCD to use for the collection. Default is "default_namespace".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ca_certificate"}),(0,n.jsx)(r.td,{children:"CA Certificate"}),(0,n.jsx)(r.td,{children:"Optional CA certificate for TLS connections to HCD."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"metric"}),(0,n.jsx)(r.td,{children:"Metric"}),(0,n.jsx)(r.td,{children:'Optional distance metric for vector comparisons. Options are "cosine", "dot_product", "euclidean".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"batch_size"}),(0,n.jsx)(r.td,{children:"Batch Size"}),(0,n.jsx)(r.td,{children:"Optional number of data to process in a single batch."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"bulk_insert_batch_concurrency"}),(0,n.jsx)(r.td,{children:"Bulk Insert Batch Concurrency"}),(0,n.jsx)(r.td,{children:"Optional concurrency level for bulk insert operations."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"bulk_insert_overwrite_concurrency"}),(0,n.jsx)(r.td,{children:"Bulk Insert Overwrite Concurrency"}),(0,n.jsx)(r.td,{children:"Optional concurrency level for bulk insert operations that overwrite existing data."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"bulk_delete_concurrency"}),(0,n.jsx)(r.td,{children:"Bulk Delete Concurrency"}),(0,n.jsx)(r.td,{children:"Optional concurrency level for bulk delete operations."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"setup_mode"}),(0,n.jsx)(r.td,{children:"Setup Mode"}),(0,n.jsx)(r.td,{children:'Configuration mode for setting up the vector store. Options are "Sync", "Async", "Off". Default is "Sync".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"pre_delete_collection"}),(0,n.jsx)(r.td,{children:"Pre Delete Collection"}),(0,n.jsx)(r.td,{children:"Boolean flag to determine whether to delete the collection before creating a new one."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"metadata_indexing_include"}),(0,n.jsx)(r.td,{children:"Metadata Indexing Include"}),(0,n.jsx)(r.td,{children:"Optional list of metadata fields to include in the indexing."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embedding or Astra Vectorize"}),(0,n.jsx)(r.td,{children:"Allows either an embedding model or an Astra Vectorize configuration."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"metadata_indexing_exclude"}),(0,n.jsx)(r.td,{children:"Metadata Indexing Exclude"}),(0,n.jsx)(r.td,{children:"Optional list of metadata fields to exclude from the indexing."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"collection_indexing_policy"}),(0,n.jsx)(r.td,{children:"Collection Indexing Policy"}),(0,n.jsx)(r.td,{children:"Optional dictionary defining the indexing policy for the collection."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Number of Results"}),(0,n.jsx)(r.td,{children:"Number of results to return in similarity search. Default is 4."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_type"}),(0,n.jsx)(r.td,{children:"Search Type"}),(0,n.jsx)(r.td,{children:'Search type to use. Options are "Similarity", "Similarity with score threshold", "MMR (Max Marginal Relevance)". Default is "Similarity".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_score_threshold"}),(0,n.jsx)(r.td,{children:"Search Score Threshold"}),(0,n.jsx)(r.td,{children:"Minimum similarity score threshold for search results. Default is 0."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_filter"}),(0,n.jsx)(r.td,{children:"Search Metadata Filter"}),(0,n.jsx)(r.td,{children:"Optional dictionary of filters to apply to the search query."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"HyperConvergedDatabaseVectorStore"}),(0,n.jsx)(r.td,{children:"The HCD vector store instance."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"List[Data]"}),(0,n.jsxs)(r.td,{children:["The results of the similarity search as a list of ",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})]})]})]}),"\n",(0,n.jsx)(r.h2,{id:"milvus",children:"Milvus"}),"\n",(0,n.jsxs)(r.p,{children:["This component creates a Milvus Vector Store with search capabilities.\nFor more information, see the ",(0,n.jsx)(r.a,{href:"https://milvus.io/docs",children:"Milvus documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"collection_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Name of the Milvus collection."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"collection_description"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Description of the Milvus collection."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"uri"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Connection URI for Milvus."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"password"}),(0,n.jsx)(r.td,{children:"SecretString"}),(0,n.jsx)(r.td,{children:"Password for Milvus."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"username"}),(0,n.jsx)(r.td,{children:"SecretString"}),(0,n.jsx)(r.td,{children:"Username for Milvus."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"batch_size"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"Number of data to process in a single batch."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_query"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Query for similarity search."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ingest_data"}),(0,n.jsx)(r.td,{children:"Data"}),(0,n.jsx)(r.td,{children:"Data to be ingested into the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embeddings"}),(0,n.jsx)(r.td,{children:"Embedding function to use."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"Number of results to return in search."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_type"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Type of search to perform."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_score_threshold"}),(0,n.jsx)(r.td,{children:"Float"}),(0,n.jsx)(r.td,{children:"Minimum similarity score for search results."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_filter"}),(0,n.jsx)(r.td,{children:"Dict"}),(0,n.jsx)(r.td,{children:"Metadata filters for search query."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"setup_mode"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Configuration mode for setting up the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_dimensions"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"Number of dimensions of the vectors."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"pre_delete_collection"}),(0,n.jsx)(r.td,{children:"Boolean"}),(0,n.jsx)(r.td,{children:"Whether to delete the collection before creating a new one."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsx)(r.tbody,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"Milvus"}),(0,n.jsx)(r.td,{children:"A Milvus vector store instance configured with the specified parameters."})]})})]})]}),"\n",(0,n.jsx)(r.h2,{id:"mongodb-atlas",children:"MongoDB Atlas"}),"\n",(0,n.jsxs)(r.p,{children:["This component creates a MongoDB Atlas Vector Store with search capabilities.\nFor more information, see the ",(0,n.jsx)(r.a,{href:"https://www.mongodb.com/docs/atlas/atlas-vector-search/tutorials/vector-search-quick-start/",children:"MongoDB Atlas documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"mongodb_atlas_cluster_uri"}),(0,n.jsx)(r.td,{children:"SecretString"}),(0,n.jsx)(r.td,{children:"The connection URI for your MongoDB Atlas cluster. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"enable_mtls"}),(0,n.jsx)(r.td,{children:"Boolean"}),(0,n.jsx)(r.td,{children:"Enable mutual TLS authentication. Default: false."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"mongodb_atlas_client_cert"}),(0,n.jsx)(r.td,{children:"SecretString"}),(0,n.jsx)(r.td,{children:"Client certificate combined with private key for mTLS authentication. Required if mTLS is enabled."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"db_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The name of the database to use. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"collection_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The name of the collection to use. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"index_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The name of the Atlas Search index, it should be a Vector Search. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"insert_mode"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:'How to insert new documents into the collection. The options are "append" or "overwrite". Default: "append".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embeddings"}),(0,n.jsx)(r.td,{children:"The embedding model to use."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"Number of results to return in similarity search. Default: 4."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"index_field"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:'The field to index. Default: "embedding".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"filter_field"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The field to filter the index."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_dimensions"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"Embedding context length. Default: 1536."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"similarity"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:'The method used to measure similarity between vectors. The options are "cosine", "euclidean", or "dotProduct". Default: "cosine".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"quantization"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:'Quantization reduces memory costs by converting 32-bit floats to smaller data types. The options are "scalar" or "binary".'})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"MongoDBAtlasVectorSearch"}),(0,n.jsx)(r.td,{children:"The MongoDB Atlas vector store instance."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"List[Data]"}),(0,n.jsxs)(r.td,{children:["The results of the similarity search as a list of ",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})]})]})]}),"\n",(0,n.jsx)(r.h2,{id:"opensearch",children:"Opensearch"}),"\n",(0,n.jsxs)(r.p,{children:["This component creates an Opensearch vector store with search capabilities\nFor more information, see ",(0,n.jsx)(r.a,{href:"https://opensearch.org/platform/search/vector-database.html",children:"Opensearch documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"opensearch_url"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsxs)(r.td,{children:["URL for OpenSearch cluster, such as ",(0,n.jsx)(r.code,{children:"https://192.168.1.1:9200"}),"."]})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"index_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The index name where the vectors are stored in OpenSearch cluster."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_input"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Enter a search query. Leave empty to retrieve all documents or if hybrid search is being used."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ingest_data"}),(0,n.jsx)(r.td,{children:"Data"}),(0,n.jsx)(r.td,{children:"The data to be ingested into the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embeddings"}),(0,n.jsx)(r.td,{children:"The embedding function to use."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_type"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:'The options are "similarity", "similarity_score_threshold", "mmr".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"The number of results to return in search."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_score_threshold"}),(0,n.jsx)(r.td,{children:"Float"}),(0,n.jsx)(r.td,{children:"The minimum similarity score threshold for search results."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"username"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The username for the opensource cluster."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"password"}),(0,n.jsx)(r.td,{children:"SecretString"}),(0,n.jsx)(r.td,{children:"The password for the opensource cluster."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"use_ssl"}),(0,n.jsx)(r.td,{children:"Boolean"}),(0,n.jsx)(r.td,{children:"Use SSL."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"verify_certs"}),(0,n.jsx)(r.td,{children:"Boolean"}),(0,n.jsx)(r.td,{children:"Verify certificates."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"hybrid_search_query"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Provide a custom hybrid search query in JSON format. This allows you to combine vector similarity and keyword matching."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"OpenSearchVectorSearch"}),(0,n.jsx)(r.td,{children:"OpenSearch vector store instance"})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"List[Data]"}),(0,n.jsxs)(r.td,{children:["The results of the similarity search as a list of ",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})]})]})]}),"\n",(0,n.jsx)(r.h2,{id:"pgvector",children:"PGVector"}),"\n",(0,n.jsxs)(r.p,{children:["This component creates a PGVector Vector Store with search capabilities.\nFor more information, see the ",(0,n.jsx)(r.a,{href:"https://github.com/pgvector/pgvector",children:"PGVector documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"pg_server_url"}),(0,n.jsx)(r.td,{children:"SecretString"}),(0,n.jsx)(r.td,{children:"The PostgreSQL server connection string."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"collection_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The table name for the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_query"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The query for similarity search."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ingest_data"}),(0,n.jsx)(r.td,{children:"Data"}),(0,n.jsx)(r.td,{children:"The data to be ingested into the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embeddings"}),(0,n.jsx)(r.td,{children:"The embedding function to use."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"The number of results to return in search."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Display Name"}),(0,n.jsx)(r.th,{children:"Info"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"Vector Store"}),(0,n.jsx)(r.td,{children:"The PGVector vector store instance configured with the specified parameters."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"Search Results"}),(0,n.jsxs)(r.td,{children:["The results of the similarity search as a list of ",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})]})]})]}),"\n",(0,n.jsx)(r.h2,{id:"pinecone",children:"Pinecone"}),"\n",(0,n.jsxs)(r.p,{children:["This component creates a Pinecone Vector Store with search capabilities.\nFor more information, see the ",(0,n.jsx)(r.a,{href:"https://docs.pinecone.io/home",children:"Pinecone documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"index_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The name of the Pinecone index."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"namespace"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The namespace for the index."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"distance_strategy"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The strategy for calculating distance between vectors."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"pinecone_api_key"}),(0,n.jsx)(r.td,{children:"SecretString"}),(0,n.jsx)(r.td,{children:"The API key for Pinecone."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"text_key"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The key in the record to use as text."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_query"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The query for similarity search."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ingest_data"}),(0,n.jsx)(r.td,{children:"Data"}),(0,n.jsx)(r.td,{children:"The data to be ingested into the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embeddings"}),(0,n.jsx)(r.td,{children:"The embedding function to use."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"The number of results to return in search."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Display Name"}),(0,n.jsx)(r.th,{children:"Info"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"Vector Store"}),(0,n.jsx)(r.td,{children:"The Pinecone vector store instance configured with the specified parameters."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"Search Results"}),(0,n.jsxs)(r.td,{children:["The results of the similarity search as a list of ",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})]})]})]}),"\n",(0,n.jsx)(r.h2,{id:"qdrant",children:"Qdrant"}),"\n",(0,n.jsxs)(r.p,{children:["This component creates a Qdrant Vector Store with search capabilities.\nFor more information, see the ",(0,n.jsx)(r.a,{href:"https://qdrant.tech/documentation/",children:"Qdrant documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"collection_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The name of the Qdrant collection."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"host"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The Qdrant server host."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"port"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"The Qdrant server port."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"grpc_port"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"The Qdrant gRPC port."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"api_key"}),(0,n.jsx)(r.td,{children:"SecretString"}),(0,n.jsx)(r.td,{children:"The API key for Qdrant."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"prefix"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The prefix for Qdrant."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"timeout"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"The timeout for Qdrant operations."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"path"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The path for Qdrant."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"url"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The URL for Qdrant."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"distance_func"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The distance function for vector similarity."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"content_payload_key"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The content payload key."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"metadata_payload_key"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The metadata payload key."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_query"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The query for similarity search."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ingest_data"}),(0,n.jsx)(r.td,{children:"Data"}),(0,n.jsx)(r.td,{children:"The data to be ingested into the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embeddings"}),(0,n.jsx)(r.td,{children:"The embedding function to use."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"The number of results to return in search."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"Qdrant"}),(0,n.jsx)(r.td,{children:"A Qdrant vector store instance."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"List[Data]"}),(0,n.jsxs)(r.td,{children:["The results of the similarity search as a list of ",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})]})]})]}),"\n",(0,n.jsx)(r.h2,{id:"redis",children:"Redis"}),"\n",(0,n.jsxs)(r.p,{children:["This component creates a Redis Vector Store with search capabilities.\nFor more information, see the ",(0,n.jsx)(r.a,{href:"https://redis.io/docs/latest/develop/interact/search-and-query/advanced-concepts/vectors/",children:"Redis documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"redis_server_url"}),(0,n.jsx)(r.td,{children:"SecretString"}),(0,n.jsx)(r.td,{children:"The Redis server connection string."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"redis_index_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The name of the Redis index."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"code"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The custom code for Redis (advanced)."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"schema"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The schema for Redis index."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_query"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The query for similarity search."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ingest_data"}),(0,n.jsx)(r.td,{children:"Data"}),(0,n.jsx)(r.td,{children:"The data to be ingested into the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"The number of results to return in search."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embeddings"}),(0,n.jsx)(r.td,{children:"The embedding function to use."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"Redis"}),(0,n.jsx)(r.td,{children:"Redis vector store instance"})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"List[Data]"}),(0,n.jsxs)(r.td,{children:["The results of the similarity search as a list of ",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})]})]})]}),"\n",(0,n.jsx)(r.h2,{id:"supabase",children:"Supabase"}),"\n",(0,n.jsxs)(r.p,{children:["This component creates a connection to a Supabase Vector Store with search capabilities.\nFor more information, see the ",(0,n.jsx)(r.a,{href:"https://supabase.com/docs/guides/ai",children:"Supabase documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"supabase_url"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The URL of the Supabase instance."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"supabase_service_key"}),(0,n.jsx)(r.td,{children:"SecretString"}),(0,n.jsx)(r.td,{children:"The service key for Supabase authentication."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"table_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The name of the table in Supabase."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"query_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The name of the query to use."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_query"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The query for similarity search."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ingest_data"}),(0,n.jsx)(r.td,{children:"Data"}),(0,n.jsx)(r.td,{children:"The data to be ingested into the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embeddings"}),(0,n.jsx)(r.td,{children:"The embedding function to use."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"The number of results to return in search."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"SupabaseVectorStore"}),(0,n.jsx)(r.td,{children:"A Supabase vector store instance."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"List[Data]"}),(0,n.jsxs)(r.td,{children:["The results of the similarity search as a list of ",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})]})]})]}),"\n",(0,n.jsx)(r.h2,{id:"upstash",children:"Upstash"}),"\n",(0,n.jsxs)(r.p,{children:["This component creates an Upstash Vector Store with search capabilities.\nFor more information, see the ",(0,n.jsx)(r.a,{href:"https://upstash.com/docs/introduction",children:"Upstash documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"index_url"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The URL of the Upstash index."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"index_token"}),(0,n.jsx)(r.td,{children:"SecretString"}),(0,n.jsx)(r.td,{children:"The token for the Upstash index."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"text_key"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The key in the record to use as text."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"namespace"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The namespace for the index."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_query"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The query for similarity search."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"metadata_filter"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Filter documents by metadata."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ingest_data"}),(0,n.jsx)(r.td,{children:"Data"}),(0,n.jsx)(r.td,{children:"The data to be ingested into the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embeddings"}),(0,n.jsx)(r.td,{children:"The embedding function to use."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"The number of results to return in search."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"UpstashVectorStore"}),(0,n.jsx)(r.td,{children:"An Upstash vector store instance."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"List[Data]"}),(0,n.jsxs)(r.td,{children:["The results of the similarity search as a list of ",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})]})]})]}),"\n",(0,n.jsx)(r.h2,{id:"vectara",children:"Vectara"}),"\n",(0,n.jsxs)(r.p,{children:["This component creates a Vectara Vector Store with search capabilities.\nFor more information, see the ",(0,n.jsx)(r.a,{href:"https://docs.vectara.com/docs/",children:"Vectara documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vectara_customer_id"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The Vectara customer ID."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vectara_corpus_id"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The Vectara corpus ID."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vectara_api_key"}),(0,n.jsx)(r.td,{children:"SecretString"}),(0,n.jsx)(r.td,{children:"The Vectara API key."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embeddings"}),(0,n.jsx)(r.td,{children:"The embedding function to use (optional)."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ingest_data"}),(0,n.jsx)(r.td,{children:"List[Document/Data]"}),(0,n.jsx)(r.td,{children:"The data to be ingested into the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_query"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The query for similarity search."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"The number of results to return in search."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"VectaraVectorStore"}),(0,n.jsx)(r.td,{children:"Vectara vector store instance."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"List[Data]"}),(0,n.jsxs)(r.td,{children:["The results of the similarity search as a list of ",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})]})]})]}),"\n",(0,n.jsx)(r.h2,{id:"vectara-search",children:"Vectara Search"}),"\n",(0,n.jsxs)(r.p,{children:["This component searches a Vectara Vector Store for documents based on the provided input.\nFor more information, see the ",(0,n.jsx)(r.a,{href:"https://docs.vectara.com/docs/",children:"Vectara documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_type"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:'The type of search, such as "Similarity" or "MMR".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"input_value"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The search query."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vectara_customer_id"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The Vectara customer ID."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vectara_corpus_id"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The Vectara corpus ID."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vectara_api_key"}),(0,n.jsx)(r.td,{children:"SecretString"}),(0,n.jsx)(r.td,{children:"The Vectara API key."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"files_url"}),(0,n.jsx)(r.td,{children:"List[String]"}),(0,n.jsx)(r.td,{children:"Optional URLs for file initialization."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsx)(r.tbody,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"List[Data]"}),(0,n.jsxs)(r.td,{children:["The results of the similarity search as a list of ",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})})]})]}),"\n",(0,n.jsx)(r.h2,{id:"weaviate",children:"Weaviate"}),"\n",(0,n.jsxs)(r.p,{children:["This component facilitates a Weaviate Vector Store setup, optimizing text and document indexing and retrieval.\nFor more information, see the ",(0,n.jsx)(r.a,{href:"https://weaviate.io/developers/weaviate",children:"Weaviate Documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"weaviate_url"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The default instance URL."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_by_text"}),(0,n.jsx)(r.td,{children:"Boolean"}),(0,n.jsx)(r.td,{children:"Indicates whether to search by text."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"api_key"}),(0,n.jsx)(r.td,{children:"SecretString"}),(0,n.jsx)(r.td,{children:"The optional API key for authentication."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"index_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The optional index name."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"text_key"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The default text extraction key."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"input"}),(0,n.jsx)(r.td,{children:"Document"}),(0,n.jsx)(r.td,{children:"The document or record."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embeddings"}),(0,n.jsx)(r.td,{children:"The embedding model used."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"attributes"}),(0,n.jsx)(r.td,{children:"List[String]"}),(0,n.jsx)(r.td,{children:"Optional additional attributes."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsx)(r.tbody,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"WeaviateVectorStore"}),(0,n.jsx)(r.td,{children:"The Weaviate vector store instance."})]})})]})]}),"\n",(0,n.jsx)(r.h2,{id:"weaviate-search",children:"Weaviate Search"}),"\n",(0,n.jsxs)(r.p,{children:["This component searches a Weaviate Vector Store for documents similar to the input.\nFor more information, see the ",(0,n.jsx)(r.a,{href:"https://weaviate.io/developers/weaviate",children:"Weaviate Documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_type"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:'The type of search, such as "Similarity" or "MMR"'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"input_value"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The search query."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"weaviate_url"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The default instance URL."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_by_text"}),(0,n.jsx)(r.td,{children:"Boolean"}),(0,n.jsx)(r.td,{children:"A boolean value that indicates whether to search by text."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"api_key"}),(0,n.jsx)(r.td,{children:"SecretString"}),(0,n.jsx)(r.td,{children:"The optional API key for authentication."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"index_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The optional index name."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"text_key"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The default text extraction key."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embeddings"}),(0,n.jsx)(r.td,{children:"The embeddings model used."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"attributes"}),(0,n.jsx)(r.td,{children:"List[String]"}),(0,n.jsx)(r.td,{children:"Optional additional attributes."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsx)(r.tbody,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"List[Data]"}),(0,n.jsxs)(r.td,{children:["The results of the similarity search as a list of ",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})})]})]})]})}function u(e={}){const{wrapper:r}={...(0,d.R)(),...e.components};return r?(0,n.jsx)(r,{...e,children:(0,n.jsx)(m,{...e})}):m(e)}function p(e,r){throw new Error("Expected "+(r?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}},17886:(e,r,t)=>{t.d(r,{A:()=>d});t(96540);var s=t(64058),n=t(74848);function d({name:e,...r}){const t=s[e];return t?(0,n.jsx)(t,{...r}):null}},42638:(e,r,t)=>{t.d(r,{A:()=>s});const s=t.p+"assets/images/component-hcd-example-flow-b82057600ce5e9e4a0f7ea0a61dcbf7f.png"},59072:(e,r,t)=>{t.d(r,{A:()=>s});const s=t.p+"assets/images/vector-store-agent-retrieval-tool-79066d11008a74c40390f55f7c73bd71.png"},60159:(e,r,t)=>{t.d(r,{A:()=>s});const s=t.p+"assets/images/component-local-db-465d080ccffb1c4db4e137eff9047ff5.png"},67719:(e,r,t)=>{t.d(r,{A:()=>s});const s=t.p+"assets/images/vector-store-retrieval-3201f1ea2f13a5f8a87652c81a5386c6.png"},88690:(e,r,t)=>{t.d(r,{A:()=>s});const s=t.p+"assets/images/component-chroma-db-4cd884c7b7fd4b4be27cda1aec03790b.png"}}]);
\ No newline at end of file
diff --git a/assets/js/f66238ae.22687297.js b/assets/js/f66238ae.22687297.js
deleted file mode 100644
index ae92a496a0..0000000000
--- a/assets/js/f66238ae.22687297.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[3391],{230:(e,r,t)=>{t.r(r),t.d(r,{CH:()=>o,assets:()=>a,chCodeConfig:()=>x,contentTitle:()=>l,default:()=>u,frontMatter:()=>h,metadata:()=>s,toc:()=>j});const s=JSON.parse('{"id":"Components/components-vector-stores","title":"Vector stores","description":"Vector databases store vector data, which backs AI workloads like chatbots and Retrieval Augmented Generation.","source":"@site/docs/Components/components-vector-stores.md","sourceDirName":"Components","slug":"/components-vector-stores","permalink":"/components-vector-stores","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Vector stores","slug":"/components-vector-stores"},"sidebar":"docs","previous":{"title":"Tools","permalink":"/components-tools"},"next":{"title":"Use Langflow Agents","permalink":"/agents"}}');var n=t(74848),d=t(28453),i=t(24754),c=t(17886);const h={title:"Vector stores",slug:"/components-vector-stores"},l="Vector store components in Langflow",a={},o={annotations:i.hk,Code:i.Cy},x={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},j=[{value:"Use a vector store component in a flow",id:"use-a-vector-store-component-in-a-flow",level:2},{value:"Astra DB Vector Store",id:"astra-db-vector-store",level:2},{value:"Generate embeddings",id:"generate-embeddings",level:3},{value:"Hybrid search",id:"hybrid-search",level:3},{value:"AstraDB Graph vector store",id:"astradb-graph-vector-store",level:2},{value:"Cassandra",id:"cassandra",level:2},{value:"Cassandra Graph Vector Store",id:"cassandra-graph-vector-store",level:2},{value:"Chroma DB",id:"chroma-db",level:2},{value:"Clickhouse",id:"clickhouse",level:2},{value:"Couchbase",id:"couchbase",level:2},{value:"Local DB",id:"local-db",level:2},{value:"Elasticsearch",id:"elasticsearch",level:2},{value:"FAISS",id:"faiss",level:2},{value:"Graph RAG",id:"graph-rag",level:2},{value:"Hyper-Converged Database (HCD)",id:"hyper-converged-database-hcd",level:2},{value:"Milvus",id:"milvus",level:2},{value:"MongoDB Atlas",id:"mongodb-atlas",level:2},{value:"Opensearch",id:"opensearch",level:2},{value:"PGVector",id:"pgvector",level:2},{value:"Pinecone",id:"pinecone",level:2},{value:"Qdrant",id:"qdrant",level:2},{value:"Redis",id:"redis",level:2},{value:"Supabase",id:"supabase",level:2},{value:"Upstash",id:"upstash",level:2},{value:"Vectara",id:"vectara",level:2},{value:"Vectara Search",id:"vectara-search",level:2},{value:"Weaviate",id:"weaviate",level:2},{value:"Weaviate Search",id:"weaviate-search",level:2}];function m(e){const r={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,d.R)(),...e.components},{Details:s}=r;return o||p("CH",!1),o.Code||p("CH.Code",!0),s||p("Details",!0),(0,n.jsxs)(n.Fragment,{children:[(0,n.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,n.jsx)(r.header,{children:(0,n.jsx)(r.h1,{id:"vector-store-components-in-langflow",children:"Vector store components in Langflow"})}),"\n",(0,n.jsx)(r.p,{children:"Vector databases store vector data, which backs AI workloads like chatbots and Retrieval Augmented Generation."}),"\n",(0,n.jsx)(r.p,{children:"Vector database components establish connections to existing vector databases or create in-memory vector stores for storing and retrieving vector data."}),"\n",(0,n.jsxs)(r.p,{children:["Vector database components are distinct from ",(0,n.jsx)(r.a,{href:"/components-memories",children:"memory components"}),", which are built specifically for storing and retrieving chat messages from external databases."]}),"\n",(0,n.jsx)(r.h2,{id:"use-a-vector-store-component-in-a-flow",children:"Use a vector store component in a flow"}),"\n",(0,n.jsxs)(r.p,{children:["This example uses the ",(0,n.jsx)(r.strong,{children:"Astra DB vector store"})," component. Your vector store component's parameters and authentication may be different, but the document ingestion workflow is the same. A document is loaded from a local machine and chunked. The Astra DB vector store generates embeddings with the connected ",(0,n.jsx)(r.a,{href:"/components-models",children:"model"})," component, and stores them in the connected Astra DB database."]}),"\n",(0,n.jsx)(r.p,{children:"This vector data can then be retrieved for workloads like Retrieval Augmented Generation."}),"\n",(0,n.jsx)(r.p,{children:(0,n.jsx)(r.img,{src:t(67719).A+"",width:"2734",height:"1402"})}),"\n",(0,n.jsxs)(r.p,{children:["The user's chat input is embedded and compared to the vectors embedded during document ingestion for a similarity search.\nThe results are output from the vector database component as a ",(0,n.jsx)(r.a,{href:"/concepts-objects",children:"Data"})," object and parsed into text.\nThis text fills the ",(0,n.jsx)(r.code,{children:"{context}"})," variable in the ",(0,n.jsx)(r.strong,{children:"Prompt"})," component, which informs the ",(0,n.jsx)(r.strong,{children:"Open AI model"})," component's responses."]}),"\n",(0,n.jsxs)(r.p,{children:["Alternatively, connect the vector database component's ",(0,n.jsx)(r.strong,{children:"Retriever"})," port to a ",(0,n.jsx)(r.a,{href:"components-tools#retriever-tool",children:"retriever tool"}),", and then to an ",(0,n.jsx)(r.a,{href:"/components-agents",children:"agent"})," component. This enables the agent to use your vector database as a tool and make decisions based on the available data."]}),"\n",(0,n.jsx)(r.p,{children:(0,n.jsx)(r.img,{src:t(59072).A+"",width:"2414",height:"1602"})}),"\n",(0,n.jsx)(r.h2,{id:"astra-db-vector-store",children:"Astra DB Vector Store"}),"\n",(0,n.jsx)(r.p,{children:"This component implements a Vector Store using Astra DB with search capabilities."}),"\n",(0,n.jsxs)(r.p,{children:["For more information, see the ",(0,n.jsx)(r.a,{href:"https://docs.datastax.com/en/astra-db-serverless/databases/create-database.html",children:"DataStax documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Display Name"}),(0,n.jsx)(r.th,{children:"Info"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"token"}),(0,n.jsx)(r.td,{children:"Astra DB Application Token"}),(0,n.jsx)(r.td,{children:"The authentication token for accessing Astra DB."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"environment"}),(0,n.jsx)(r.td,{children:"Environment"}),(0,n.jsxs)(r.td,{children:["The environment for the Astra DB API Endpoint. For example, ",(0,n.jsx)(r.code,{children:"dev"})," or ",(0,n.jsx)(r.code,{children:"prod"}),"."]})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"database_name"}),(0,n.jsx)(r.td,{children:"Database"}),(0,n.jsx)(r.td,{children:"The database name for the Astra DB instance."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"api_endpoint"}),(0,n.jsx)(r.td,{children:"Astra DB API Endpoint"}),(0,n.jsx)(r.td,{children:"The API endpoint for the Astra DB instance. This supersedes the database selection."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"collection_name"}),(0,n.jsx)(r.td,{children:"Collection"}),(0,n.jsx)(r.td,{children:"The name of the collection within Astra DB where the vectors are stored."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"keyspace"}),(0,n.jsx)(r.td,{children:"Keyspace"}),(0,n.jsx)(r.td,{children:"An optional keyspace within Astra DB to use for the collection."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding_choice"}),(0,n.jsx)(r.td,{children:"Embedding Model or Astra Vectorize"}),(0,n.jsx)(r.td,{children:"Choose an embedding model or use Astra vectorize."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding_model"}),(0,n.jsx)(r.td,{children:"Embedding Model"}),(0,n.jsx)(r.td,{children:"Specify the embedding model. Not required for Astra vectorize collections."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Number of Search Results"}),(0,n.jsxs)(r.td,{children:["The number of search results to return. Default:",(0,n.jsx)(r.code,{children:"4"}),"."]})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_type"}),(0,n.jsx)(r.td,{children:"Search Type"}),(0,n.jsxs)(r.td,{children:["The search type to use. The options are ",(0,n.jsx)(r.code,{children:"Similarity"}),", ",(0,n.jsx)(r.code,{children:"Similarity with score threshold"}),", and ",(0,n.jsx)(r.code,{children:"MMR (Max Marginal Relevance)"}),"."]})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_score_threshold"}),(0,n.jsx)(r.td,{children:"Search Score Threshold"}),(0,n.jsxs)(r.td,{children:["The minimum similarity score threshold for search results when using the ",(0,n.jsx)(r.code,{children:"Similarity with score threshold"})," option."]})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"advanced_search_filter"}),(0,n.jsx)(r.td,{children:"Search Metadata Filter"}),(0,n.jsx)(r.td,{children:"An optional dictionary of filters to apply to the search query."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"autodetect_collection"}),(0,n.jsx)(r.td,{children:"Autodetect Collection"}),(0,n.jsx)(r.td,{children:"A boolean flag to determine whether to autodetect the collection."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"content_field"}),(0,n.jsx)(r.td,{children:"Content Field"}),(0,n.jsx)(r.td,{children:"A field to use as the text content field for the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"deletion_field"}),(0,n.jsx)(r.td,{children:"Deletion Based On Field"}),(0,n.jsx)(r.td,{children:"When provided, documents in the target collection with metadata field values matching the input metadata field value are deleted before new data is loaded."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ignore_invalid_documents"}),(0,n.jsx)(r.td,{children:"Ignore Invalid Documents"}),(0,n.jsx)(r.td,{children:"A boolean flag to determine whether to ignore invalid documents at runtime."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"astradb_vectorstore_kwargs"}),(0,n.jsx)(r.td,{children:"AstraDBVectorStore Parameters"}),(0,n.jsx)(r.td,{children:"An optional dictionary of additional parameters for the AstraDBVectorStore."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Display Name"}),(0,n.jsx)(r.th,{children:"Info"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"Vector Store"}),(0,n.jsx)(r.td,{children:"The Astra DB vector store instance configured with the specified parameters."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"Search Results"}),(0,n.jsxs)(r.td,{children:["The results of the similarity search as a list of ",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})]})]})]}),"\n",(0,n.jsx)(r.h3,{id:"generate-embeddings",children:"Generate embeddings"}),"\n",(0,n.jsxs)(r.p,{children:["The ",(0,n.jsx)(r.strong,{children:"Astra DB Vector Store"})," component offers two methods for generating embeddings."]}),"\n",(0,n.jsxs)(r.ol,{children:["\n",(0,n.jsxs)(r.li,{children:["\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"Embedding Model"}),": Use your own embedding model by connecting an ",(0,n.jsx)(r.a,{href:"/components-embedding-models",children:"Embeddings"})," component in Langflow."]}),"\n"]}),"\n",(0,n.jsxs)(r.li,{children:["\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"Astra Vectorize"}),": Use Astra DB's built-in embedding generation service. When creating a new collection, choose the embeddings provider and models, including NVIDIA's ",(0,n.jsx)(r.code,{children:"NV-Embed-QA"})," model hosted by Datastax."]}),"\n"]}),"\n"]}),"\n",(0,n.jsx)(r.admonition,{type:"important",children:(0,n.jsx)(r.p,{children:"The embedding model selection is made when creating a new collection and cannot be changed later."})}),"\n",(0,n.jsxs)(r.p,{children:["For an example of using the ",(0,n.jsx)(r.strong,{children:"Astra DB Vector Store"})," component with an embedding model, see the ",(0,n.jsx)(r.a,{href:"/vector-store-rag",children:"Vector Store RAG starter project"}),"."]}),"\n",(0,n.jsxs)(r.p,{children:["For more information, see the ",(0,n.jsx)(r.a,{href:"https://docs.datastax.com/en/astra-db-serverless/databases/embedding-generation.html",children:"Astra DB Serverless documentation"}),"."]}),"\n",(0,n.jsx)(r.h3,{id:"hybrid-search",children:"Hybrid search"}),"\n",(0,n.jsxs)(r.p,{children:["The ",(0,n.jsx)(r.strong,{children:"Astra DB"})," component includes ",(0,n.jsx)(r.strong,{children:"hybrid search"}),", which is enabled by default."]}),"\n",(0,n.jsxs)(r.p,{children:["The component fields related to hybrid search are ",(0,n.jsx)(r.strong,{children:"Search Query"}),", ",(0,n.jsx)(r.strong,{children:"Lexical Terms"}),", and ",(0,n.jsx)(r.strong,{children:"Reranker"}),"."]}),"\n",(0,n.jsxs)(r.ul,{children:["\n",(0,n.jsxs)(r.li,{children:[(0,n.jsx)(r.strong,{children:"Search Query"})," finds results by vector similarity."]}),"\n",(0,n.jsxs)(r.li,{children:[(0,n.jsx)(r.strong,{children:"Lexical Terms"})," is a comma-separated string of keywords, like ",(0,n.jsx)(r.code,{children:"features, data, attributes, characteristics"}),"."]}),"\n",(0,n.jsxs)(r.li,{children:[(0,n.jsx)(r.strong,{children:"Reranker"})," is the re-ranker model used in the hybrid search.\nThe re-ranker model is ",(0,n.jsx)(r.code,{children:"nvidia/llama-3.2-nv.reranker"}),"."]}),"\n"]}),"\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.a,{href:"https://docs.datastax.com/en/astra-db-serverless/databases/hybrid-search.html",children:"Hybrid search"})," performs a vector similarity search and a lexical search, compares the results of both searches, and then returns the most relevant results overall."]}),"\n",(0,n.jsx)(r.admonition,{type:"important",children:(0,n.jsxs)(r.p,{children:["To use hybrid search, your collection must be created with vector, lexical, and rerank capabilities enabled. These capabilities are enabled by default when you create a collection in a database in the AWS us-east-2 region.\nFor more information, see the ",(0,n.jsx)(r.a,{href:"https://docs.datastax.com/en/astra-db-serverless/api-reference/collection-methods/create-collection.html#example-hybrid",children:"DataStax documentation"}),"."]})}),"\n",(0,n.jsxs)(r.p,{children:["To use ",(0,n.jsx)(r.strong,{children:"Hybrid search"})," in the ",(0,n.jsx)(r.strong,{children:"Astra DB"})," component, do the following:"]}),"\n",(0,n.jsxs)(r.ol,{children:["\n",(0,n.jsxs)(r.li,{children:["Click ",(0,n.jsx)(r.strong,{children:"New Flow"})," > ",(0,n.jsx)(r.strong,{children:"RAG"})," > ",(0,n.jsx)(r.strong,{children:"Hybrid Search RAG"}),"."]}),"\n",(0,n.jsxs)(r.li,{children:["In the ",(0,n.jsx)(r.strong,{children:"OpenAI"})," model component, add your ",(0,n.jsx)(r.strong,{children:"OpenAI API key"}),"."]}),"\n",(0,n.jsxs)(r.li,{children:["In the ",(0,n.jsx)(r.strong,{children:"Astra DB"})," vector store component, add your ",(0,n.jsx)(r.strong,{children:"Astra DB Application Token"}),"."]}),"\n",(0,n.jsxs)(r.li,{children:["In the ",(0,n.jsx)(r.strong,{children:"Database"})," field, select your database."]}),"\n",(0,n.jsxs)(r.li,{children:["In the ",(0,n.jsx)(r.strong,{children:"Collection"})," field, select or create a collection with hybrid search capabilities enabled."]}),"\n",(0,n.jsxs)(r.li,{children:["In the ",(0,n.jsx)(r.strong,{children:"Playground"}),", enter a question about your data, such as ",(0,n.jsx)(r.code,{children:"What are the features of my data?"}),"\nYour query is sent to two components: an ",(0,n.jsx)(r.strong,{children:"OpenAI"})," model component and the ",(0,n.jsx)(r.strong,{children:"Astra DB"})," vector database component.\nThe ",(0,n.jsx)(r.strong,{children:"OpenAI"})," component contains a prompt for creating the lexical query from your input:"]}),"\n"]}),"\n",(0,n.jsx)(o.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"You are a database query planner that takes a user's requests, and then converts to a search against the subject matter in question.",props:{}}]},{tokens:[{content:"You should convert the query into:",props:{}}]},{tokens:[{content:"1. A list of keywords to use against a Lucene text analyzer index, no more than 4. Strictly unigrams.",props:{}}]},{tokens:[{content:"2. A question to use as the basis for a QA embedding engine.",props:{}}]},{tokens:[{content:"Avoid common keywords associated with the user's subject matter.",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,n.jsxs)(r.ol,{start:"7",children:["\n",(0,n.jsxs)(r.li,{children:["To view the keywords and questions the ",(0,n.jsx)(r.strong,{children:"OpenAI"})," component generates from your collection, in the ",(0,n.jsx)(r.strong,{children:"OpenAI"})," component, click ",(0,n.jsx)(c.A,{name:"TextSearch","aria-label":"Inspect icon"}),"."]}),"\n"]}),"\n",(0,n.jsx)(o.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"1. Keywords: features, data, attributes, characteristics",props:{}}]},{tokens:[{content:"2. Question: What characteristics can be identified in my data?",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,n.jsxs)(r.ol,{start:"8",children:["\n",(0,n.jsxs)(r.li,{children:["\n",(0,n.jsxs)(r.p,{children:["To view the ",(0,n.jsx)(r.a,{href:"/concepts-objects#dataframe-object",children:"DataFrame"})," generated from the ",(0,n.jsx)(r.strong,{children:"OpenAI"})," component's response, in the ",(0,n.jsx)(r.strong,{children:"Structured Output"})," component, click ",(0,n.jsx)(c.A,{name:"TextSearch","aria-label":"Inspect icon"}),".\nThe DataFrame is passed to a ",(0,n.jsx)(r.strong,{children:"Parser"})," component, which parses the contents of the ",(0,n.jsx)(r.strong,{children:"Keywords"})," column into a string."]}),"\n",(0,n.jsxs)(r.p,{children:["This string of comma-separated words is passed to the ",(0,n.jsx)(r.strong,{children:"Lexical Terms"})," port of the ",(0,n.jsx)(r.strong,{children:"Astra DB"})," component.\nNote that the ",(0,n.jsx)(r.strong,{children:"Search Query"})," port of the Astra DB port is connected to the ",(0,n.jsx)(r.strong,{children:"Chat Input"})," component from step 6.\nThis ",(0,n.jsx)(r.strong,{children:"Search Query"})," is vectorized, and both the ",(0,n.jsx)(r.strong,{children:"Search Query"})," and ",(0,n.jsx)(r.strong,{children:"Lexical Terms"})," content are sent to the reranker at the ",(0,n.jsx)(r.code,{children:"find_and_rerank"})," endpoint."]}),"\n",(0,n.jsxs)(r.p,{children:["The reranker compares the vector search results against the string of terms from the lexical search.\nThe highest-ranked results of your hybrid search are returned to the ",(0,n.jsx)(r.strong,{children:"Playground"}),"."]}),"\n"]}),"\n"]}),"\n",(0,n.jsxs)(r.p,{children:["For more information, see the ",(0,n.jsx)(r.a,{href:"https://docs.datastax.com/en/astra-db-serverless/databases/hybrid-search.html",children:"DataStax documentation"}),"."]}),"\n",(0,n.jsx)(r.h2,{id:"astradb-graph-vector-store",children:"AstraDB Graph vector store"}),"\n",(0,n.jsxs)(r.p,{children:["This component implements a Vector Store using AstraDB with graph capabilities.\nFor more information, see the ",(0,n.jsx)(r.a,{href:"https://docs.datastax.com/en/astra-db-serverless/tutorials/graph-rag.html",children:"Astra DB Serverless documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Display Name"}),(0,n.jsx)(r.th,{children:"Info"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"collection_name"}),(0,n.jsx)(r.td,{children:"Collection Name"}),(0,n.jsx)(r.td,{children:"The name of the collection within AstraDB where the vectors are stored. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"token"}),(0,n.jsx)(r.td,{children:"Astra DB Application Token"}),(0,n.jsx)(r.td,{children:"Authentication token for accessing AstraDB. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"api_endpoint"}),(0,n.jsx)(r.td,{children:"API Endpoint"}),(0,n.jsx)(r.td,{children:"API endpoint URL for the AstraDB service. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_input"}),(0,n.jsx)(r.td,{children:"Search Input"}),(0,n.jsx)(r.td,{children:"Query string for similarity search."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ingest_data"}),(0,n.jsx)(r.td,{children:"Ingest Data"}),(0,n.jsx)(r.td,{children:"Data to be ingested into the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"namespace"}),(0,n.jsx)(r.td,{children:"Namespace"}),(0,n.jsx)(r.td,{children:"Optional namespace within AstraDB to use for the collection."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embedding Model"}),(0,n.jsx)(r.td,{children:"Embedding model to use."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"metric"}),(0,n.jsx)(r.td,{children:"Metric"}),(0,n.jsx)(r.td,{children:'Distance metric for vector comparisons. The options are "cosine", "euclidean", "dot_product".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"setup_mode"}),(0,n.jsx)(r.td,{children:"Setup Mode"}),(0,n.jsx)(r.td,{children:'Configuration mode for setting up the vector store. The options are "Sync", "Async", "Off".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"pre_delete_collection"}),(0,n.jsx)(r.td,{children:"Pre Delete Collection"}),(0,n.jsx)(r.td,{children:"Boolean flag to determine whether to delete the collection before creating a new one."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Number of Results"}),(0,n.jsx)(r.td,{children:"Number of results to return in similarity search. Default: 4."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_type"}),(0,n.jsx)(r.td,{children:"Search Type"}),(0,n.jsx)(r.td,{children:'Search type to use. The options are "Similarity", "Graph Traversal", "Hybrid".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"traversal_depth"}),(0,n.jsx)(r.td,{children:"Traversal Depth"}),(0,n.jsx)(r.td,{children:"Maximum depth for graph traversal searches. Default: 1."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_score_threshold"}),(0,n.jsx)(r.td,{children:"Search Score Threshold"}),(0,n.jsx)(r.td,{children:"Minimum similarity score threshold for search results."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_filter"}),(0,n.jsx)(r.td,{children:"Search Metadata Filter"}),(0,n.jsx)(r.td,{children:"Optional dictionary of filters to apply to the search query."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Display Name"}),(0,n.jsx)(r.th,{children:"Info"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"Vector Store"}),(0,n.jsx)(r.td,{children:"The Graph RAG vector store instance configured with the specified parameters."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"Search Results"}),(0,n.jsxs)(r.td,{children:["The results of the similarity search as a list of ",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})]})]})]}),"\n",(0,n.jsx)(r.h2,{id:"cassandra",children:"Cassandra"}),"\n",(0,n.jsxs)(r.p,{children:["This component creates a Cassandra Vector Store with search capabilities.\nFor more information, see the ",(0,n.jsx)(r.a,{href:"https://cassandra.apache.org/doc/latest/cassandra/vector-search/overview.html",children:"Cassandra documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"database_ref"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Contact points for the database or AstraDB database ID."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"username"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Username for the database (leave empty for AstraDB)."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"token"}),(0,n.jsx)(r.td,{children:"SecretString"}),(0,n.jsx)(r.td,{children:"User password for the database or AstraDB token."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"keyspace"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Table Keyspace or AstraDB namespace."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"table_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Name of the table or AstraDB collection."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ttl_seconds"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"Time-to-live for added texts."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"batch_size"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"Number of data to process in a single batch."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"setup_mode"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Configuration mode for setting up the Cassandra table."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"cluster_kwargs"}),(0,n.jsx)(r.td,{children:"Dict"}),(0,n.jsx)(r.td,{children:"Additional keyword arguments for the Cassandra cluster."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_query"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Query for similarity search."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ingest_data"}),(0,n.jsx)(r.td,{children:"Data"}),(0,n.jsx)(r.td,{children:"Data to be ingested into the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embeddings"}),(0,n.jsx)(r.td,{children:"Embedding function to use."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"Number of results to return in search."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_type"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Type of search to perform."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_score_threshold"}),(0,n.jsx)(r.td,{children:"Float"}),(0,n.jsx)(r.td,{children:"Minimum similarity score for search results."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_filter"}),(0,n.jsx)(r.td,{children:"Dict"}),(0,n.jsx)(r.td,{children:"Metadata filters for search query."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"body_search"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Document textual search terms."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"enable_body_search"}),(0,n.jsx)(r.td,{children:"Boolean"}),(0,n.jsx)(r.td,{children:"Flag to enable body search."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"Cassandra"}),(0,n.jsx)(r.td,{children:"The Cassandra vector store instance configured with the specified parameters."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"List[Data]"}),(0,n.jsxs)(r.td,{children:["The results of the similarity search as a list of ",(0,n.jsx)(r.code,{children:"Data"})," objects."]})]})]})]})]}),"\n",(0,n.jsx)(r.h2,{id:"cassandra-graph-vector-store",children:"Cassandra Graph Vector Store"}),"\n",(0,n.jsx)(r.p,{children:"This component implements a Cassandra Graph Vector Store with search capabilities."}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Display Name"}),(0,n.jsx)(r.th,{children:"Info"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"database_ref"}),(0,n.jsx)(r.td,{children:"Contact Points / Astra Database ID"}),(0,n.jsx)(r.td,{children:"The contact points for the database or AstraDB database ID. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"username"}),(0,n.jsx)(r.td,{children:"Username"}),(0,n.jsx)(r.td,{children:"The username for the database. Leave this field empty for AstraDB."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"token"}),(0,n.jsx)(r.td,{children:"Password / AstraDB Token"}),(0,n.jsx)(r.td,{children:"The user password for the database or AstraDB token. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"keyspace"}),(0,n.jsx)(r.td,{children:"Keyspace"}),(0,n.jsx)(r.td,{children:"The table Keyspace or AstraDB namespace. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"table_name"}),(0,n.jsx)(r.td,{children:"Table Name"}),(0,n.jsx)(r.td,{children:"The name of the table or AstraDB collection where vectors are stored. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"setup_mode"}),(0,n.jsx)(r.td,{children:"Setup Mode"}),(0,n.jsx)(r.td,{children:'The configuration mode for setting up the Cassandra table. The options are "Sync" or "Off". Default: "Sync".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"cluster_kwargs"}),(0,n.jsx)(r.td,{children:"Cluster arguments"}),(0,n.jsx)(r.td,{children:"An optional dictionary of additional keyword arguments for the Cassandra cluster."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_query"}),(0,n.jsx)(r.td,{children:"Search Query"}),(0,n.jsx)(r.td,{children:"The query string for similarity search."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ingest_data"}),(0,n.jsx)(r.td,{children:"Ingest Data"}),(0,n.jsx)(r.td,{children:"The list of data to be ingested into the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embedding"}),(0,n.jsx)(r.td,{children:"The embedding model to use."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Number of Results"}),(0,n.jsx)(r.td,{children:"The number of results to return in similarity search. Default: 4."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_type"}),(0,n.jsx)(r.td,{children:"Search Type"}),(0,n.jsx)(r.td,{children:'The search type to use. The options are "Traversal", "MMR traversal", "Similarity", "Similarity with score threshold", or "MMR (Max Marginal Relevance)". Default: "Traversal".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"depth"}),(0,n.jsx)(r.td,{children:"Depth of traversal"}),(0,n.jsx)(r.td,{children:'The maximum depth of edges to traverse. Used for "Traversal" or "MMR traversal" search types. Default: 1.'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_score_threshold"}),(0,n.jsx)(r.td,{children:"Search Score Threshold"}),(0,n.jsx)(r.td,{children:'The minimum similarity score threshold for search results. Used for "Similarity with score threshold" search types.'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_filter"}),(0,n.jsx)(r.td,{children:"Search Metadata Filter"}),(0,n.jsx)(r.td,{children:"An optional dictionary of filters to apply to the search query."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Display Name"}),(0,n.jsx)(r.th,{children:"Info"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"Vector Store"}),(0,n.jsx)(r.td,{children:"The Cassandra Graph vector store instance configured with the specified parameters."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"Search Results"}),(0,n.jsxs)(r.td,{children:["The results of the similarity search as a list of ",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})]})]})]}),"\n",(0,n.jsx)(r.h2,{id:"chroma-db",children:"Chroma DB"}),"\n",(0,n.jsx)(r.p,{children:"This component creates a Chroma Vector Store with search capabilities."}),"\n",(0,n.jsx)(r.p,{children:"The Chroma DB component creates an ephemeral vector database for experimentation and vector storage."}),"\n",(0,n.jsxs)(r.ol,{children:["\n",(0,n.jsxs)(r.li,{children:["To use this component in a flow, connect it to a component that outputs ",(0,n.jsx)(r.strong,{children:"Data"})," or ",(0,n.jsx)(r.strong,{children:"DataFrame"}),".\nThis example splits text from a ",(0,n.jsx)(r.a,{href:"/components-data#url",children:"URL"})," component, and computes embeddings with the connected ",(0,n.jsx)(r.strong,{children:"OpenAI Embeddings"})," component. Chroma DB computes embeddings by default, but you can connect your own embeddings model, as seen in this example."]}),"\n"]}),"\n",(0,n.jsx)(r.p,{children:(0,n.jsx)(r.img,{alt:"ChromaDB receiving split text",src:t(88690).A+"",width:"1127",height:"811"})}),"\n",(0,n.jsxs)(r.ol,{start:"2",children:["\n",(0,n.jsxs)(r.li,{children:["In the ",(0,n.jsx)(r.strong,{children:"Chroma DB"})," component, in the ",(0,n.jsx)(r.strong,{children:"Collection"})," field, enter a name for your embeddings collection."]}),"\n",(0,n.jsxs)(r.li,{children:["Optionally, to persist the Chroma database, in the ",(0,n.jsx)(r.strong,{children:"Persist"})," field, enter a directory to store the ",(0,n.jsx)(r.code,{children:"chroma.sqlite3"})," file.\nThis example uses ",(0,n.jsx)(r.code,{children:"./chroma-db"})," to create a directory relative to where Langflow is running."]}),"\n",(0,n.jsxs)(r.li,{children:["To load data and embeddings into your Chroma database, in the ",(0,n.jsx)(r.strong,{children:"Chroma DB"})," component, click ",(0,n.jsx)(c.A,{name:"Play","aria-label":"Play icon"}),"."]}),"\n"]}),"\n",(0,n.jsx)(r.admonition,{type:"tip",children:(0,n.jsxs)(r.p,{children:["When loading duplicate documents, enable the ",(0,n.jsx)(r.strong,{children:"Allow Duplicates"})," option in Chroma DB if you want to store multiple copies of the same content, or disable it to automatically deduplicate your data."]})}),"\n",(0,n.jsxs)(r.ol,{start:"5",children:["\n",(0,n.jsxs)(r.li,{children:["To view the split data, in the ",(0,n.jsx)(r.strong,{children:"Split Text"})," component, click ",(0,n.jsx)(c.A,{name:"TextSearch","aria-label":"Inspect icon"}),"."]}),"\n",(0,n.jsxs)(r.li,{children:["To query your loaded data, open the ",(0,n.jsx)(r.strong,{children:"Playground"})," and query your database.\nYour input is converted to vector data and compared to the stored vectors in a vector similarity search."]}),"\n"]}),"\n",(0,n.jsxs)(r.p,{children:["For more information, see the ",(0,n.jsx)(r.a,{href:"https://docs.trychroma.com/",children:"Chroma documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"collection_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:'The name of the Chroma collection. Default: "langflow".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"persist_directory"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The directory to persist the Chroma database."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_query"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The query to search for in the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ingest_data"}),(0,n.jsx)(r.td,{children:"Data"}),(0,n.jsxs)(r.td,{children:["The data to ingest into the vector store (list of ",(0,n.jsx)(r.code,{children:"Data"})," objects)."]})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embeddings"}),(0,n.jsx)(r.td,{children:"The embedding function to use for the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"chroma_server_cors_allow_origins"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The CORS allow origins for the Chroma server."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"chroma_server_host"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The host for the Chroma server."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"chroma_server_http_port"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"The HTTP port for the Chroma server."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"chroma_server_grpc_port"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"The gRPC port for the Chroma server."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"chroma_server_ssl_enabled"}),(0,n.jsx)(r.td,{children:"Boolean"}),(0,n.jsx)(r.td,{children:"Enable SSL for the Chroma server."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"allow_duplicates"}),(0,n.jsx)(r.td,{children:"Boolean"}),(0,n.jsx)(r.td,{children:"Allow duplicate documents in the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_type"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:'The type of search to perform: "Similarity" or "MMR".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsxs)(r.td,{children:["The number of results to return from the search. Default: ",(0,n.jsx)(r.code,{children:"10"}),"."]})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"limit"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsxs)(r.td,{children:["The limit of the number of records to compare when ",(0,n.jsx)(r.code,{children:"Allow Duplicates"})," is ",(0,n.jsx)(r.code,{children:"False"}),"."]})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"Chroma"}),(0,n.jsx)(r.td,{children:"The Chroma vector store instance."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"List[Data]"}),(0,n.jsxs)(r.td,{children:["The results of the similarity search as a list of ",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})]})]})]}),"\n",(0,n.jsx)(r.h2,{id:"clickhouse",children:"Clickhouse"}),"\n",(0,n.jsxs)(r.p,{children:["This component implements a Clickhouse Vector Store with search capabilities.\nFor more information, see the ",(0,n.jsx)(r.a,{href:"https://clickhouse.com/docs/en/intro",children:"Clickhouse Documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Display Name"}),(0,n.jsx)(r.th,{children:"Info"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"host"}),(0,n.jsx)(r.td,{children:"hostname"}),(0,n.jsx)(r.td,{children:'The Clickhouse server hostname. Required. Default: "localhost".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"port"}),(0,n.jsx)(r.td,{children:"port"}),(0,n.jsx)(r.td,{children:"The Clickhouse server port. Required. Default: 8123."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"database"}),(0,n.jsx)(r.td,{children:"database"}),(0,n.jsx)(r.td,{children:"The Clickhouse database name. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"table"}),(0,n.jsx)(r.td,{children:"Table name"}),(0,n.jsx)(r.td,{children:"The Clickhouse table name. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"username"}),(0,n.jsx)(r.td,{children:"The ClickHouse user name."}),(0,n.jsx)(r.td,{children:"Username for authentication. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"password"}),(0,n.jsx)(r.td,{children:"The password for username."}),(0,n.jsx)(r.td,{children:"Password for authentication. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"index_type"}),(0,n.jsx)(r.td,{children:"index_type"}),(0,n.jsx)(r.td,{children:'Type of the index. The options are "annoy" and "vector_similarity". Default: "annoy".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"metric"}),(0,n.jsx)(r.td,{children:"metric"}),(0,n.jsx)(r.td,{children:'Metric to compute distance. The options are "angular", "euclidean", "manhattan", "hamming", "dot". Default: "angular".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"secure"}),(0,n.jsx)(r.td,{children:"Use https/TLS"}),(0,n.jsx)(r.td,{children:"Overrides inferred values from the interface or port arguments. Default: false."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"index_param"}),(0,n.jsx)(r.td,{children:"Param of the index"}),(0,n.jsx)(r.td,{children:"Index parameters. Default: \"'L2Distance',100\"."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"index_query_params"}),(0,n.jsx)(r.td,{children:"index query params"}),(0,n.jsx)(r.td,{children:"Additional index query parameters."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_query"}),(0,n.jsx)(r.td,{children:"Search Query"}),(0,n.jsx)(r.td,{children:"The query string for similarity search."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ingest_data"}),(0,n.jsx)(r.td,{children:"Ingest Data"}),(0,n.jsx)(r.td,{children:"The data to be ingested into the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embedding"}),(0,n.jsx)(r.td,{children:"The embedding model to use."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Number of Results"}),(0,n.jsx)(r.td,{children:"The number of results to return in similarity search. Default: 4."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"score_threshold"}),(0,n.jsx)(r.td,{children:"Score threshold"}),(0,n.jsx)(r.td,{children:"The threshold for similarity scores."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Display Name"}),(0,n.jsx)(r.th,{children:"Info"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"Vector Store"}),(0,n.jsx)(r.td,{children:"The Clickhouse vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"Search Results"}),(0,n.jsx)(r.td,{children:"The results of the similarity search as a list of Data objects."})]})]})]})]}),"\n",(0,n.jsx)(r.h2,{id:"couchbase",children:"Couchbase"}),"\n",(0,n.jsxs)(r.p,{children:["This component creates a Couchbase Vector Store with search capabilities.\nFor more information, see the ",(0,n.jsx)(r.a,{href:"https://docs.couchbase.com/home/index.html",children:"Couchbase documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"couchbase_connection_string"}),(0,n.jsx)(r.td,{children:"SecretString"}),(0,n.jsx)(r.td,{children:"Couchbase Cluster connection string. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"couchbase_username"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Couchbase username. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"couchbase_password"}),(0,n.jsx)(r.td,{children:"SecretString"}),(0,n.jsx)(r.td,{children:"Couchbase password. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"bucket_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Name of the Couchbase bucket. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"scope_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Name of the Couchbase scope. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"collection_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Name of the Couchbase collection. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"index_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Name of the Couchbase index. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_query"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The query to search for in the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ingest_data"}),(0,n.jsx)(r.td,{children:"Data"}),(0,n.jsx)(r.td,{children:"The list of data to ingest into the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embeddings"}),(0,n.jsx)(r.td,{children:"The embedding function to use for the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"Number of results to return from the search. Default: 4."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsx)(r.tbody,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"CouchbaseVectorStore"}),(0,n.jsx)(r.td,{children:"A Couchbase vector store instance configured with the specified parameters."})]})})]})]}),"\n",(0,n.jsx)(r.h2,{id:"local-db",children:"Local DB"}),"\n",(0,n.jsxs)(r.p,{children:["The ",(0,n.jsx)(r.strong,{children:"Local DB"})," component is Langflow's enhanced version of Chroma DB."]}),"\n",(0,n.jsx)(r.p,{children:"The component adds a user-friendly interface with two modes (Ingest and Retrieve), automatic collection management, and built-in persistence in Langflow's cache directory."}),"\n",(0,n.jsxs)(r.p,{children:["Local DB includes ",(0,n.jsx)(r.strong,{children:"Ingest"})," and ",(0,n.jsx)(r.strong,{children:"Retrieve"})," modes."]}),"\n",(0,n.jsxs)(r.p,{children:["The ",(0,n.jsx)(r.strong,{children:"Ingest"})," mode works similarly to ",(0,n.jsx)(r.a,{href:"#chroma-db",children:"ChromaDB"}),", and persists your database to the Langflow cache directory. The Langflow cache directory location is specified in ",(0,n.jsx)(r.code,{children:"LANGFLOW_CONFIG_DIR"}),". For more information, see ",(0,n.jsx)(r.a,{href:"/environment-variables",children:"Environment variables"}),"."]}),"\n",(0,n.jsxs)(r.p,{children:["The ",(0,n.jsx)(r.strong,{children:"Retrieve"})," mode can query your ",(0,n.jsx)(r.strong,{children:"Chroma DB"})," collections."]}),"\n",(0,n.jsx)(r.p,{children:(0,n.jsx)(r.img,{alt:"Local DB retrieving vectors",src:t(60159).A+"",width:"1716",height:"960"})}),"\n",(0,n.jsxs)(r.p,{children:["For more information, see the ",(0,n.jsx)(r.a,{href:"https://docs.trychroma.com/",children:"Chroma documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"collection_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:'The name of the Chroma collection. Default: "langflow".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"persist_directory"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsxs)(r.td,{children:["Custom base directory to save the vector store. Collections are stored under ",(0,n.jsx)(r.code,{children:"$DIRECTORY/vector_stores/$COLLECTION_NAME"}),". If not specified, it uses your system's cache folder."]})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"existing_collections"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Select a previously created collection to search through its stored data."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embeddings"}),(0,n.jsx)(r.td,{children:"The embedding function to use for the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"allow_duplicates"}),(0,n.jsx)(r.td,{children:"Boolean"}),(0,n.jsx)(r.td,{children:"If false, will not add documents that are already in the Vector Store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_type"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:'Type of search to perform: "Similarity" or "MMR".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ingest_data"}),(0,n.jsx)(r.td,{children:"Data/DataFrame"}),(0,n.jsx)(r.td,{children:"Data to store. It is embedded and indexed for semantic search."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_query"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Enter text to search for similar content in the selected collection."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"Number of results to return. Default: 10."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"limit"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"Limit the number of records to compare when Allow Duplicates is False."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"Chroma"}),(0,n.jsx)(r.td,{children:"A local Chroma vector store instance configured with the specified parameters."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsxs)(r.td,{children:["List",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})]}),(0,n.jsxs)(r.td,{children:["The results of the similarity search as a list of ",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})]})]})]}),"\n",(0,n.jsx)(r.h2,{id:"elasticsearch",children:"Elasticsearch"}),"\n",(0,n.jsxs)(r.p,{children:["This component creates an Elasticsearch Vector Store with search capabilities.\nFor more information, see the ",(0,n.jsx)(r.a,{href:"https://www.elastic.co/guide/en/elasticsearch/reference/current/dense-vector.html",children:"Elasticsearch documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"es_url"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Elasticsearch server URL."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"es_user"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Username for Elasticsearch authentication."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"es_password"}),(0,n.jsx)(r.td,{children:"SecretString"}),(0,n.jsx)(r.td,{children:"Password for Elasticsearch authentication."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"index_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Name of the Elasticsearch index."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"strategy"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:'Strategy for vector search. The options are "approximate_k_nearest_neighbors" or "script_scoring".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"distance_strategy"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:'Strategy for distance calculation. The options are "COSINE", "EUCLIDEAN_DISTANCE", or "DOT_PRODUCT".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_query"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Query for similarity search."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ingest_data"}),(0,n.jsx)(r.td,{children:"Data"}),(0,n.jsx)(r.td,{children:"Data to be ingested into the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embeddings"}),(0,n.jsx)(r.td,{children:"Embedding function to use."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsxs)(r.td,{children:["Number of results to return in search. Default: ",(0,n.jsx)(r.code,{children:"4"}),"."]})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"ElasticsearchStore"}),(0,n.jsx)(r.td,{children:"The Elasticsearch vector store instance."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"List[Data]"}),(0,n.jsxs)(r.td,{children:["The results of the similarity search as a list of ",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})]})]})]}),"\n",(0,n.jsx)(r.h2,{id:"faiss",children:"FAISS"}),"\n",(0,n.jsxs)(r.p,{children:["This component creates a FAISS Vector Store with search capabilities.\nFor more information, see the ",(0,n.jsx)(r.a,{href:"https://faiss.ai/index.html",children:"FAISS documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"index_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:'The name of the FAISS index. Default: "langflow_index".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"persist_directory"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Path to save the FAISS index. It is relative to where Langflow is running."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_query"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The query to search for in the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ingest_data"}),(0,n.jsx)(r.td,{children:"Data"}),(0,n.jsx)(r.td,{children:"The list of data to ingest into the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"allow_dangerous_deserialization"}),(0,n.jsx)(r.td,{children:"Boolean"}),(0,n.jsx)(r.td,{children:"Set to True to allow loading pickle files from untrusted sources. Default: True."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embeddings"}),(0,n.jsx)(r.td,{children:"The embedding function to use for the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"Number of results to return from the search. Default: 4."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Display Name"}),(0,n.jsx)(r.th,{children:"Info"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"Vector Store"}),(0,n.jsx)(r.td,{children:"The FAISS vector store instance configured with the specified parameters."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"Search Results"}),(0,n.jsxs)(r.td,{children:["The results of the similarity search as a list of ",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})]})]})]}),"\n",(0,n.jsx)(r.h2,{id:"graph-rag",children:"Graph RAG"}),"\n",(0,n.jsxs)(r.p,{children:["This component performs Graph RAG (Retrieval Augmented Generation) traversal in a vector store, enabling graph-based document retrieval.\nFor more information, see the ",(0,n.jsx)(r.a,{href:"https://datastax.github.io/graph-rag/",children:"Graph RAG documentation"}),"."]}),"\n",(0,n.jsxs)(r.p,{children:["For an example flow, see the ",(0,n.jsx)(r.strong,{children:"Graph RAG"})," template."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Display Name"}),(0,n.jsx)(r.th,{children:"Info"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding_model"}),(0,n.jsx)(r.td,{children:"Embedding Model"}),(0,n.jsxs)(r.td,{children:["Specify the embedding model. This is not required for collections embedded with ",(0,n.jsx)(r.a,{href:"https://docs.datastax.com/en/astra-db-serverless/databases/embedding-generation.html",children:"Astra vectorize"}),"."]})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"Vector Store Connection"}),(0,n.jsx)(r.td,{children:"Connection to the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"edge_definition"}),(0,n.jsx)(r.td,{children:"Edge Definition"}),(0,n.jsxs)(r.td,{children:["Edge definition for the graph traversal. For more information, see the ",(0,n.jsx)(r.a,{href:"https://datastax.github.io/graph-rag/reference/graph_retriever/edges/",children:"GraphRAG documentation"}),"."]})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"strategy"}),(0,n.jsx)(r.td,{children:"Traversal Strategies"}),(0,n.jsx)(r.td,{children:"The strategy to use for graph traversal. Strategy options are dynamically loaded from available strategies."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_query"}),(0,n.jsx)(r.td,{children:"Search Query"}),(0,n.jsx)(r.td,{children:"The query to search for in the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"graphrag_strategy_kwargs"}),(0,n.jsx)(r.td,{children:"Strategy Parameters"}),(0,n.jsxs)(r.td,{children:["Optional dictionary of additional parameters for the retrieval strategy. For more information, see the ",(0,n.jsx)(r.a,{href:"https://datastax.github.io/graph-rag/reference/graph_retriever/strategies/",children:"strategy documentation"}),"."]})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsx)(r.tbody,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"List[Data]"}),(0,n.jsxs)(r.td,{children:["Results of the graph-based document retrieval as a list of ",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})})]})]}),"\n",(0,n.jsx)(r.h2,{id:"hyper-converged-database-hcd",children:"Hyper-Converged Database (HCD)"}),"\n",(0,n.jsx)(r.p,{children:"This component implements a Vector Store using HCD."}),"\n",(0,n.jsxs)(r.p,{children:["To use the HCD vector store, add your deployment's collection name, username, password, and HCD Data API endpoint.\nThe endpoint must be formatted like ",(0,n.jsx)(r.code,{children:"http[s]://**DOMAIN_NAME** or **IP_ADDRESS**[:port]"}),", for example, ",(0,n.jsx)(r.code,{children:"http://192.0.2.250:8181"}),"."]}),"\n",(0,n.jsxs)(r.p,{children:["Replace ",(0,n.jsx)(r.strong,{children:"DOMAIN_NAME"})," or ",(0,n.jsx)(r.strong,{children:"IP_ADDRESS"})," with the domain name or IP address of your HCD Data API connection."]}),"\n",(0,n.jsx)(r.p,{children:"To use the HCD vector store for embeddings ingestion, connect it to an embeddings model and a file loader:"}),"\n",(0,n.jsx)(r.p,{children:(0,n.jsx)(r.img,{alt:"HCD vector store embeddings ingestion",src:t(42638).A+"",width:"2294",height:"1684"})}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Display Name"}),(0,n.jsx)(r.th,{children:"Info"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"collection_name"}),(0,n.jsx)(r.td,{children:"Collection Name"}),(0,n.jsx)(r.td,{children:"The name of the collection within HCD where the vectors will be stored. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"username"}),(0,n.jsx)(r.td,{children:"HCD Username"}),(0,n.jsx)(r.td,{children:'Authentication username for accessing HCD. Default is "hcd-superuser". Required.'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"password"}),(0,n.jsx)(r.td,{children:"HCD Password"}),(0,n.jsx)(r.td,{children:"Authentication password for accessing HCD. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"api_endpoint"}),(0,n.jsx)(r.td,{children:"HCD API Endpoint"}),(0,n.jsx)(r.td,{children:"API endpoint URL for the HCD service. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_input"}),(0,n.jsx)(r.td,{children:"Search Input"}),(0,n.jsx)(r.td,{children:"Query string for similarity search."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ingest_data"}),(0,n.jsx)(r.td,{children:"Ingest Data"}),(0,n.jsx)(r.td,{children:"Data to be ingested into the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"namespace"}),(0,n.jsx)(r.td,{children:"Namespace"}),(0,n.jsx)(r.td,{children:'Optional namespace within HCD to use for the collection. Default is "default_namespace".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ca_certificate"}),(0,n.jsx)(r.td,{children:"CA Certificate"}),(0,n.jsx)(r.td,{children:"Optional CA certificate for TLS connections to HCD."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"metric"}),(0,n.jsx)(r.td,{children:"Metric"}),(0,n.jsx)(r.td,{children:'Optional distance metric for vector comparisons. Options are "cosine", "dot_product", "euclidean".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"batch_size"}),(0,n.jsx)(r.td,{children:"Batch Size"}),(0,n.jsx)(r.td,{children:"Optional number of data to process in a single batch."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"bulk_insert_batch_concurrency"}),(0,n.jsx)(r.td,{children:"Bulk Insert Batch Concurrency"}),(0,n.jsx)(r.td,{children:"Optional concurrency level for bulk insert operations."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"bulk_insert_overwrite_concurrency"}),(0,n.jsx)(r.td,{children:"Bulk Insert Overwrite Concurrency"}),(0,n.jsx)(r.td,{children:"Optional concurrency level for bulk insert operations that overwrite existing data."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"bulk_delete_concurrency"}),(0,n.jsx)(r.td,{children:"Bulk Delete Concurrency"}),(0,n.jsx)(r.td,{children:"Optional concurrency level for bulk delete operations."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"setup_mode"}),(0,n.jsx)(r.td,{children:"Setup Mode"}),(0,n.jsx)(r.td,{children:'Configuration mode for setting up the vector store. Options are "Sync", "Async", "Off". Default is "Sync".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"pre_delete_collection"}),(0,n.jsx)(r.td,{children:"Pre Delete Collection"}),(0,n.jsx)(r.td,{children:"Boolean flag to determine whether to delete the collection before creating a new one."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"metadata_indexing_include"}),(0,n.jsx)(r.td,{children:"Metadata Indexing Include"}),(0,n.jsx)(r.td,{children:"Optional list of metadata fields to include in the indexing."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embedding or Astra Vectorize"}),(0,n.jsx)(r.td,{children:"Allows either an embedding model or an Astra Vectorize configuration."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"metadata_indexing_exclude"}),(0,n.jsx)(r.td,{children:"Metadata Indexing Exclude"}),(0,n.jsx)(r.td,{children:"Optional list of metadata fields to exclude from the indexing."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"collection_indexing_policy"}),(0,n.jsx)(r.td,{children:"Collection Indexing Policy"}),(0,n.jsx)(r.td,{children:"Optional dictionary defining the indexing policy for the collection."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Number of Results"}),(0,n.jsx)(r.td,{children:"Number of results to return in similarity search. Default is 4."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_type"}),(0,n.jsx)(r.td,{children:"Search Type"}),(0,n.jsx)(r.td,{children:'Search type to use. Options are "Similarity", "Similarity with score threshold", "MMR (Max Marginal Relevance)". Default is "Similarity".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_score_threshold"}),(0,n.jsx)(r.td,{children:"Search Score Threshold"}),(0,n.jsx)(r.td,{children:"Minimum similarity score threshold for search results. Default is 0."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_filter"}),(0,n.jsx)(r.td,{children:"Search Metadata Filter"}),(0,n.jsx)(r.td,{children:"Optional dictionary of filters to apply to the search query."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"HyperConvergedDatabaseVectorStore"}),(0,n.jsx)(r.td,{children:"The HCD vector store instance."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"List[Data]"}),(0,n.jsxs)(r.td,{children:["The results of the similarity search as a list of ",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})]})]})]}),"\n",(0,n.jsx)(r.h2,{id:"milvus",children:"Milvus"}),"\n",(0,n.jsxs)(r.p,{children:["This component creates a Milvus Vector Store with search capabilities.\nFor more information, see the ",(0,n.jsx)(r.a,{href:"https://milvus.io/docs",children:"Milvus documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"collection_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Name of the Milvus collection."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"collection_description"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Description of the Milvus collection."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"uri"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Connection URI for Milvus."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"password"}),(0,n.jsx)(r.td,{children:"SecretString"}),(0,n.jsx)(r.td,{children:"Password for Milvus."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"username"}),(0,n.jsx)(r.td,{children:"SecretString"}),(0,n.jsx)(r.td,{children:"Username for Milvus."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"batch_size"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"Number of data to process in a single batch."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_query"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Query for similarity search."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ingest_data"}),(0,n.jsx)(r.td,{children:"Data"}),(0,n.jsx)(r.td,{children:"Data to be ingested into the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embeddings"}),(0,n.jsx)(r.td,{children:"Embedding function to use."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"Number of results to return in search."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_type"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Type of search to perform."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_score_threshold"}),(0,n.jsx)(r.td,{children:"Float"}),(0,n.jsx)(r.td,{children:"Minimum similarity score for search results."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_filter"}),(0,n.jsx)(r.td,{children:"Dict"}),(0,n.jsx)(r.td,{children:"Metadata filters for search query."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"setup_mode"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Configuration mode for setting up the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_dimensions"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"Number of dimensions of the vectors."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"pre_delete_collection"}),(0,n.jsx)(r.td,{children:"Boolean"}),(0,n.jsx)(r.td,{children:"Whether to delete the collection before creating a new one."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsx)(r.tbody,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"Milvus"}),(0,n.jsx)(r.td,{children:"A Milvus vector store instance configured with the specified parameters."})]})})]})]}),"\n",(0,n.jsx)(r.h2,{id:"mongodb-atlas",children:"MongoDB Atlas"}),"\n",(0,n.jsxs)(r.p,{children:["This component creates a MongoDB Atlas Vector Store with search capabilities.\nFor more information, see the ",(0,n.jsx)(r.a,{href:"https://www.mongodb.com/docs/atlas/atlas-vector-search/tutorials/vector-search-quick-start/",children:"MongoDB Atlas documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"mongodb_atlas_cluster_uri"}),(0,n.jsx)(r.td,{children:"SecretString"}),(0,n.jsx)(r.td,{children:"The connection URI for your MongoDB Atlas cluster. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"enable_mtls"}),(0,n.jsx)(r.td,{children:"Boolean"}),(0,n.jsx)(r.td,{children:"Enable mutual TLS authentication. Default: false."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"mongodb_atlas_client_cert"}),(0,n.jsx)(r.td,{children:"SecretString"}),(0,n.jsx)(r.td,{children:"Client certificate combined with private key for mTLS authentication. Required if mTLS is enabled."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"db_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The name of the database to use. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"collection_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The name of the collection to use. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"index_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The name of the Atlas Search index, it should be a Vector Search. Required."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"insert_mode"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:'How to insert new documents into the collection. The options are "append" or "overwrite". Default: "append".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embeddings"}),(0,n.jsx)(r.td,{children:"The embedding model to use."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"Number of results to return in similarity search. Default: 4."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"index_field"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:'The field to index. Default: "embedding".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"filter_field"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The field to filter the index."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_dimensions"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"Embedding context length. Default: 1536."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"similarity"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:'The method used to measure similarity between vectors. The options are "cosine", "euclidean", or "dotProduct". Default: "cosine".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"quantization"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:'Quantization reduces memory costs by converting 32-bit floats to smaller data types. The options are "scalar" or "binary".'})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"MongoDBAtlasVectorSearch"}),(0,n.jsx)(r.td,{children:"The MongoDB Atlas vector store instance."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"List[Data]"}),(0,n.jsxs)(r.td,{children:["The results of the similarity search as a list of ",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})]})]})]}),"\n",(0,n.jsx)(r.h2,{id:"opensearch",children:"Opensearch"}),"\n",(0,n.jsxs)(r.p,{children:["This component creates an Opensearch vector store with search capabilities\nFor more information, see ",(0,n.jsx)(r.a,{href:"https://opensearch.org/platform/search/vector-database.html",children:"Opensearch documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"opensearch_url"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsxs)(r.td,{children:["URL for OpenSearch cluster, such as ",(0,n.jsx)(r.code,{children:"https://192.168.1.1:9200"}),"."]})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"index_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The index name where the vectors are stored in OpenSearch cluster."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_input"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Enter a search query. Leave empty to retrieve all documents or if hybrid search is being used."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ingest_data"}),(0,n.jsx)(r.td,{children:"Data"}),(0,n.jsx)(r.td,{children:"The data to be ingested into the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embeddings"}),(0,n.jsx)(r.td,{children:"The embedding function to use."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_type"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:'The options are "similarity", "similarity_score_threshold", "mmr".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"The number of results to return in search."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_score_threshold"}),(0,n.jsx)(r.td,{children:"Float"}),(0,n.jsx)(r.td,{children:"The minimum similarity score threshold for search results."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"username"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The username for the opensource cluster."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"password"}),(0,n.jsx)(r.td,{children:"SecretString"}),(0,n.jsx)(r.td,{children:"The password for the opensource cluster."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"use_ssl"}),(0,n.jsx)(r.td,{children:"Boolean"}),(0,n.jsx)(r.td,{children:"Use SSL."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"verify_certs"}),(0,n.jsx)(r.td,{children:"Boolean"}),(0,n.jsx)(r.td,{children:"Verify certificates."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"hybrid_search_query"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Provide a custom hybrid search query in JSON format. This allows you to combine vector similarity and keyword matching."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"OpenSearchVectorSearch"}),(0,n.jsx)(r.td,{children:"OpenSearch vector store instance"})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"List[Data]"}),(0,n.jsxs)(r.td,{children:["The results of the similarity search as a list of ",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})]})]})]}),"\n",(0,n.jsx)(r.h2,{id:"pgvector",children:"PGVector"}),"\n",(0,n.jsxs)(r.p,{children:["This component creates a PGVector Vector Store with search capabilities.\nFor more information, see the ",(0,n.jsx)(r.a,{href:"https://github.com/pgvector/pgvector",children:"PGVector documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"pg_server_url"}),(0,n.jsx)(r.td,{children:"SecretString"}),(0,n.jsx)(r.td,{children:"The PostgreSQL server connection string."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"collection_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The table name for the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_query"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The query for similarity search."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ingest_data"}),(0,n.jsx)(r.td,{children:"Data"}),(0,n.jsx)(r.td,{children:"The data to be ingested into the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embeddings"}),(0,n.jsx)(r.td,{children:"The embedding function to use."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"The number of results to return in search."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Display Name"}),(0,n.jsx)(r.th,{children:"Info"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"Vector Store"}),(0,n.jsx)(r.td,{children:"The PGVector vector store instance configured with the specified parameters."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"Search Results"}),(0,n.jsxs)(r.td,{children:["The results of the similarity search as a list of ",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})]})]})]}),"\n",(0,n.jsx)(r.h2,{id:"pinecone",children:"Pinecone"}),"\n",(0,n.jsxs)(r.p,{children:["This component creates a Pinecone Vector Store with search capabilities.\nFor more information, see the ",(0,n.jsx)(r.a,{href:"https://docs.pinecone.io/home",children:"Pinecone documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"index_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The name of the Pinecone index."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"namespace"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The namespace for the index."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"distance_strategy"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The strategy for calculating distance between vectors."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"pinecone_api_key"}),(0,n.jsx)(r.td,{children:"SecretString"}),(0,n.jsx)(r.td,{children:"The API key for Pinecone."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"text_key"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The key in the record to use as text."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_query"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The query for similarity search."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ingest_data"}),(0,n.jsx)(r.td,{children:"Data"}),(0,n.jsx)(r.td,{children:"The data to be ingested into the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embeddings"}),(0,n.jsx)(r.td,{children:"The embedding function to use."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"The number of results to return in search."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Display Name"}),(0,n.jsx)(r.th,{children:"Info"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"Vector Store"}),(0,n.jsx)(r.td,{children:"The Pinecone vector store instance configured with the specified parameters."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"Search Results"}),(0,n.jsxs)(r.td,{children:["The results of the similarity search as a list of ",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})]})]})]}),"\n",(0,n.jsx)(r.h2,{id:"qdrant",children:"Qdrant"}),"\n",(0,n.jsxs)(r.p,{children:["This component creates a Qdrant Vector Store with search capabilities.\nFor more information, see the ",(0,n.jsx)(r.a,{href:"https://qdrant.tech/documentation/",children:"Qdrant documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"collection_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The name of the Qdrant collection."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"host"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The Qdrant server host."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"port"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"The Qdrant server port."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"grpc_port"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"The Qdrant gRPC port."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"api_key"}),(0,n.jsx)(r.td,{children:"SecretString"}),(0,n.jsx)(r.td,{children:"The API key for Qdrant."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"prefix"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The prefix for Qdrant."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"timeout"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"The timeout for Qdrant operations."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"path"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The path for Qdrant."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"url"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The URL for Qdrant."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"distance_func"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The distance function for vector similarity."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"content_payload_key"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The content payload key."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"metadata_payload_key"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The metadata payload key."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_query"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The query for similarity search."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ingest_data"}),(0,n.jsx)(r.td,{children:"Data"}),(0,n.jsx)(r.td,{children:"The data to be ingested into the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embeddings"}),(0,n.jsx)(r.td,{children:"The embedding function to use."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"The number of results to return in search."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"Qdrant"}),(0,n.jsx)(r.td,{children:"A Qdrant vector store instance."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"List[Data]"}),(0,n.jsxs)(r.td,{children:["The results of the similarity search as a list of ",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})]})]})]}),"\n",(0,n.jsx)(r.h2,{id:"redis",children:"Redis"}),"\n",(0,n.jsxs)(r.p,{children:["This component creates a Redis Vector Store with search capabilities.\nFor more information, see the ",(0,n.jsx)(r.a,{href:"https://redis.io/docs/latest/develop/interact/search-and-query/advanced-concepts/vectors/",children:"Redis documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"redis_server_url"}),(0,n.jsx)(r.td,{children:"SecretString"}),(0,n.jsx)(r.td,{children:"The Redis server connection string."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"redis_index_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The name of the Redis index."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"code"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The custom code for Redis (advanced)."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"schema"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The schema for Redis index."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_query"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The query for similarity search."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ingest_data"}),(0,n.jsx)(r.td,{children:"Data"}),(0,n.jsx)(r.td,{children:"The data to be ingested into the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"The number of results to return in search."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embeddings"}),(0,n.jsx)(r.td,{children:"The embedding function to use."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"Redis"}),(0,n.jsx)(r.td,{children:"Redis vector store instance"})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"List[Data]"}),(0,n.jsxs)(r.td,{children:["The results of the similarity search as a list of ",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})]})]})]}),"\n",(0,n.jsx)(r.h2,{id:"supabase",children:"Supabase"}),"\n",(0,n.jsxs)(r.p,{children:["This component creates a connection to a Supabase Vector Store with search capabilities.\nFor more information, see the ",(0,n.jsx)(r.a,{href:"https://supabase.com/docs/guides/ai",children:"Supabase documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"supabase_url"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The URL of the Supabase instance."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"supabase_service_key"}),(0,n.jsx)(r.td,{children:"SecretString"}),(0,n.jsx)(r.td,{children:"The service key for Supabase authentication."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"table_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The name of the table in Supabase."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"query_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The name of the query to use."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_query"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The query for similarity search."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ingest_data"}),(0,n.jsx)(r.td,{children:"Data"}),(0,n.jsx)(r.td,{children:"The data to be ingested into the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embeddings"}),(0,n.jsx)(r.td,{children:"The embedding function to use."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"The number of results to return in search."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"SupabaseVectorStore"}),(0,n.jsx)(r.td,{children:"A Supabase vector store instance."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"List[Data]"}),(0,n.jsxs)(r.td,{children:["The results of the similarity search as a list of ",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})]})]})]}),"\n",(0,n.jsx)(r.h2,{id:"upstash",children:"Upstash"}),"\n",(0,n.jsxs)(r.p,{children:["This component creates an Upstash Vector Store with search capabilities.\nFor more information, see the ",(0,n.jsx)(r.a,{href:"https://upstash.com/docs/introduction",children:"Upstash documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"index_url"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The URL of the Upstash index."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"index_token"}),(0,n.jsx)(r.td,{children:"SecretString"}),(0,n.jsx)(r.td,{children:"The token for the Upstash index."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"text_key"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The key in the record to use as text."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"namespace"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The namespace for the index."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_query"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The query for similarity search."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"metadata_filter"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"Filter documents by metadata."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ingest_data"}),(0,n.jsx)(r.td,{children:"Data"}),(0,n.jsx)(r.td,{children:"The data to be ingested into the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embeddings"}),(0,n.jsx)(r.td,{children:"The embedding function to use."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"The number of results to return in search."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"UpstashVectorStore"}),(0,n.jsx)(r.td,{children:"An Upstash vector store instance."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"List[Data]"}),(0,n.jsxs)(r.td,{children:["The results of the similarity search as a list of ",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})]})]})]}),"\n",(0,n.jsx)(r.h2,{id:"vectara",children:"Vectara"}),"\n",(0,n.jsxs)(r.p,{children:["This component creates a Vectara Vector Store with search capabilities.\nFor more information, see the ",(0,n.jsx)(r.a,{href:"https://docs.vectara.com/docs/",children:"Vectara documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vectara_customer_id"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The Vectara customer ID."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vectara_corpus_id"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The Vectara corpus ID."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vectara_api_key"}),(0,n.jsx)(r.td,{children:"SecretString"}),(0,n.jsx)(r.td,{children:"The Vectara API key."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embeddings"}),(0,n.jsx)(r.td,{children:"The embedding function to use (optional)."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"ingest_data"}),(0,n.jsx)(r.td,{children:"List[Document/Data]"}),(0,n.jsx)(r.td,{children:"The data to be ingested into the vector store."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_query"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The query for similarity search."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"number_of_results"}),(0,n.jsx)(r.td,{children:"Integer"}),(0,n.jsx)(r.td,{children:"The number of results to return in search."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"VectaraVectorStore"}),(0,n.jsx)(r.td,{children:"Vectara vector store instance."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"List[Data]"}),(0,n.jsxs)(r.td,{children:["The results of the similarity search as a list of ",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})]})]})]}),"\n",(0,n.jsx)(r.h2,{id:"vectara-search",children:"Vectara Search"}),"\n",(0,n.jsxs)(r.p,{children:["This component searches a Vectara Vector Store for documents based on the provided input.\nFor more information, see the ",(0,n.jsx)(r.a,{href:"https://docs.vectara.com/docs/",children:"Vectara documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_type"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:'The type of search, such as "Similarity" or "MMR".'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"input_value"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The search query."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vectara_customer_id"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The Vectara customer ID."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vectara_corpus_id"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The Vectara corpus ID."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vectara_api_key"}),(0,n.jsx)(r.td,{children:"SecretString"}),(0,n.jsx)(r.td,{children:"The Vectara API key."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"files_url"}),(0,n.jsx)(r.td,{children:"List[String]"}),(0,n.jsx)(r.td,{children:"Optional URLs for file initialization."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsx)(r.tbody,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"List[Data]"}),(0,n.jsxs)(r.td,{children:["The results of the similarity search as a list of ",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})})]})]}),"\n",(0,n.jsx)(r.h2,{id:"weaviate",children:"Weaviate"}),"\n",(0,n.jsxs)(r.p,{children:["This component facilitates a Weaviate Vector Store setup, optimizing text and document indexing and retrieval.\nFor more information, see the ",(0,n.jsx)(r.a,{href:"https://weaviate.io/developers/weaviate",children:"Weaviate Documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"weaviate_url"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The default instance URL."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_by_text"}),(0,n.jsx)(r.td,{children:"Boolean"}),(0,n.jsx)(r.td,{children:"Indicates whether to search by text."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"api_key"}),(0,n.jsx)(r.td,{children:"SecretString"}),(0,n.jsx)(r.td,{children:"The optional API key for authentication."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"index_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The optional index name."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"text_key"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The default text extraction key."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"input"}),(0,n.jsx)(r.td,{children:"Document"}),(0,n.jsx)(r.td,{children:"The document or record."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embeddings"}),(0,n.jsx)(r.td,{children:"The embedding model used."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"attributes"}),(0,n.jsx)(r.td,{children:"List[String]"}),(0,n.jsx)(r.td,{children:"Optional additional attributes."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsx)(r.tbody,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"vector_store"}),(0,n.jsx)(r.td,{children:"WeaviateVectorStore"}),(0,n.jsx)(r.td,{children:"The Weaviate vector store instance."})]})})]})]}),"\n",(0,n.jsx)(r.h2,{id:"weaviate-search",children:"Weaviate Search"}),"\n",(0,n.jsxs)(r.p,{children:["This component searches a Weaviate Vector Store for documents similar to the input.\nFor more information, see the ",(0,n.jsx)(r.a,{href:"https://weaviate.io/developers/weaviate",children:"Weaviate Documentation"}),"."]}),"\n",(0,n.jsxs)(s,{children:[(0,n.jsx)("summary",{children:"Parameters"}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Inputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_type"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:'The type of search, such as "Similarity" or "MMR"'})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"input_value"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The search query."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"weaviate_url"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The default instance URL."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_by_text"}),(0,n.jsx)(r.td,{children:"Boolean"}),(0,n.jsx)(r.td,{children:"A boolean value that indicates whether to search by text."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"api_key"}),(0,n.jsx)(r.td,{children:"SecretString"}),(0,n.jsx)(r.td,{children:"The optional API key for authentication."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"index_name"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The optional index name."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"text_key"}),(0,n.jsx)(r.td,{children:"String"}),(0,n.jsx)(r.td,{children:"The default text extraction key."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"embedding"}),(0,n.jsx)(r.td,{children:"Embeddings"}),(0,n.jsx)(r.td,{children:"The embeddings model used."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"attributes"}),(0,n.jsx)(r.td,{children:"List[String]"}),(0,n.jsx)(r.td,{children:"Optional additional attributes."})]})]})]}),(0,n.jsx)(r.p,{children:(0,n.jsx)(r.strong,{children:"Outputs"})}),(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Name"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsx)(r.tbody,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"search_results"}),(0,n.jsx)(r.td,{children:"List[Data]"}),(0,n.jsxs)(r.td,{children:["The results of the similarity search as a list of ",(0,n.jsx)(r.a,{href:"/concepts-objects#data-object",children:"Data"})," objects."]})]})})]})]})]})}function u(e={}){const{wrapper:r}={...(0,d.R)(),...e.components};return r?(0,n.jsx)(r,{...e,children:(0,n.jsx)(m,{...e})}):m(e)}function p(e,r){throw new Error("Expected "+(r?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}},17886:(e,r,t)=>{t.d(r,{A:()=>d});t(96540);var s=t(64058),n=t(74848);function d({name:e,...r}){const t=s[e];return t?(0,n.jsx)(t,{...r}):null}},42638:(e,r,t)=>{t.d(r,{A:()=>s});const s=t.p+"assets/images/component-hcd-example-flow-b82057600ce5e9e4a0f7ea0a61dcbf7f.png"},59072:(e,r,t)=>{t.d(r,{A:()=>s});const s=t.p+"assets/images/vector-store-agent-retrieval-tool-79066d11008a74c40390f55f7c73bd71.png"},60159:(e,r,t)=>{t.d(r,{A:()=>s});const s=t.p+"assets/images/component-local-db-465d080ccffb1c4db4e137eff9047ff5.png"},67719:(e,r,t)=>{t.d(r,{A:()=>s});const s=t.p+"assets/images/vector-store-retrieval-3201f1ea2f13a5f8a87652c81a5386c6.png"},88690:(e,r,t)=>{t.d(r,{A:()=>s});const s=t.p+"assets/images/component-chroma-db-4cd884c7b7fd4b4be27cda1aec03790b.png"}}]);
\ No newline at end of file
diff --git a/assets/js/fba42286.942c9720.js b/assets/js/fba42286.942c9720.js
deleted file mode 100644
index eb81db03bf..0000000000
--- a/assets/js/fba42286.942c9720.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[4806],{17886:(e,n,o)=>{o.d(n,{A:()=>t});o(96540);var s=o(64058),i=o(74848);function t({name:e,...n}){const o=s[e];return o?(0,i.jsx)(o,{...n}):null}},28453:(e,n,o)=>{o.d(n,{R:()=>r,x:()=>l});var s=o(96540);const i={},t=s.createContext(i);function r(e){const n=s.useContext(t);return s.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),s.createElement(t.Provider,{value:n},e.children)}},88322:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>a,contentTitle:()=>c,default:()=>p,frontMatter:()=>l,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"Concepts/concepts-voice-mode","title":"Voice mode","description":"The Langflow Playground supports voice mode for interacting with your applications through a microphone.","source":"@site/docs/Concepts/concepts-voice-mode.md","sourceDirName":"Concepts","slug":"/concepts-voice-mode","permalink":"/concepts-voice-mode","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Voice mode","slug":"/concepts-voice-mode"},"sidebar":"docs","previous":{"title":"Manage files","permalink":"/concepts-file-management"},"next":{"title":"Agents","permalink":"/components-agents"}}');var i=o(74848),t=o(28453),r=o(17886);const l={title:"Voice mode",slug:"/concepts-voice-mode"},c=void 0,a={},d=[{value:"Prerequisite",id:"prerequisite",level:2},{value:"Use voice mode in the Langflow Playground",id:"use-voice-mode-in-the-langflow-playground",level:2},{value:"Langflow voice mode endpoints",id:"langflow-voice-mode-endpoints",level:2}];function h(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.p,{children:["The Langflow ",(0,i.jsx)(n.strong,{children:"Playground"})," supports ",(0,i.jsx)(n.strong,{children:"voice mode"})," for interacting with your applications through a microphone."]}),"\n",(0,i.jsxs)(n.p,{children:["An ",(0,i.jsx)(n.a,{href:"https://platform.openai.com/",children:"OpenAI API key"})," is required to use ",(0,i.jsx)(n.strong,{children:"voice mode"}),". An ",(0,i.jsx)(n.a,{href:"https://elevenlabs.io",children:"ElevenLabs"})," API key enables more voices in the chat, but is optional."]}),"\n",(0,i.jsxs)(n.p,{children:["Your flow must have a ",(0,i.jsx)(n.a,{href:"/components-io#chat-input",children:"Chat input"})," component to interact with the ",(0,i.jsx)(n.strong,{children:"Playground"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"prerequisite",children:"Prerequisite"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://platform.openai.com/",children:"An OpenAI API key"})}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"use-voice-mode-in-the-langflow-playground",children:"Use voice mode in the Langflow Playground"}),"\n",(0,i.jsxs)(n.p,{children:["Chat with an agent in the ",(0,i.jsx)(n.strong,{children:"Playground"}),", and get more recent results by asking the agent to use tools."]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["Create a ",(0,i.jsx)(n.a,{href:"/simple-agent",children:"Simple agent starter project"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:["Add your ",(0,i.jsx)(n.strong,{children:"OpenAI API key"})," credentials to the ",(0,i.jsx)(n.strong,{children:"Agent"})," component."]}),"\n",(0,i.jsxs)(n.li,{children:["To start a chat session, click ",(0,i.jsx)(n.strong,{children:"Playground"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:["To enable voice mode, click the ",(0,i.jsx)(r.A,{name:"Mic","aria-label":"Microphone"})," icon.\nThe ",(0,i.jsx)(n.strong,{children:"Voice mode"})," pane opens."]}),"\n",(0,i.jsxs)(n.li,{children:["In the ",(0,i.jsx)(n.strong,{children:"OpenAI API Key"})," field, add your ",(0,i.jsx)(n.strong,{children:"OpenAI API key"})," credentials.\nThis key is saved as a ",(0,i.jsx)(n.a,{href:"/configuration-global-variables",children:"global variable"})," in Langflow and is accessible from any component or flow."]}),"\n",(0,i.jsxs)(n.li,{children:["Your browser may prompt you for microphone access.\nBrowser access is ",(0,i.jsx)(n.strong,{children:"required"})," to use voice mode.\nTo continue, allow microphone access in your browser."]}),"\n",(0,i.jsxs)(n.li,{children:["In the ",(0,i.jsx)(n.strong,{children:"Audio Input"})," menu, select the input device to use with voice mode."]}),"\n"]}),"\n",(0,i.jsx)(n.admonition,{type:"tip",children:(0,i.jsx)(n.p,{children:"A higher quality microphone improves OpenAI's voice chat comprehension."})}),"\n",(0,i.jsxs)(n.ol,{start:"8",children:["\n",(0,i.jsxs)(n.li,{children:["Optionally, add your ",(0,i.jsx)(n.strong,{children:"ElevenLabs API key"})," in the ",(0,i.jsx)(n.strong,{children:"ElevenLabs API Key"})," field.\nThis makes more voices available for your AI responses.\nThis key is saved as a ",(0,i.jsx)(n.a,{href:"/configuration-global-variables",children:"global variable"})," in Langflow and is accessible from any component or flow."]}),"\n",(0,i.jsxs)(n.li,{children:["In the ",(0,i.jsx)(n.strong,{children:"Preferred Language"})," menu, select your language for conversing with Langflow.\nThis option changes both the spoken conversation and the chat responses in the ",(0,i.jsx)(n.strong,{children:"Playground"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:["Talk into your microphone.\nThe waveform in the voice mode pane should register your input, and the agent should respond in voice and in the ",(0,i.jsx)(n.strong,{children:"Playground"}),"."]}),"\n",(0,i.jsx)(n.li,{children:"Ask the agent to use the tools available to find recent news about a subject."}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["The agent describes its search process, including accessing the ",(0,i.jsx)(n.strong,{children:"URL"})," tool to fetch recent news.\nThe agent summarizes the recent news in speech and in the ",(0,i.jsx)(n.strong,{children:"Playground"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Be aware of the following considerations when using voice mode:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Name and describe your tools accurately, so the ",(0,i.jsx)(n.strong,{children:"Agent"})," chooses tools correctly."]}),"\n",(0,i.jsxs)(n.li,{children:["Voice mode does not use the instructions in the Agent component's ",(0,i.jsx)(n.strong,{children:"Agent Instructions"})," field, because your spoken instructions override this value."]}),"\n",(0,i.jsxs)(n.li,{children:["Voice mode only maintains context within the conversation session you are currently in.\nIf you exit a conversation and close the ",(0,i.jsx)(n.strong,{children:"Playground"}),", your conversational context is not available in the next chat session."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"langflow-voice-mode-endpoints",children:"Langflow voice mode endpoints"}),"\n",(0,i.jsxs)(n.p,{children:["Langflow exposes OpenAI Realtime API-compatible websocket endpoints for your flows. You can build voice applications against these endpoints the same way you would build against ",(0,i.jsx)(n.a,{href:"https://platform.openai.com/docs/guides/realtime#connect-with-websockets",children:"OpenAI Realtime API websockets"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["The WebSockets endpoints require an ",(0,i.jsx)(n.a,{href:"https://platform.openai.com/docs/overview",children:"OpenAI API key"})," for authentication, and they support an optional ",(0,i.jsx)(n.a,{href:"https://elevenlabs.io",children:"ElevenLabs"})," integration."]}),"\n",(0,i.jsx)(n.p,{children:"Langflow exposes two WebSockets endpoints:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"/ws/flow_as_tool/{flow_id}"})," or ",(0,i.jsx)(n.code,{children:"/ws/flow_as_tool/{flow_id}/{session_id}"}),": Establishes a connection to OpenAI Realtime voice, and then invokes flows as tools by the ",(0,i.jsx)(n.a,{href:"https://platform.openai.com/docs/guides/realtime-conversations#handling-audio-with-websockets",children:"OpenAI Realtime model"}),".\nThis approach is ideal for low latency applications, but it is less deterministic since the OpenAI voice-to-voice model determines when to call your flow."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"/ws/flow_tts/{flow_id}"})," or ",(0,i.jsx)(n.code,{children:"/ws/flow_tts/{flow_id}/{session_id}"}),": Converts audio to text using ",(0,i.jsx)(n.a,{href:"https://platform.openai.com/docs/guides/realtime-transcription",children:"OpenAI Realtime voice transcription"}),", and then each flow is invoked directly for each transcript.\nThis approach is more deterministic but has higher latency.\nThis is the mode used in the Langflow playground."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Path parameters:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"flow_id"}),": Required path parameter. The ID of the flow to be used as a tool."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"session_id"}),": Optional path parameter. A unique identifier for the conversation session. If not provided, one is automatically generated."]}),"\n"]})]})}function p(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}}}]);
\ No newline at end of file
diff --git a/assets/js/fba42286.ec9f467f.js b/assets/js/fba42286.ec9f467f.js
new file mode 100644
index 0000000000..13fa033505
--- /dev/null
+++ b/assets/js/fba42286.ec9f467f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[4806],{17886:(e,n,o)=>{o.d(n,{A:()=>t});o(96540);var s=o(64058),i=o(74848);function t({name:e,...n}){const o=s[e];return o?(0,i.jsx)(o,{...n}):null}},28453:(e,n,o)=>{o.d(n,{R:()=>r,x:()=>l});var s=o(96540);const i={},t=s.createContext(i);function r(e){const n=s.useContext(t);return s.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),s.createElement(t.Provider,{value:n},e.children)}},88322:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>a,contentTitle:()=>c,default:()=>p,frontMatter:()=>l,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"Concepts/concepts-voice-mode","title":"Voice mode","description":"The Langflow Playground supports voice mode for interacting with your applications through a microphone.","source":"@site/docs/Concepts/concepts-voice-mode.md","sourceDirName":"Concepts","slug":"/concepts-voice-mode","permalink":"/concepts-voice-mode","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Voice mode","slug":"/concepts-voice-mode"},"sidebar":"docs","previous":{"title":"Manage files","permalink":"/concepts-file-management"},"next":{"title":"Agents","permalink":"/components-agents"}}');var i=o(74848),t=o(28453),r=o(17886);const l={title:"Voice mode",slug:"/concepts-voice-mode"},c=void 0,a={},d=[{value:"Prerequisite",id:"prerequisite",level:2},{value:"Use voice mode in the Langflow Playground",id:"use-voice-mode-in-the-langflow-playground",level:2},{value:"Langflow voice mode endpoints",id:"langflow-voice-mode-endpoints",level:2}];function h(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.p,{children:["The Langflow ",(0,i.jsx)(n.strong,{children:"Playground"})," supports ",(0,i.jsx)(n.strong,{children:"voice mode"})," for interacting with your applications through a microphone."]}),"\n",(0,i.jsxs)(n.p,{children:["An ",(0,i.jsx)(n.a,{href:"https://platform.openai.com/",children:"OpenAI API key"})," is required to use ",(0,i.jsx)(n.strong,{children:"voice mode"}),". An ",(0,i.jsx)(n.a,{href:"https://elevenlabs.io",children:"ElevenLabs"})," API key enables more voices in the chat, but is optional."]}),"\n",(0,i.jsxs)(n.p,{children:["Your flow must have a ",(0,i.jsx)(n.a,{href:"/components-io#chat-input",children:"Chat input"})," component to interact with the ",(0,i.jsx)(n.strong,{children:"Playground"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"prerequisite",children:"Prerequisite"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://platform.openai.com/",children:"An OpenAI API key"})}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"use-voice-mode-in-the-langflow-playground",children:"Use voice mode in the Langflow Playground"}),"\n",(0,i.jsxs)(n.p,{children:["Chat with an agent in the ",(0,i.jsx)(n.strong,{children:"Playground"}),", and get more recent results by asking the agent to use tools."]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["Create a ",(0,i.jsx)(n.a,{href:"/simple-agent",children:"Simple agent starter project"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:["Add your ",(0,i.jsx)(n.strong,{children:"OpenAI API key"})," credentials to the ",(0,i.jsx)(n.strong,{children:"Agent"})," component."]}),"\n",(0,i.jsxs)(n.li,{children:["To start a chat session, click ",(0,i.jsx)(n.strong,{children:"Playground"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:["To enable voice mode, click the ",(0,i.jsx)(r.A,{name:"Mic","aria-hidden":"true"})," ",(0,i.jsx)(n.strong,{children:"Microphone"})," icon.\nThe ",(0,i.jsx)(n.strong,{children:"Voice mode"})," pane opens."]}),"\n",(0,i.jsxs)(n.li,{children:["In the ",(0,i.jsx)(n.strong,{children:"OpenAI API Key"})," field, add your ",(0,i.jsx)(n.strong,{children:"OpenAI API key"})," credentials.\nThis key is saved as a ",(0,i.jsx)(n.a,{href:"/configuration-global-variables",children:"global variable"})," in Langflow and is accessible from any component or flow."]}),"\n",(0,i.jsxs)(n.li,{children:["Your browser may prompt you for microphone access.\nBrowser access is ",(0,i.jsx)(n.strong,{children:"required"})," to use voice mode.\nTo continue, allow microphone access in your browser."]}),"\n",(0,i.jsxs)(n.li,{children:["In the ",(0,i.jsx)(n.strong,{children:"Audio Input"})," menu, select the input device to use with voice mode."]}),"\n"]}),"\n",(0,i.jsx)(n.admonition,{type:"tip",children:(0,i.jsx)(n.p,{children:"A higher quality microphone improves OpenAI's voice chat comprehension."})}),"\n",(0,i.jsxs)(n.ol,{start:"8",children:["\n",(0,i.jsxs)(n.li,{children:["Optionally, add your ",(0,i.jsx)(n.strong,{children:"ElevenLabs API key"})," in the ",(0,i.jsx)(n.strong,{children:"ElevenLabs API Key"})," field.\nThis makes more voices available for your AI responses.\nThis key is saved as a ",(0,i.jsx)(n.a,{href:"/configuration-global-variables",children:"global variable"})," in Langflow and is accessible from any component or flow."]}),"\n",(0,i.jsxs)(n.li,{children:["In the ",(0,i.jsx)(n.strong,{children:"Preferred Language"})," menu, select your language for conversing with Langflow.\nThis option changes both the spoken conversation and the chat responses in the ",(0,i.jsx)(n.strong,{children:"Playground"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:["Talk into your microphone.\nThe waveform in the voice mode pane should register your input, and the agent should respond in voice and in the ",(0,i.jsx)(n.strong,{children:"Playground"}),"."]}),"\n",(0,i.jsx)(n.li,{children:"Ask the agent to use the tools available to find recent news about a subject."}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["The agent describes its search process, including accessing the ",(0,i.jsx)(n.strong,{children:"URL"})," tool to fetch recent news.\nThe agent summarizes the recent news in speech and in the ",(0,i.jsx)(n.strong,{children:"Playground"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Be aware of the following considerations when using voice mode:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Name and describe your tools accurately, so the ",(0,i.jsx)(n.strong,{children:"Agent"})," chooses tools correctly."]}),"\n",(0,i.jsxs)(n.li,{children:["Voice mode does not use the instructions in the Agent component's ",(0,i.jsx)(n.strong,{children:"Agent Instructions"})," field, because your spoken instructions override this value."]}),"\n",(0,i.jsxs)(n.li,{children:["Voice mode only maintains context within the conversation session you are currently in.\nIf you exit a conversation and close the ",(0,i.jsx)(n.strong,{children:"Playground"}),", your conversational context is not available in the next chat session."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"langflow-voice-mode-endpoints",children:"Langflow voice mode endpoints"}),"\n",(0,i.jsxs)(n.p,{children:["Langflow exposes OpenAI Realtime API-compatible websocket endpoints for your flows. You can build voice applications against these endpoints the same way you would build against ",(0,i.jsx)(n.a,{href:"https://platform.openai.com/docs/guides/realtime#connect-with-websockets",children:"OpenAI Realtime API websockets"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["The WebSockets endpoints require an ",(0,i.jsx)(n.a,{href:"https://platform.openai.com/docs/overview",children:"OpenAI API key"})," for authentication, and they support an optional ",(0,i.jsx)(n.a,{href:"https://elevenlabs.io",children:"ElevenLabs"})," integration."]}),"\n",(0,i.jsx)(n.p,{children:"Langflow exposes two WebSockets endpoints:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"/ws/flow_as_tool/{flow_id}"})," or ",(0,i.jsx)(n.code,{children:"/ws/flow_as_tool/{flow_id}/{session_id}"}),": Establishes a connection to OpenAI Realtime voice, and then invokes flows as tools by the ",(0,i.jsx)(n.a,{href:"https://platform.openai.com/docs/guides/realtime-conversations#handling-audio-with-websockets",children:"OpenAI Realtime model"}),".\nThis approach is ideal for low latency applications, but it is less deterministic since the OpenAI voice-to-voice model determines when to call your flow."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"/ws/flow_tts/{flow_id}"})," or ",(0,i.jsx)(n.code,{children:"/ws/flow_tts/{flow_id}/{session_id}"}),": Converts audio to text using ",(0,i.jsx)(n.a,{href:"https://platform.openai.com/docs/guides/realtime-transcription",children:"OpenAI Realtime voice transcription"}),", and then each flow is invoked directly for each transcript.\nThis approach is more deterministic but has higher latency.\nThis is the mode used in the Langflow playground."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Path parameters:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"flow_id"}),": Required path parameter. The ID of the flow to be used as a tool."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"session_id"}),": Optional path parameter. A unique identifier for the conversation session. If not provided, one is automatically generated."]}),"\n"]})]})}function p(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}}}]);
\ No newline at end of file
diff --git a/assets/js/fdefa9a8.774f69c8.js b/assets/js/fdefa9a8.774f69c8.js
new file mode 100644
index 0000000000..cf90c296a8
--- /dev/null
+++ b/assets/js/fdefa9a8.774f69c8.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[7453],{8886:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/component-url-regex-8cae4a8d6491d360115ad552f0c467d3.png"},10354:(e,t,s)=>{s.r(t),s.d(t,{CH:()=>a,assets:()=>h,chCodeConfig:()=>x,contentTitle:()=>o,default:()=>u,frontMatter:()=>l,metadata:()=>n,toc:()=>j});const n=JSON.parse('{"id":"Components/components-data","title":"Data","description":"Data components load data from a source into your flow.","source":"@site/docs/Components/components-data.md","sourceDirName":"Components","slug":"/components-data","permalink":"/components-data","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Data","slug":"/components-data"},"sidebar":"docs","previous":{"title":"Create custom Python components","permalink":"/components-custom-components"},"next":{"title":"Embeddings","permalink":"/components-embedding-models"}}');var r=s(74848),d=s(28453),i=s(24754),c=s(17886);const l={title:"Data",slug:"/components-data"},o="Data components in Langflow",h={},a={annotations:i.hk,Code:i.Cy},x={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},j=[{value:"Use a data component in a flow",id:"use-a-data-component-in-a-flow",level:2},{value:"API Request",id:"api-request",level:2},{value:"Directory",id:"directory",level:2},{value:"File",id:"file",level:2},{value:"Supported File Types",id:"supported-file-types",level:3},{value:"SQL Query",id:"sql-query",level:2},{value:"URL",id:"url",level:2},{value:"Webhook",id:"webhook",level:2},{value:"Legacy components",id:"legacy-components",level:2},{value:"Gmail Loader",id:"gmail-loader",level:3},{value:"Google Drive Loader",id:"google-drive-loader",level:3},{value:"Google Drive Search",id:"google-drive-search",level:3}];function p(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,d.R)(),...e.components},{Details:n}=t;return a||m("CH",!1),a.Code||m("CH.Code",!0),n||m("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.header,{children:(0,r.jsx)(t.h1,{id:"data-components-in-langflow",children:"Data components in Langflow"})}),"\n",(0,r.jsx)(t.p,{children:"Data components load data from a source into your flow."}),"\n",(0,r.jsx)(t.p,{children:"They may perform some processing or type checking, like converting raw HTML data into text, or ensuring your loaded file is of an acceptable type."}),"\n",(0,r.jsx)(t.h2,{id:"use-a-data-component-in-a-flow",children:"Use a data component in a flow"}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"URL"})," data component loads content from a list of URLs."]}),"\n",(0,r.jsxs)(t.p,{children:["In the component's ",(0,r.jsx)(t.strong,{children:"URLs"})," field, enter the URL you want to load. To add multiple URL fields, click ",(0,r.jsx)(c.A,{name:"Plus","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Add URL"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["Alternatively, connect a component that outputs the ",(0,r.jsx)(t.code,{children:"Message"})," type, like the ",(0,r.jsx)(t.strong,{children:"Chat Input"})," component, to supply your URLs from a component."]}),"\n",(0,r.jsx)(t.p,{children:"In this example of a document ingestion pipeline, the URL component outputs raw HTML to a text splitter, which splits the raw content into chunks for a vector database to ingest."}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"URL component in a data ingestion pipeline",src:s(80352).A+"",width:"2306",height:"1632"})}),"\n",(0,r.jsx)(t.h2,{id:"api-request",children:"API Request"}),"\n",(0,r.jsx)(t.p,{children:"This component makes HTTP requests using URLs or cURL commands."}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["To use this component in a flow, connect the ",(0,r.jsx)(t.strong,{children:"Data"})," output to a component that accepts the input.\nFor example, connect the ",(0,r.jsx)(t.strong,{children:"API Request"})," component to a ",(0,r.jsx)(t.strong,{children:"Chat Output"})," component."]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"API request into a chat output component",src:s(33972).A+"",width:"1742",height:"1248"})}),"\n",(0,r.jsxs)(t.ol,{start:"2",children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In the API component's ",(0,r.jsx)(t.strong,{children:"URLs"})," field, enter the endpoint for your request.\nThis example uses ",(0,r.jsx)(t.code,{children:"https://dummy-json.mock.beeceptor.com/posts"}),", which is a list of technology blog posts."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In the ",(0,r.jsx)(t.strong,{children:"Method"})," field, enter the type of request.\nThis example uses GET to retrieve a list of blog posts.\nThe component also supports POST, PATCH, PUT, and DELETE."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Optionally, enable the ",(0,r.jsx)(t.strong,{children:"Use cURL"})," button to create a field for pasting curl requests.\nThe equivalent call in this example is ",(0,r.jsx)(t.code,{children:"curl -v https://dummy-json.mock.beeceptor.com/posts"}),"."]}),"\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 click ",(0,r.jsx)(t.strong,{children:"Run Flow"}),".\nYour request returns a list of blog posts in the ",(0,r.jsx)(t.code,{children:"result"})," field."]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"urls"}),(0,r.jsx)(t.td,{children:"URLs"}),(0,r.jsx)(t.td,{children:"Enter one or more URLs, separated by commas."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"curl"}),(0,r.jsx)(t.td,{children:"cURL"}),(0,r.jsx)(t.td,{children:"Paste a curl command to populate the dictionary fields for headers and body."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"method"}),(0,r.jsx)(t.td,{children:"Method"}),(0,r.jsx)(t.td,{children:"The HTTP method to use."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"use_curl"}),(0,r.jsx)(t.td,{children:"Use cURL"}),(0,r.jsx)(t.td,{children:"Enable cURL mode to populate fields from a cURL command."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"query_params"}),(0,r.jsx)(t.td,{children:"Query Parameters"}),(0,r.jsx)(t.td,{children:"The query parameters to append to the URL."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"body"}),(0,r.jsx)(t.td,{children:"Body"}),(0,r.jsxs)(t.td,{children:["The body to send with the request as a dictionary (for ",(0,r.jsx)(t.code,{children:"POST"}),", ",(0,r.jsx)(t.code,{children:"PATCH"}),", ",(0,r.jsx)(t.code,{children:"PUT"}),")."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"headers"}),(0,r.jsx)(t.td,{children:"Headers"}),(0,r.jsx)(t.td,{children:"The headers to send with the request as a dictionary."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"timeout"}),(0,r.jsx)(t.td,{children:"Timeout"}),(0,r.jsx)(t.td,{children:"The timeout to use for the request."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"follow_redirects"}),(0,r.jsx)(t.td,{children:"Follow Redirects"}),(0,r.jsx)(t.td,{children:"Whether to follow http redirects."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"save_to_file"}),(0,r.jsx)(t.td,{children:"Save to File"}),(0,r.jsx)(t.td,{children:"Save the API response to a temporary file."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"include_httpx_metadata"}),(0,r.jsx)(t.td,{children:"Include HTTPx Metadata"}),(0,r.jsxs)(t.td,{children:["Include properties such as ",(0,r.jsx)(t.code,{children:"headers"}),", ",(0,r.jsx)(t.code,{children:"status_code"}),", ",(0,r.jsx)(t.code,{children:"response_headers"}),", and ",(0,r.jsx)(t.code,{children:"redirection_history"})," in the output."]})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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:"The result of the API requests. Returns a Data object containing source URL and results."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"dataframe"}),(0,r.jsx)(t.td,{children:"DataFrame"}),(0,r.jsx)(t.td,{children:"Converts the API response data into a tabular DataFrame format."})]})]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"directory",children:"Directory"}),"\n",(0,r.jsx)(t.p,{children:"This component recursively loads files from a directory, with options for file types, depth, and concurrency."}),"\n",(0,r.jsxs)(n,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Input"}),(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:"path"}),(0,r.jsx)(t.td,{children:"MessageTextInput"}),(0,r.jsx)(t.td,{children:"The path to the directory to load files from."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"types"}),(0,r.jsx)(t.td,{children:"MessageTextInput"}),(0,r.jsx)(t.td,{children:"The file types to load (leave empty to load all types)."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"depth"}),(0,r.jsx)(t.td,{children:"IntInput"}),(0,r.jsx)(t.td,{children:"The depth to search for files."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"max_concurrency"}),(0,r.jsx)(t.td,{children:"IntInput"}),(0,r.jsx)(t.td,{children:"The maximum concurrency for loading files."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"load_hidden"}),(0,r.jsx)(t.td,{children:"BoolInput"}),(0,r.jsx)(t.td,{children:"If true, hidden files are loaded."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"recursive"}),(0,r.jsx)(t.td,{children:"BoolInput"}),(0,r.jsx)(t.td,{children:"If true, the search is recursive."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"silent_errors"}),(0,r.jsx)(t.td,{children:"BoolInput"}),(0,r.jsx)(t.td,{children:"If true, errors do not raise an exception."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"use_multithreading"}),(0,r.jsx)(t.td,{children:"BoolInput"}),(0,r.jsx)(t.td,{children:"If true, multithreading is used."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Output"}),(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:"data"}),(0,r.jsx)(t.td,{children:"List[Data]"}),(0,r.jsx)(t.td,{children:"The loaded file data from the directory."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"dataframe"}),(0,r.jsx)(t.td,{children:"DataFrame"}),(0,r.jsx)(t.td,{children:"The loaded file data in tabular DataFrame format."})]})]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"file",children:"File"}),"\n",(0,r.jsxs)(t.p,{children:["This component loads and parses files of various supported formats and converts the content into a ",(0,r.jsx)(t.a,{href:"/concepts-objects",children:"Data"})," object. It supports multiple file types and provides options for parallel processing and error handling."]}),"\n",(0,r.jsx)(t.p,{children:"To load a document, follow these steps:"}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["Click the ",(0,r.jsx)(t.strong,{children:"Select files"})," button."]}),"\n",(0,r.jsxs)(t.li,{children:["Select a local file or a file loaded with ",(0,r.jsx)(t.a,{href:"/concepts-file-management",children:"File management"}),", and then click ",(0,r.jsx)(t.strong,{children:"Select file"}),"."]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:"The loaded file name appears in the component."}),"\n",(0,r.jsxs)(t.p,{children:["The default maximum supported file size is 100 MB.\nTo modify this value, see ",(0,r.jsx)(t.a,{href:"/environment-variables#LANGFLOW_MAX_FILE_SIZE_UPLOAD",children:"--max-file-size-upload"}),"."]}),"\n",(0,r.jsxs)(n,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"path"}),(0,r.jsx)(t.td,{children:"Files"}),(0,r.jsx)(t.td,{children:"The path to files to load. Supports individual files or bundled archives."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"file_path"}),(0,r.jsx)(t.td,{children:"Server File Path"}),(0,r.jsxs)(t.td,{children:["A Data object with a ",(0,r.jsx)(t.code,{children:"file_path"})," property pointing to the server file or a Message object with a path to the file. Supersedes 'Path' but supports the same file types."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"separator"}),(0,r.jsx)(t.td,{children:"Separator"}),(0,r.jsx)(t.td,{children:"The separator to use between multiple outputs in Message format."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"silent_errors"}),(0,r.jsx)(t.td,{children:"Silent Errors"}),(0,r.jsx)(t.td,{children:"If true, errors do not raise an exception."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"delete_server_file_after_processing"}),(0,r.jsx)(t.td,{children:"Delete Server File After Processing"}),(0,r.jsx)(t.td,{children:"If true, the Server File Path is deleted after processing."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"ignore_unsupported_extensions"}),(0,r.jsx)(t.td,{children:"Ignore Unsupported Extensions"}),(0,r.jsx)(t.td,{children:"If true, files with unsupported extensions are not processed."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"ignore_unspecified_files"}),(0,r.jsx)(t.td,{children:"Ignore Unspecified Files"}),(0,r.jsxs)(t.td,{children:["If true, ",(0,r.jsx)(t.code,{children:"Data"})," with no ",(0,r.jsx)(t.code,{children:"file_path"})," property is ignored."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"use_multithreading"}),(0,r.jsx)(t.td,{children:"[Deprecated] Use Multithreading"}),(0,r.jsxs)(t.td,{children:["Set 'Processing Concurrency' greater than ",(0,r.jsx)(t.code,{children:"1"})," to enable multithreading. This option is deprecated."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"concurrency_multithreading"}),(0,r.jsx)(t.td,{children:"Processing Concurrency"}),(0,r.jsx)(t.td,{children:"When multiple files are being processed, the number of files to process concurrently. Default is 1. Values greater than 1 enable parallel processing for 2 or more files."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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:["The parsed content of the file as a ",(0,r.jsx)(t.a,{href:"/concepts-objects",children:"Data"})," object."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"dataframe"}),(0,r.jsx)(t.td,{children:"DataFrame"}),(0,r.jsxs)(t.td,{children:["The file content as a ",(0,r.jsx)(t.a,{href:"/concepts-objects#dataframe-object",children:"DataFrame"})," object."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"message"}),(0,r.jsx)(t.td,{children:"Message"}),(0,r.jsxs)(t.td,{children:["The file content as a ",(0,r.jsx)(t.a,{href:"/concepts-objects#message-object",children:"Message"})," object."]})]})]})]})]}),"\n",(0,r.jsx)(t.h3,{id:"supported-file-types",children:"Supported File Types"}),"\n",(0,r.jsx)(t.p,{children:"Text files:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:".txt"})," - Text files"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:".md"}),", ",(0,r.jsx)(t.code,{children:".mdx"})," - Markdown files"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:".csv"})," - CSV files"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:".json"})," - JSON files"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:".yaml"}),", ",(0,r.jsx)(t.code,{children:".yml"})," - YAML files"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:".xml"})," - XML files"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:".html"}),", ",(0,r.jsx)(t.code,{children:".htm"})," - HTML files"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:".pdf"})," - PDF files"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:".docx"})," - Word documents"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:".py"})," - Python files"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:".sh"})," - Shell scripts"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:".sql"})," - SQL files"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:".js"})," - JavaScript files"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:".ts"}),", ",(0,r.jsx)(t.code,{children:".tsx"})," - TypeScript files"]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:"Archive formats (for bundling multiple files):"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:".zip"})," - ZIP archives"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:".tar"})," - TAR archives"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:".tgz"})," - Gzipped TAR archives"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:".bz2"})," - Bzip2 compressed files"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:".gz"})," - Gzip compressed files"]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"sql-query",children:"SQL Query"}),"\n",(0,r.jsx)(t.p,{children:"This component executes SQL queries on a specified database."}),"\n",(0,r.jsxs)(n,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"query"}),(0,r.jsx)(t.td,{children:"Query"}),(0,r.jsx)(t.td,{children:"The SQL query to execute."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"database_url"}),(0,r.jsx)(t.td,{children:"Database URL"}),(0,r.jsx)(t.td,{children:"The URL of the database."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"include_columns"}),(0,r.jsx)(t.td,{children:"Include Columns"}),(0,r.jsx)(t.td,{children:"Include columns in the result."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"passthrough"}),(0,r.jsx)(t.td,{children:"Passthrough"}),(0,r.jsx)(t.td,{children:"If an error occurs, return the query instead of raising an exception."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"add_error"}),(0,r.jsx)(t.td,{children:"Add Error"}),(0,r.jsx)(t.td,{children:"Add the error to the result."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"result"}),(0,r.jsx)(t.td,{children:"Result"}),(0,r.jsx)(t.td,{children:"The result of the SQL query execution."})]})})]})]}),"\n",(0,r.jsx)(t.h2,{id:"url",children:"URL"}),"\n",(0,r.jsx)(t.p,{children:"This component fetches content from one or more URLs, processes the content, and returns it in various formats. It supports output in plain text or raw HTML."}),"\n",(0,r.jsxs)(t.p,{children:["In the component's ",(0,r.jsx)(t.strong,{children:"URLs"})," field, enter the URL you want to load. To add multiple URL fields, click ",(0,r.jsx)(c.A,{name:"Plus","aria-hidden":"true"})," ",(0,r.jsx)(t.strong,{children:"Add URL"}),"."]}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["To use this component in a flow, connect the ",(0,r.jsx)(t.strong,{children:"DataFrame"})," output to a component that accepts the input.\nFor example, connect the ",(0,r.jsx)(t.strong,{children:"URL"})," component to a ",(0,r.jsx)(t.strong,{children:"Chat Output"})," component."]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"URL request into a chat output component",src:s(55228).A+"",width:"1578",height:"1086"})}),"\n",(0,r.jsxs)(t.ol,{start:"2",children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In the URL component's ",(0,r.jsx)(t.strong,{children:"URLs"})," field, enter the URL for your request.\nThis example uses ",(0,r.jsx)(t.code,{children:"langflow.org"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Optionally, in the ",(0,r.jsx)(t.strong,{children:"Max Depth"})," field, enter how many pages away from the initial URL you want to crawl.\nSelect ",(0,r.jsx)(t.code,{children:"1"})," to crawl only the page specified in the ",(0,r.jsx)(t.strong,{children:"URLs"})," field.\nSelect ",(0,r.jsx)(t.code,{children:"2"})," to crawl all pages linked from that page.\nThe component crawls by link traversal, not by URL path depth."]}),"\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 click ",(0,r.jsx)(t.strong,{children:"Run Flow"}),".\nThe text contents of the URL are returned to the Playground as a structured DataFrame."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In the ",(0,r.jsx)(t.strong,{children:"URL"})," component, change the output port to ",(0,r.jsx)(t.strong,{children:"Message"}),", and then run the flow again.\nThe text contents of the URL are returned as unstructured raw text, which you can extract patterns from with the ",(0,r.jsx)(t.strong,{children:"Regex Extractor"})," tool."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Connect the ",(0,r.jsx)(t.strong,{children:"URL"})," component to a ",(0,r.jsx)(t.strong,{children:"Regex Extractor"})," and ",(0,r.jsx)(t.strong,{children:"Chat Output"}),"."]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"Regex extractor connected to url component",src:s(8886).A+"",width:"1606",height:"848"})}),"\n",(0,r.jsxs)(t.ol,{start:"7",children:["\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:"Regex Extractor"})," tool, enter a pattern to extract text from the ",(0,r.jsx)(t.strong,{children:"URL"}),' component\'s raw output.\nThis example extracts the first paragraph from the "In the News" section of ',(0,r.jsx)(t.code,{children:"https://en.wikipedia.org/wiki/Main_Page"}),"."]}),"\n"]}),"\n",(0,r.jsx)(a.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"In the news\\s*\\n(.*?)(?=\\n\\n)",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsx)(t.p,{children:"Result:"}),"\n",(0,r.jsx)(a.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"Peruvian writer and Nobel Prize in Literature laureate Mario Vargas Llosa (pictured) dies at the age of 89.",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsxs)(n,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"urls"}),(0,r.jsx)(t.td,{children:"URLs"}),(0,r.jsx)(t.td,{children:"Click the '+' button to enter one or more URLs to crawl recursively."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"max_depth"}),(0,r.jsx)(t.td,{children:"Max Depth"}),(0,r.jsx)(t.td,{children:"Controls how many 'clicks' away from the initial page the crawler will go."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"prevent_outside"}),(0,r.jsx)(t.td,{children:"Prevent Outside"}),(0,r.jsx)(t.td,{children:"If enabled, only crawls URLs within the same domain as the root URL."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"use_async"}),(0,r.jsx)(t.td,{children:"Use Async"}),(0,r.jsx)(t.td,{children:"If enabled, uses asynchronous loading which can be significantly faster but might use more system resources."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"format"}),(0,r.jsx)(t.td,{children:"Output Format"}),(0,r.jsxs)(t.td,{children:["Output Format. Use ",(0,r.jsx)(t.code,{children:"Text"})," to extract the text from the HTML or ",(0,r.jsx)(t.code,{children:"HTML"})," for the raw HTML content."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"timeout"}),(0,r.jsx)(t.td,{children:"Timeout"}),(0,r.jsx)(t.td,{children:"Timeout for the request in seconds."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"headers"}),(0,r.jsx)(t.td,{children:"Headers"}),(0,r.jsx)(t.td,{children:"The headers to send with the request."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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:["A list of ",(0,r.jsx)(t.a,{href:"/concepts-objects",children:"Data"})," objects containing fetched content and metadata."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"text"}),(0,r.jsx)(t.td,{children:"Message"}),(0,r.jsx)(t.td,{children:"The fetched content as formatted text."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"dataframe"}),(0,r.jsx)(t.td,{children:"DataFrame"}),(0,r.jsxs)(t.td,{children:["The content formatted as a ",(0,r.jsx)(t.a,{href:"/concepts-objects#dataframe-object",children:"DataFrame"})," object."]})]})]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"webhook",children:"Webhook"}),"\n",(0,r.jsx)(t.p,{children:"This component defines a webhook trigger that runs a flow when it receives an HTTP POST request."}),"\n",(0,r.jsxs)(t.p,{children:["If the input is not valid JSON, the component wraps it in a ",(0,r.jsx)(t.code,{children:"payload"})," object so that it can be processed and still trigger the flow. The component does not require an API key."]}),"\n",(0,r.jsxs)(t.p,{children:["When a ",(0,r.jsx)(t.strong,{children:"Webhook"})," component is added to the workspace, a new ",(0,r.jsx)(t.strong,{children:"Webhook cURL"})," tab becomes available in the ",(0,r.jsx)(t.strong,{children:"API"})," pane that contains an HTTP POST request for triggering the webhook component. For example:"]}),"\n",(0,r.jsx)(a.Code,{codeConfig:x,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 ",props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:' "http://localhost:7860/api/v1/webhook/**YOUR_FLOW_ID**" ',props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" -H ",props:{style:{color:"#79C0FF"}}},{content:"'Content-Type: application/json'",props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" -d ",props:{style:{color:"#79C0FF"}}},{content:'\'{"any": "data"}\'',props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,r.jsx)(t.p,{children:"To test the webhook component:"}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["Add a ",(0,r.jsx)(t.strong,{children:"Webhook"})," component to the flow."]}),"\n",(0,r.jsxs)(t.li,{children:["Connect the ",(0,r.jsx)(t.strong,{children:"Webhook"})," component's ",(0,r.jsx)(t.strong,{children:"Data"})," output to the ",(0,r.jsx)(t.strong,{children:"Data"})," input of a ",(0,r.jsx)(t.a,{href:"/components-processing#parser",children:"Parser"})," component."]}),"\n",(0,r.jsxs)(t.li,{children:["Connect the ",(0,r.jsx)(t.strong,{children:"Parser"})," component's ",(0,r.jsx)(t.strong,{children:"Parsed Text"})," output to the ",(0,r.jsx)(t.strong,{children:"Text"})," input of a ",(0,r.jsx)(t.a,{href:"/components-io#chat-output",children:"Chat Output"})," component."]}),"\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:"Parser"})," component, under ",(0,r.jsx)(t.strong,{children:"Mode"}),", select ",(0,r.jsx)(t.strong,{children:"Stringify"}),".\nThis mode passes the webhook's data as a string for the ",(0,r.jsx)(t.strong,{children:"Chat Output"})," component to print."]}),"\n",(0,r.jsxs)(t.li,{children:["To send a POST request, copy the code from the ",(0,r.jsx)(t.strong,{children:"Webhook cURL"})," tab in the ",(0,r.jsx)(t.strong,{children:"API"})," pane and paste it into a terminal."]}),"\n",(0,r.jsx)(t.li,{children:"Send the POST request."}),"\n",(0,r.jsxs)(t.li,{children:["Open the ",(0,r.jsx)(t.strong,{children:"Playground"}),".\nYour JSON data is posted to the ",(0,r.jsx)(t.strong,{children:"Chat Output"})," component, which indicates that the webhook component is correctly triggering the flow."]}),"\n"]}),"\n",(0,r.jsxs)(n,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"Description"})]})}),(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:"Payload"}),(0,r.jsx)(t.td,{children:"Receives a payload from external systems through HTTP POST requests."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"curl"}),(0,r.jsx)(t.td,{children:"cURL"}),(0,r.jsx)(t.td,{children:"The cURL command template for making requests to this webhook."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"endpoint"}),(0,r.jsx)(t.td,{children:"Endpoint"}),(0,r.jsx)(t.td,{children:"The endpoint URL where this webhook receives requests."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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:"Description"})]})}),(0,r.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"output_data"}),(0,r.jsx)(t.td,{children:"Data"}),(0,r.jsxs)(t.td,{children:["Outputs processed data from the webhook input, and returns an empty ",(0,r.jsx)(t.a,{href:"/concepts-objects",children:"Data"})," object if no input is provided. If the input is not valid JSON, the component wraps it in a ",(0,r.jsx)(t.code,{children:"payload"})," object."]})]})})]})]}),"\n",(0,r.jsx)(t.h2,{id:"legacy-components",children:"Legacy components"}),"\n",(0,r.jsx)(t.p,{children:"Legacy components are available for use but are no longer supported."}),"\n",(0,r.jsx)(t.h3,{id:"gmail-loader",children:"Gmail Loader"}),"\n",(0,r.jsx)(t.p,{children:"This component loads emails from Gmail using provided credentials and filters."}),"\n",(0,r.jsxs)(t.p,{children:["For more information about creating a service account JSON, see ",(0,r.jsx)(t.a,{href:"https://developers.google.com/identity/protocols/oauth2/service-account",children:"Service Account JSON"}),"."]}),"\n",(0,r.jsxs)(n,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Input"}),(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:"json_string"}),(0,r.jsx)(t.td,{children:"SecretStrInput"}),(0,r.jsx)(t.td,{children:"A JSON string containing OAuth 2.0 access token information for service account access."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"label_ids"}),(0,r.jsx)(t.td,{children:"MessageTextInput"}),(0,r.jsx)(t.td,{children:"A comma-separated list of label IDs to filter emails."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"max_results"}),(0,r.jsx)(t.td,{children:"MessageTextInput"}),(0,r.jsx)(t.td,{children:"The maximum number of emails to load."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Output"}),(0,r.jsx)(t.th,{children:"Type"}),(0,r.jsx)(t.th,{children:"Description"})]})}),(0,r.jsx)(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:"The loaded email data."})]})})]})]}),"\n",(0,r.jsx)(t.h3,{id:"google-drive-loader",children:"Google Drive Loader"}),"\n",(0,r.jsx)(t.p,{children:"This component loads documents from Google Drive using provided credentials and a single document ID."}),"\n",(0,r.jsxs)(t.p,{children:["For more information about creating a service account JSON, see ",(0,r.jsx)(t.a,{href:"https://developers.google.com/identity/protocols/oauth2/service-account",children:"Service Account JSON"}),"."]}),"\n",(0,r.jsxs)(n,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Input"}),(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:"json_string"}),(0,r.jsx)(t.td,{children:"SecretStrInput"}),(0,r.jsx)(t.td,{children:"A JSON string containing OAuth 2.0 access token information for service account access."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"document_id"}),(0,r.jsx)(t.td,{children:"MessageTextInput"}),(0,r.jsx)(t.td,{children:"A single Google Drive document ID."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Output"}),(0,r.jsx)(t.th,{children:"Type"}),(0,r.jsx)(t.th,{children:"Description"})]})}),(0,r.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"docs"}),(0,r.jsx)(t.td,{children:"Data"}),(0,r.jsx)(t.td,{children:"The loaded document data."})]})})]})]}),"\n",(0,r.jsx)(t.h3,{id:"google-drive-search",children:"Google Drive Search"}),"\n",(0,r.jsx)(t.p,{children:"This component searches Google Drive files using provided credentials and query parameters."}),"\n",(0,r.jsxs)(t.p,{children:["For more information about creating a service account JSON, see ",(0,r.jsx)(t.a,{href:"https://developers.google.com/identity/protocols/oauth2/service-account",children:"Service Account JSON"}),"."]}),"\n",(0,r.jsxs)(n,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Input"}),(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:"token_string"}),(0,r.jsx)(t.td,{children:"SecretStrInput"}),(0,r.jsx)(t.td,{children:"A JSON string containing OAuth 2.0 access token information for service account access."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"query_item"}),(0,r.jsx)(t.td,{children:"DropdownInput"}),(0,r.jsx)(t.td,{children:"The field to query."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"valid_operator"}),(0,r.jsx)(t.td,{children:"DropdownInput"}),(0,r.jsx)(t.td,{children:"The operator to use in the query."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"search_term"}),(0,r.jsx)(t.td,{children:"MessageTextInput"}),(0,r.jsx)(t.td,{children:"The value to search for in the specified query item."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"query_string"}),(0,r.jsx)(t.td,{children:"MessageTextInput"}),(0,r.jsx)(t.td,{children:"The query string used for searching."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Output"}),(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:"doc_urls"}),(0,r.jsx)(t.td,{children:"List[str]"}),(0,r.jsx)(t.td,{children:"The URLs of the found documents."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"doc_ids"}),(0,r.jsx)(t.td,{children:"List[str]"}),(0,r.jsx)(t.td,{children:"The IDs of the found documents."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"doc_titles"}),(0,r.jsx)(t.td,{children:"List[str]"}),(0,r.jsx)(t.td,{children:"The titles of the found documents."})]}),(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:"The document titles and URLs in a structured format."})]})]})]})]})]})}function u(e={}){const{wrapper:t}={...(0,d.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}function m(e,t){throw new Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}},17886:(e,t,s)=>{s.d(t,{A:()=>d});s(96540);var n=s(64058),r=s(74848);function d({name:e,...t}){const s=n[e];return s?(0,r.jsx)(s,{...t}):null}},33972:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/component-api-request-chat-output-6dd0e176265482c2dca9899f0a70047a.png"},55228:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/component-url-11d5306d5c7a52a376fab32344eab7a2.png"},80352:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/url-component-fb712df73581345c0f344013ce6ff2fd.png"}}]);
\ No newline at end of file
diff --git a/assets/js/fdefa9a8.c4a0736a.js b/assets/js/fdefa9a8.c4a0736a.js
deleted file mode 100644
index 425384649f..0000000000
--- a/assets/js/fdefa9a8.c4a0736a.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[7453],{8886:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/component-url-regex-8cae4a8d6491d360115ad552f0c467d3.png"},10354:(e,t,s)=>{s.r(t),s.d(t,{CH:()=>a,assets:()=>h,chCodeConfig:()=>x,contentTitle:()=>o,default:()=>u,frontMatter:()=>l,metadata:()=>n,toc:()=>j});const n=JSON.parse('{"id":"Components/components-data","title":"Data","description":"Data components load data from a source into your flow.","source":"@site/docs/Components/components-data.md","sourceDirName":"Components","slug":"/components-data","permalink":"/components-data","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Data","slug":"/components-data"},"sidebar":"docs","previous":{"title":"Create custom Python components","permalink":"/components-custom-components"},"next":{"title":"Embeddings","permalink":"/components-embedding-models"}}');var r=s(74848),d=s(28453),i=s(24754),c=s(17886);const l={title:"Data",slug:"/components-data"},o="Data components in Langflow",h={},a={annotations:i.hk,Code:i.Cy},x={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},j=[{value:"Use a data component in a flow",id:"use-a-data-component-in-a-flow",level:2},{value:"API Request",id:"api-request",level:2},{value:"Directory",id:"directory",level:2},{value:"File",id:"file",level:2},{value:"Supported File Types",id:"supported-file-types",level:3},{value:"SQL Query",id:"sql-query",level:2},{value:"URL",id:"url",level:2},{value:"Webhook",id:"webhook",level:2},{value:"Legacy components",id:"legacy-components",level:2},{value:"Gmail Loader",id:"gmail-loader",level:3},{value:"Google Drive Loader",id:"google-drive-loader",level:3},{value:"Google Drive Search",id:"google-drive-search",level:3}];function p(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,d.R)(),...e.components},{Details:n}=t;return a||m("CH",!1),a.Code||m("CH.Code",!0),n||m("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.header,{children:(0,r.jsx)(t.h1,{id:"data-components-in-langflow",children:"Data components in Langflow"})}),"\n",(0,r.jsx)(t.p,{children:"Data components load data from a source into your flow."}),"\n",(0,r.jsx)(t.p,{children:"They may perform some processing or type checking, like converting raw HTML data into text, or ensuring your loaded file is of an acceptable type."}),"\n",(0,r.jsx)(t.h2,{id:"use-a-data-component-in-a-flow",children:"Use a data component in a flow"}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"URL"})," data component loads content from a list of URLs."]}),"\n",(0,r.jsxs)(t.p,{children:["In the component's ",(0,r.jsx)(t.strong,{children:"URLs"})," field, enter the URL you want to load. To add multiple URL fields, click ",(0,r.jsx)(c.A,{name:"Plus","aria-label":"Add"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["Alternatively, connect a component that outputs the ",(0,r.jsx)(t.code,{children:"Message"})," type, like the ",(0,r.jsx)(t.strong,{children:"Chat Input"})," component, to supply your URLs from a component."]}),"\n",(0,r.jsx)(t.p,{children:"In this example of a document ingestion pipeline, the URL component outputs raw HTML to a text splitter, which splits the raw content into chunks for a vector database to ingest."}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"URL component in a data ingestion pipeline",src:s(80352).A+"",width:"2306",height:"1632"})}),"\n",(0,r.jsx)(t.h2,{id:"api-request",children:"API Request"}),"\n",(0,r.jsx)(t.p,{children:"This component makes HTTP requests using URLs or cURL commands."}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["To use this component in a flow, connect the ",(0,r.jsx)(t.strong,{children:"Data"})," output to a component that accepts the input.\nFor example, connect the ",(0,r.jsx)(t.strong,{children:"API Request"})," component to a ",(0,r.jsx)(t.strong,{children:"Chat Output"})," component."]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"API request into a chat output component",src:s(33972).A+"",width:"1742",height:"1248"})}),"\n",(0,r.jsxs)(t.ol,{start:"2",children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In the API component's ",(0,r.jsx)(t.strong,{children:"URLs"})," field, enter the endpoint for your request.\nThis example uses ",(0,r.jsx)(t.code,{children:"https://dummy-json.mock.beeceptor.com/posts"}),", which is a list of technology blog posts."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In the ",(0,r.jsx)(t.strong,{children:"Method"})," field, enter the type of request.\nThis example uses GET to retrieve a list of blog posts.\nThe component also supports POST, PATCH, PUT, and DELETE."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Optionally, enable the ",(0,r.jsx)(t.strong,{children:"Use cURL"})," button to create a field for pasting curl requests.\nThe equivalent call in this example is ",(0,r.jsx)(t.code,{children:"curl -v https://dummy-json.mock.beeceptor.com/posts"}),"."]}),"\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 click ",(0,r.jsx)(t.strong,{children:"Run Flow"}),".\nYour request returns a list of blog posts in the ",(0,r.jsx)(t.code,{children:"result"})," field."]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"urls"}),(0,r.jsx)(t.td,{children:"URLs"}),(0,r.jsx)(t.td,{children:"Enter one or more URLs, separated by commas."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"curl"}),(0,r.jsx)(t.td,{children:"cURL"}),(0,r.jsx)(t.td,{children:"Paste a curl command to populate the dictionary fields for headers and body."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"method"}),(0,r.jsx)(t.td,{children:"Method"}),(0,r.jsx)(t.td,{children:"The HTTP method to use."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"use_curl"}),(0,r.jsx)(t.td,{children:"Use cURL"}),(0,r.jsx)(t.td,{children:"Enable cURL mode to populate fields from a cURL command."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"query_params"}),(0,r.jsx)(t.td,{children:"Query Parameters"}),(0,r.jsx)(t.td,{children:"The query parameters to append to the URL."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"body"}),(0,r.jsx)(t.td,{children:"Body"}),(0,r.jsxs)(t.td,{children:["The body to send with the request as a dictionary (for ",(0,r.jsx)(t.code,{children:"POST"}),", ",(0,r.jsx)(t.code,{children:"PATCH"}),", ",(0,r.jsx)(t.code,{children:"PUT"}),")."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"headers"}),(0,r.jsx)(t.td,{children:"Headers"}),(0,r.jsx)(t.td,{children:"The headers to send with the request as a dictionary."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"timeout"}),(0,r.jsx)(t.td,{children:"Timeout"}),(0,r.jsx)(t.td,{children:"The timeout to use for the request."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"follow_redirects"}),(0,r.jsx)(t.td,{children:"Follow Redirects"}),(0,r.jsx)(t.td,{children:"Whether to follow http redirects."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"save_to_file"}),(0,r.jsx)(t.td,{children:"Save to File"}),(0,r.jsx)(t.td,{children:"Save the API response to a temporary file."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"include_httpx_metadata"}),(0,r.jsx)(t.td,{children:"Include HTTPx Metadata"}),(0,r.jsxs)(t.td,{children:["Include properties such as ",(0,r.jsx)(t.code,{children:"headers"}),", ",(0,r.jsx)(t.code,{children:"status_code"}),", ",(0,r.jsx)(t.code,{children:"response_headers"}),", and ",(0,r.jsx)(t.code,{children:"redirection_history"})," in the output."]})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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:"The result of the API requests. Returns a Data object containing source URL and results."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"dataframe"}),(0,r.jsx)(t.td,{children:"DataFrame"}),(0,r.jsx)(t.td,{children:"Converts the API response data into a tabular DataFrame format."})]})]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"directory",children:"Directory"}),"\n",(0,r.jsx)(t.p,{children:"This component recursively loads files from a directory, with options for file types, depth, and concurrency."}),"\n",(0,r.jsxs)(n,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Input"}),(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:"path"}),(0,r.jsx)(t.td,{children:"MessageTextInput"}),(0,r.jsx)(t.td,{children:"The path to the directory to load files from."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"types"}),(0,r.jsx)(t.td,{children:"MessageTextInput"}),(0,r.jsx)(t.td,{children:"The file types to load (leave empty to load all types)."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"depth"}),(0,r.jsx)(t.td,{children:"IntInput"}),(0,r.jsx)(t.td,{children:"The depth to search for files."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"max_concurrency"}),(0,r.jsx)(t.td,{children:"IntInput"}),(0,r.jsx)(t.td,{children:"The maximum concurrency for loading files."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"load_hidden"}),(0,r.jsx)(t.td,{children:"BoolInput"}),(0,r.jsx)(t.td,{children:"If true, hidden files are loaded."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"recursive"}),(0,r.jsx)(t.td,{children:"BoolInput"}),(0,r.jsx)(t.td,{children:"If true, the search is recursive."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"silent_errors"}),(0,r.jsx)(t.td,{children:"BoolInput"}),(0,r.jsx)(t.td,{children:"If true, errors do not raise an exception."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"use_multithreading"}),(0,r.jsx)(t.td,{children:"BoolInput"}),(0,r.jsx)(t.td,{children:"If true, multithreading is used."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Output"}),(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:"data"}),(0,r.jsx)(t.td,{children:"List[Data]"}),(0,r.jsx)(t.td,{children:"The loaded file data from the directory."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"dataframe"}),(0,r.jsx)(t.td,{children:"DataFrame"}),(0,r.jsx)(t.td,{children:"The loaded file data in tabular DataFrame format."})]})]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"file",children:"File"}),"\n",(0,r.jsxs)(t.p,{children:["This component loads and parses files of various supported formats and converts the content into a ",(0,r.jsx)(t.a,{href:"/concepts-objects",children:"Data"})," object. It supports multiple file types and provides options for parallel processing and error handling."]}),"\n",(0,r.jsx)(t.p,{children:"To load a document, follow these steps:"}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["Click the ",(0,r.jsx)(t.strong,{children:"Select files"})," button."]}),"\n",(0,r.jsxs)(t.li,{children:["Select a local file or a file loaded with ",(0,r.jsx)(t.a,{href:"/concepts-file-management",children:"File management"}),", and then click ",(0,r.jsx)(t.strong,{children:"Select file"}),"."]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:"The loaded file name appears in the component."}),"\n",(0,r.jsxs)(t.p,{children:["The default maximum supported file size is 100 MB.\nTo modify this value, see ",(0,r.jsx)(t.a,{href:"/environment-variables#LANGFLOW_MAX_FILE_SIZE_UPLOAD",children:"--max-file-size-upload"}),"."]}),"\n",(0,r.jsxs)(n,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"path"}),(0,r.jsx)(t.td,{children:"Files"}),(0,r.jsx)(t.td,{children:"The path to files to load. Supports individual files or bundled archives."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"file_path"}),(0,r.jsx)(t.td,{children:"Server File Path"}),(0,r.jsxs)(t.td,{children:["A Data object with a ",(0,r.jsx)(t.code,{children:"file_path"})," property pointing to the server file or a Message object with a path to the file. Supersedes 'Path' but supports the same file types."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"separator"}),(0,r.jsx)(t.td,{children:"Separator"}),(0,r.jsx)(t.td,{children:"The separator to use between multiple outputs in Message format."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"silent_errors"}),(0,r.jsx)(t.td,{children:"Silent Errors"}),(0,r.jsx)(t.td,{children:"If true, errors do not raise an exception."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"delete_server_file_after_processing"}),(0,r.jsx)(t.td,{children:"Delete Server File After Processing"}),(0,r.jsx)(t.td,{children:"If true, the Server File Path is deleted after processing."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"ignore_unsupported_extensions"}),(0,r.jsx)(t.td,{children:"Ignore Unsupported Extensions"}),(0,r.jsx)(t.td,{children:"If true, files with unsupported extensions are not processed."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"ignore_unspecified_files"}),(0,r.jsx)(t.td,{children:"Ignore Unspecified Files"}),(0,r.jsxs)(t.td,{children:["If true, ",(0,r.jsx)(t.code,{children:"Data"})," with no ",(0,r.jsx)(t.code,{children:"file_path"})," property is ignored."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"use_multithreading"}),(0,r.jsx)(t.td,{children:"[Deprecated] Use Multithreading"}),(0,r.jsxs)(t.td,{children:["Set 'Processing Concurrency' greater than ",(0,r.jsx)(t.code,{children:"1"})," to enable multithreading. This option is deprecated."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"concurrency_multithreading"}),(0,r.jsx)(t.td,{children:"Processing Concurrency"}),(0,r.jsx)(t.td,{children:"When multiple files are being processed, the number of files to process concurrently. Default is 1. Values greater than 1 enable parallel processing for 2 or more files."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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:["The parsed content of the file as a ",(0,r.jsx)(t.a,{href:"/concepts-objects",children:"Data"})," object."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"dataframe"}),(0,r.jsx)(t.td,{children:"DataFrame"}),(0,r.jsxs)(t.td,{children:["The file content as a ",(0,r.jsx)(t.a,{href:"/concepts-objects#dataframe-object",children:"DataFrame"})," object."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"message"}),(0,r.jsx)(t.td,{children:"Message"}),(0,r.jsxs)(t.td,{children:["The file content as a ",(0,r.jsx)(t.a,{href:"/concepts-objects#message-object",children:"Message"})," object."]})]})]})]})]}),"\n",(0,r.jsx)(t.h3,{id:"supported-file-types",children:"Supported File Types"}),"\n",(0,r.jsx)(t.p,{children:"Text files:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:".txt"})," - Text files"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:".md"}),", ",(0,r.jsx)(t.code,{children:".mdx"})," - Markdown files"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:".csv"})," - CSV files"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:".json"})," - JSON files"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:".yaml"}),", ",(0,r.jsx)(t.code,{children:".yml"})," - YAML files"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:".xml"})," - XML files"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:".html"}),", ",(0,r.jsx)(t.code,{children:".htm"})," - HTML files"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:".pdf"})," - PDF files"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:".docx"})," - Word documents"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:".py"})," - Python files"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:".sh"})," - Shell scripts"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:".sql"})," - SQL files"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:".js"})," - JavaScript files"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:".ts"}),", ",(0,r.jsx)(t.code,{children:".tsx"})," - TypeScript files"]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:"Archive formats (for bundling multiple files):"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:".zip"})," - ZIP archives"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:".tar"})," - TAR archives"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:".tgz"})," - Gzipped TAR archives"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:".bz2"})," - Bzip2 compressed files"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:".gz"})," - Gzip compressed files"]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"sql-query",children:"SQL Query"}),"\n",(0,r.jsx)(t.p,{children:"This component executes SQL queries on a specified database."}),"\n",(0,r.jsxs)(n,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"query"}),(0,r.jsx)(t.td,{children:"Query"}),(0,r.jsx)(t.td,{children:"The SQL query to execute."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"database_url"}),(0,r.jsx)(t.td,{children:"Database URL"}),(0,r.jsx)(t.td,{children:"The URL of the database."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"include_columns"}),(0,r.jsx)(t.td,{children:"Include Columns"}),(0,r.jsx)(t.td,{children:"Include columns in the result."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"passthrough"}),(0,r.jsx)(t.td,{children:"Passthrough"}),(0,r.jsx)(t.td,{children:"If an error occurs, return the query instead of raising an exception."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"add_error"}),(0,r.jsx)(t.td,{children:"Add Error"}),(0,r.jsx)(t.td,{children:"Add the error to the result."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"result"}),(0,r.jsx)(t.td,{children:"Result"}),(0,r.jsx)(t.td,{children:"The result of the SQL query execution."})]})})]})]}),"\n",(0,r.jsx)(t.h2,{id:"url",children:"URL"}),"\n",(0,r.jsx)(t.p,{children:"This component fetches content from one or more URLs, processes the content, and returns it in various formats. It supports output in plain text or raw HTML."}),"\n",(0,r.jsxs)(t.p,{children:["In the component's ",(0,r.jsx)(t.strong,{children:"URLs"})," field, enter the URL you want to load. To add multiple URL fields, click ",(0,r.jsx)(c.A,{name:"Plus","aria-label":"Add"}),"."]}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["To use this component in a flow, connect the ",(0,r.jsx)(t.strong,{children:"DataFrame"})," output to a component that accepts the input.\nFor example, connect the ",(0,r.jsx)(t.strong,{children:"URL"})," component to a ",(0,r.jsx)(t.strong,{children:"Chat Output"})," component."]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"URL request into a chat output component",src:s(55228).A+"",width:"1578",height:"1086"})}),"\n",(0,r.jsxs)(t.ol,{start:"2",children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In the URL component's ",(0,r.jsx)(t.strong,{children:"URLs"})," field, enter the URL for your request.\nThis example uses ",(0,r.jsx)(t.code,{children:"langflow.org"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Optionally, in the ",(0,r.jsx)(t.strong,{children:"Max Depth"})," field, enter how many pages away from the initial URL you want to crawl.\nSelect ",(0,r.jsx)(t.code,{children:"1"})," to crawl only the page specified in the ",(0,r.jsx)(t.strong,{children:"URLs"})," field.\nSelect ",(0,r.jsx)(t.code,{children:"2"})," to crawl all pages linked from that page.\nThe component crawls by link traversal, not by URL path depth."]}),"\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 click ",(0,r.jsx)(t.strong,{children:"Run Flow"}),".\nThe text contents of the URL are returned to the Playground as a structured DataFrame."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In the ",(0,r.jsx)(t.strong,{children:"URL"})," component, change the output port to ",(0,r.jsx)(t.strong,{children:"Message"}),", and then run the flow again.\nThe text contents of the URL are returned as unstructured raw text, which you can extract patterns from with the ",(0,r.jsx)(t.strong,{children:"Regex Extractor"})," tool."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Connect the ",(0,r.jsx)(t.strong,{children:"URL"})," component to a ",(0,r.jsx)(t.strong,{children:"Regex Extractor"})," and ",(0,r.jsx)(t.strong,{children:"Chat Output"}),"."]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"Regex extractor connected to url component",src:s(8886).A+"",width:"1606",height:"848"})}),"\n",(0,r.jsxs)(t.ol,{start:"7",children:["\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:"Regex Extractor"})," tool, enter a pattern to extract text from the ",(0,r.jsx)(t.strong,{children:"URL"}),' component\'s raw output.\nThis example extracts the first paragraph from the "In the News" section of ',(0,r.jsx)(t.code,{children:"https://en.wikipedia.org/wiki/Main_Page"}),"."]}),"\n"]}),"\n",(0,r.jsx)(a.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"In the news\\s*\\n(.*?)(?=\\n\\n)",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsx)(t.p,{children:"Result:"}),"\n",(0,r.jsx)(a.Code,{codeConfig:x,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"Peruvian writer and Nobel Prize in Literature laureate Mario Vargas Llosa (pictured) dies at the age of 89.",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,r.jsxs)(n,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"urls"}),(0,r.jsx)(t.td,{children:"URLs"}),(0,r.jsx)(t.td,{children:"Click the '+' button to enter one or more URLs to crawl recursively."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"max_depth"}),(0,r.jsx)(t.td,{children:"Max Depth"}),(0,r.jsx)(t.td,{children:"Controls how many 'clicks' away from the initial page the crawler will go."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"prevent_outside"}),(0,r.jsx)(t.td,{children:"Prevent Outside"}),(0,r.jsx)(t.td,{children:"If enabled, only crawls URLs within the same domain as the root URL."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"use_async"}),(0,r.jsx)(t.td,{children:"Use Async"}),(0,r.jsx)(t.td,{children:"If enabled, uses asynchronous loading which can be significantly faster but might use more system resources."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"format"}),(0,r.jsx)(t.td,{children:"Output Format"}),(0,r.jsxs)(t.td,{children:["Output Format. Use ",(0,r.jsx)(t.code,{children:"Text"})," to extract the text from the HTML or ",(0,r.jsx)(t.code,{children:"HTML"})," for the raw HTML content."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"timeout"}),(0,r.jsx)(t.td,{children:"Timeout"}),(0,r.jsx)(t.td,{children:"Timeout for the request in seconds."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"headers"}),(0,r.jsx)(t.td,{children:"Headers"}),(0,r.jsx)(t.td,{children:"The headers to send with the request."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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:["A list of ",(0,r.jsx)(t.a,{href:"/concepts-objects",children:"Data"})," objects containing fetched content and metadata."]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"text"}),(0,r.jsx)(t.td,{children:"Message"}),(0,r.jsx)(t.td,{children:"The fetched content as formatted text."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"dataframe"}),(0,r.jsx)(t.td,{children:"DataFrame"}),(0,r.jsxs)(t.td,{children:["The content formatted as a ",(0,r.jsx)(t.a,{href:"/concepts-objects#dataframe-object",children:"DataFrame"})," object."]})]})]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"webhook",children:"Webhook"}),"\n",(0,r.jsx)(t.p,{children:"This component defines a webhook trigger that runs a flow when it receives an HTTP POST request."}),"\n",(0,r.jsxs)(t.p,{children:["If the input is not valid JSON, the component wraps it in a ",(0,r.jsx)(t.code,{children:"payload"})," object so that it can be processed and still trigger the flow. The component does not require an API key."]}),"\n",(0,r.jsxs)(t.p,{children:["When a ",(0,r.jsx)(t.strong,{children:"Webhook"})," component is added to the workspace, a new ",(0,r.jsx)(t.strong,{children:"Webhook cURL"})," tab becomes available in the ",(0,r.jsx)(t.strong,{children:"API"})," pane that contains an HTTP POST request for triggering the webhook component. For example:"]}),"\n",(0,r.jsx)(a.Code,{codeConfig:x,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 ",props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:' "http://localhost:7860/api/v1/webhook/**YOUR_FLOW_ID**" ',props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" -H ",props:{style:{color:"#79C0FF"}}},{content:"'Content-Type: application/json'",props:{style:{color:"#A5D6FF"}}},{content:"\\",props:{style:{color:"#79C0FF"}}}]},{tokens:[{content:" -d ",props:{style:{color:"#79C0FF"}}},{content:'\'{"any": "data"}\'',props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,r.jsx)(t.p,{children:"To test the webhook component:"}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["Add a ",(0,r.jsx)(t.strong,{children:"Webhook"})," component to the flow."]}),"\n",(0,r.jsxs)(t.li,{children:["Connect the ",(0,r.jsx)(t.strong,{children:"Webhook"})," component's ",(0,r.jsx)(t.strong,{children:"Data"})," output to the ",(0,r.jsx)(t.strong,{children:"Data"})," input of a ",(0,r.jsx)(t.a,{href:"/components-processing#parser",children:"Parser"})," component."]}),"\n",(0,r.jsxs)(t.li,{children:["Connect the ",(0,r.jsx)(t.strong,{children:"Parser"})," component's ",(0,r.jsx)(t.strong,{children:"Parsed Text"})," output to the ",(0,r.jsx)(t.strong,{children:"Text"})," input of a ",(0,r.jsx)(t.a,{href:"/components-io#chat-output",children:"Chat Output"})," component."]}),"\n",(0,r.jsxs)(t.li,{children:["In the ",(0,r.jsx)(t.strong,{children:"Parser"})," component, under ",(0,r.jsx)(t.strong,{children:"Mode"}),", select ",(0,r.jsx)(t.strong,{children:"Stringify"}),".\nThis mode passes the webhook's data as a string for the ",(0,r.jsx)(t.strong,{children:"Chat Output"})," component to print."]}),"\n",(0,r.jsxs)(t.li,{children:["To send a POST request, copy the code from the ",(0,r.jsx)(t.strong,{children:"Webhook cURL"})," tab in the ",(0,r.jsx)(t.strong,{children:"API"})," pane and paste it into a terminal."]}),"\n",(0,r.jsx)(t.li,{children:"Send the POST request."}),"\n",(0,r.jsxs)(t.li,{children:["Open the ",(0,r.jsx)(t.strong,{children:"Playground"}),".\nYour JSON data is posted to the ",(0,r.jsx)(t.strong,{children:"Chat Output"})," component, which indicates that the webhook component is correctly triggering the flow."]}),"\n"]}),"\n",(0,r.jsxs)(n,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(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:"Description"})]})}),(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:"Payload"}),(0,r.jsx)(t.td,{children:"Receives a payload from external systems through HTTP POST requests."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"curl"}),(0,r.jsx)(t.td,{children:"cURL"}),(0,r.jsx)(t.td,{children:"The cURL command template for making requests to this webhook."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"endpoint"}),(0,r.jsx)(t.td,{children:"Endpoint"}),(0,r.jsx)(t.td,{children:"The endpoint URL where this webhook receives requests."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(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:"Description"})]})}),(0,r.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"output_data"}),(0,r.jsx)(t.td,{children:"Data"}),(0,r.jsxs)(t.td,{children:["Outputs processed data from the webhook input, and returns an empty ",(0,r.jsx)(t.a,{href:"/concepts-objects",children:"Data"})," object if no input is provided. If the input is not valid JSON, the component wraps it in a ",(0,r.jsx)(t.code,{children:"payload"})," object."]})]})})]})]}),"\n",(0,r.jsx)(t.h2,{id:"legacy-components",children:"Legacy components"}),"\n",(0,r.jsx)(t.p,{children:"Legacy components are available for use but are no longer supported."}),"\n",(0,r.jsx)(t.h3,{id:"gmail-loader",children:"Gmail Loader"}),"\n",(0,r.jsx)(t.p,{children:"This component loads emails from Gmail using provided credentials and filters."}),"\n",(0,r.jsxs)(t.p,{children:["For more information about creating a service account JSON, see ",(0,r.jsx)(t.a,{href:"https://developers.google.com/identity/protocols/oauth2/service-account",children:"Service Account JSON"}),"."]}),"\n",(0,r.jsxs)(n,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Input"}),(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:"json_string"}),(0,r.jsx)(t.td,{children:"SecretStrInput"}),(0,r.jsx)(t.td,{children:"A JSON string containing OAuth 2.0 access token information for service account access."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"label_ids"}),(0,r.jsx)(t.td,{children:"MessageTextInput"}),(0,r.jsx)(t.td,{children:"A comma-separated list of label IDs to filter emails."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"max_results"}),(0,r.jsx)(t.td,{children:"MessageTextInput"}),(0,r.jsx)(t.td,{children:"The maximum number of emails to load."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Output"}),(0,r.jsx)(t.th,{children:"Type"}),(0,r.jsx)(t.th,{children:"Description"})]})}),(0,r.jsx)(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:"The loaded email data."})]})})]})]}),"\n",(0,r.jsx)(t.h3,{id:"google-drive-loader",children:"Google Drive Loader"}),"\n",(0,r.jsx)(t.p,{children:"This component loads documents from Google Drive using provided credentials and a single document ID."}),"\n",(0,r.jsxs)(t.p,{children:["For more information about creating a service account JSON, see ",(0,r.jsx)(t.a,{href:"https://developers.google.com/identity/protocols/oauth2/service-account",children:"Service Account JSON"}),"."]}),"\n",(0,r.jsxs)(n,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Input"}),(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:"json_string"}),(0,r.jsx)(t.td,{children:"SecretStrInput"}),(0,r.jsx)(t.td,{children:"A JSON string containing OAuth 2.0 access token information for service account access."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"document_id"}),(0,r.jsx)(t.td,{children:"MessageTextInput"}),(0,r.jsx)(t.td,{children:"A single Google Drive document ID."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Output"}),(0,r.jsx)(t.th,{children:"Type"}),(0,r.jsx)(t.th,{children:"Description"})]})}),(0,r.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"docs"}),(0,r.jsx)(t.td,{children:"Data"}),(0,r.jsx)(t.td,{children:"The loaded document data."})]})})]})]}),"\n",(0,r.jsx)(t.h3,{id:"google-drive-search",children:"Google Drive Search"}),"\n",(0,r.jsx)(t.p,{children:"This component searches Google Drive files using provided credentials and query parameters."}),"\n",(0,r.jsxs)(t.p,{children:["For more information about creating a service account JSON, see ",(0,r.jsx)(t.a,{href:"https://developers.google.com/identity/protocols/oauth2/service-account",children:"Service Account JSON"}),"."]}),"\n",(0,r.jsxs)(n,{children:[(0,r.jsx)("summary",{children:"Parameters"}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Inputs"})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Input"}),(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:"token_string"}),(0,r.jsx)(t.td,{children:"SecretStrInput"}),(0,r.jsx)(t.td,{children:"A JSON string containing OAuth 2.0 access token information for service account access."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"query_item"}),(0,r.jsx)(t.td,{children:"DropdownInput"}),(0,r.jsx)(t.td,{children:"The field to query."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"valid_operator"}),(0,r.jsx)(t.td,{children:"DropdownInput"}),(0,r.jsx)(t.td,{children:"The operator to use in the query."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"search_term"}),(0,r.jsx)(t.td,{children:"MessageTextInput"}),(0,r.jsx)(t.td,{children:"The value to search for in the specified query item."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"query_string"}),(0,r.jsx)(t.td,{children:"MessageTextInput"}),(0,r.jsx)(t.td,{children:"The query string used for searching."})]})]})]}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Outputs"})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Output"}),(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:"doc_urls"}),(0,r.jsx)(t.td,{children:"List[str]"}),(0,r.jsx)(t.td,{children:"The URLs of the found documents."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"doc_ids"}),(0,r.jsx)(t.td,{children:"List[str]"}),(0,r.jsx)(t.td,{children:"The IDs of the found documents."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"doc_titles"}),(0,r.jsx)(t.td,{children:"List[str]"}),(0,r.jsx)(t.td,{children:"The titles of the found documents."})]}),(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:"The document titles and URLs in a structured format."})]})]})]})]})]})}function u(e={}){const{wrapper:t}={...(0,d.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}function m(e,t){throw new Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}},17886:(e,t,s)=>{s.d(t,{A:()=>d});s(96540);var n=s(64058),r=s(74848);function d({name:e,...t}){const s=n[e];return s?(0,r.jsx)(s,{...t}):null}},33972:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/component-api-request-chat-output-6dd0e176265482c2dca9899f0a70047a.png"},55228:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/component-url-11d5306d5c7a52a376fab32344eab7a2.png"},80352:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/url-component-fb712df73581345c0f344013ce6ff2fd.png"}}]);
\ No newline at end of file
diff --git a/assets/js/runtime~main.1999e7c0.js b/assets/js/runtime~main.4bdc02ef.js
similarity index 80%
rename from assets/js/runtime~main.1999e7c0.js
rename to assets/js/runtime~main.4bdc02ef.js
index 062bcf17db..9bc420c7f0 100644
--- a/assets/js/runtime~main.1999e7c0.js
+++ b/assets/js/runtime~main.4bdc02ef.js
@@ -1 +1 @@
-(()=>{"use strict";var e,a,c,d,f,b={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var c=t[e]={id:e,loaded:!1,exports:{}};return b[e].call(c.exports,c,c.exports,r),c.loaded=!0,c.exports}r.m=b,r.c=t,e=[],r.O=(a,c,d,f)=>{if(!c){var b=1/0;for(i=0;i=f)&&Object.keys(r.O).every(e=>r.O[e](c[o]))?c.splice(o--,1):(t=!1,f0&&e[i-1][2]>f;i--)e[i]=e[i-1];e[i]=[c,d,f]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,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 f=Object.create(null);r.r(f);var b={};a=a||[null,c({}),c([]),c(c)];for(var t=2&d&&e;"object"==typeof t&&!~a.indexOf(t);t=c(t))Object.getOwnPropertyNames(t).forEach(a=>b[a]=()=>e[a]);return b.default=()=>e,r.d(f,b),f},r.d=(e,a)=>{for(var c in a)r.o(a,c)&&!r.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:a[c]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((a,c)=>(r.f[c](e,a),a),[])),r.u=e=>"assets/js/"+({11:"d2df9b4e",31:"03e862ce",51:"b7251463",145:"0be1d5fe",187:"74e1dc40",191:"c643a6d5",202:"32c42bbe",230:"bc63ae25",265:"d3ca7a96",266:"eca2a4e0",299:"9b5a408c",321:"6e1a9721",338:"d9527026",368:"07c30ae4",417:"93e16042",444:"14f42f9e",730:"86b18dd0",762:"4af57a32",768:"6d684b63",787:"672a0eba",800:"a4c0ff01",868:"dc7b1ef3",944:"d3600190",957:"c141421f",964:"05d835b4",982:"021496c4",1022:"8a61012d",1035:"24d32e91",1079:"f5818e36",1185:"c2de64b8",1227:"647965d5",1349:"beb998f3",1488:"ac3cc3f5",1500:"1e9025f7",1556:"264ffc80",1563:"3ef76b56",1567:"22dd74f7",1625:"92852ade",1690:"41a97a99",1765:"7b257a20",1845:"2ab0d4f5",1956:"fe6f9601",2073:"7b7db446",2097:"338a6f8e",2100:"9cc9f218",2138:"1a4e3797",2182:"051d841d",2206:"64f4662c",2273:"e756fa26",2288:"faf7ef88",2341:"0123c128",2551:"394022bb",2624:"8ff68e6f",2657:"a3ab51d1",2777:"b3ba68b4",2818:"a9b73094",2841:"83998924",2935:"6923853f",3043:"89e8c924",3099:"8cea976c",3110:"6a2beaac",3225:"99a4401d",3266:"914b1bec",3327:"6aa941bb",3347:"b5257597",3391:"f66238ae",3576:"64045095",3694:"c2b1730c",3740:"f113d167",3795:"c85076de",3832:"c3d82421",3859:"7679ca6e",3917:"c8dad5f1",3964:"829ff4d2",3968:"0e5205b8",4046:"9ac856ad",4133:"5cf11f26",4237:"8abbbbe8",4242:"31ead0b1",4274:"b6bf934a",4526:"8311683c",4574:"bc0ebe55",4615:"6801371f",4645:"fef056e9",4778:"e189eece",4784:"438e4337",4806:"fba42286",4841:"8298c1cb",4867:"d73246f8",4891:"ca67d85f",4919:"6debce21",4930:"d2ad385b",4931:"a9b4f8aa",4954:"a71efd4a",4973:"2d2c4fcb",5107:"10156854",5109:"3542ed72",5138:"309383dc",5179:"41e3c105",5195:"b1ab2a41",5281:"a0511a5b",5284:"64ca91f1",5290:"fa10e583",5304:"7dbff1af",5339:"9447891f",5395:"98058046",5448:"5c480e8b",5457:"856a5d6e",5467:"40d13080",5474:"d175aa8b",5475:"18f3809a",5513:"20d49d07",5514:"02955c09",5562:"20e9af62",5572:"873ebc27",5628:"bd7ab245",5647:"885eb549",5673:"73af8c33",5716:"946d1cee",5718:"5ccf4833",5742:"aba21aa0",5772:"4e7126f8",5799:"364e949f",5824:"214b2cc2",5852:"38718c49",5865:"e1766139",5866:"3b577cbb",5883:"61cfab8e",5894:"f178e9b3",6003:"4d983c8e",6008:"445668ec",6010:"60c70af6",6053:"dfc50084",6079:"472dc73b",6080:"4d15791b",6147:"ab17fe15",6201:"9ab37888",6214:"b1220dbd",6281:"c96ce3ed",6332:"873508e7",6343:"7334cbc9",6350:"188ee668",6419:"96eb0e67",6445:"9fb9a766",6473:"4c5e977b",6511:"320c2db0",6559:"6f13807a",6649:"02e43f39",6682:"5a6d6120",6688:"388c3769",6753:"ff349d2f",6757:"86bd0a2e",6890:"8b85e1d0",6920:"c817e236",6934:"d745f4e6",6949:"b36bb719",7088:"91282a5c",7098:"a7bd4aaa",7108:"688feaef",7118:"4ce9199e",7142:"d0c1f670",7159:"aecfdd3d",7165:"547df4a1",7211:"cacdc615",7338:"c39b795e",7339:"7a774ddf",7359:"738cd2f5",7408:"3ae94ad4",7453:"fdefa9a8",7462:"921b5fc1",7472:"744aaf8b",7507:"651ef245",7713:"3a82b27e",7847:"5362f2c1",7894:"0f44198a",8054:"85112c90",8064:"274fd934",8085:"cc44357e",8102:"019dbd1f",8184:"222029a9",8188:"ecd67556",8196:"75a9e1e0",8208:"216e3ed7",8245:"5e834a3c",8298:"153f2b62",8304:"73d1a090",8356:"c6a5eaec",8374:"261f8123",8401:"17896441",8504:"e6c6a4d2",8598:"44dfcf75",8601:"04ee7e22",8661:"8f774222",8679:"3705a9c0",8927:"ae68aa8b",8929:"172b3cfb",9004:"4f1ba371",9036:"850d3674",9048:"a94703ab",9099:"b1bc5ffe",9126:"169603ea",9141:"19136925",9195:"f450da80",9263:"5f3b2a41",9371:"991799c5",9431:"cd8dccb5",9453:"913561e8",9455:"54175a6c",9476:"57c9a2b8",9479:"4e038a6a",9483:"7823fa72",9509:"49311ca0",9555:"dedd5914",9619:"29b8e27a",9642:"eae80ce0",9647:"5e95c892",9681:"5ff9f4db",9705:"ee3b5967",9716:"01db5f27",9731:"52edee88",9751:"25255263",9752:"72d61395",9789:"537e1953",9857:"09f5326a",9888:"be76515e",9905:"43df3697",9914:"5217df3c"}[e]||e)+"."+{11:"ddffb539",31:"512a7dbc",51:"19586245",145:"e4fde301",187:"b502a1cf",191:"aadedcf6",202:"bb132cdf",230:"cbd60976",265:"1c141ac3",266:"86f91caf",299:"6d646080",321:"ac35363b",338:"844de73d",368:"b2f23bda",416:"3c613765",417:"4baee8ce",444:"ede97042",730:"76480870",762:"bfdf7c57",768:"26f203bb",787:"0a3c8357",800:"d5e09d54",868:"cf5340d0",900:"7cc4aadf",944:"f9d5ae7d",957:"da9e1d2b",964:"33abc783",982:"6f7d4e8f",1022:"5a4439b8",1035:"0c86126e",1079:"190b683e",1185:"78cdce51",1227:"60592d56",1349:"d7ba8c72",1488:"feb8009a",1500:"0c85b4f3",1556:"65dbb0ec",1563:"d7436e55",1567:"ce7eb99e",1625:"14cdddbe",1690:"caae242c",1765:"cf64219b",1845:"3496b231",1956:"2eaf3c8d",2073:"00253b7e",2097:"1e4acafb",2100:"cfbd806e",2138:"f62f93d0",2182:"7d139460",2206:"667a8388",2237:"8bc4ac99",2273:"8b568bd6",2288:"c2b7f1f1",2341:"7399e249",2551:"4934cf0e",2624:"64e46a3d",2657:"cc88b22c",2777:"b39ea441",2818:"a6236419",2841:"31e77c15",2935:"ea7d000a",3043:"8bf21f39",3099:"16984174",3110:"420f6787",3225:"1cba44f1",3266:"64303cfc",3327:"95a387c0",3347:"077bbafe",3391:"22687297",3477:"a7eba177",3576:"a10399fd",3694:"7f775c03",3740:"6119c76b",3795:"22b68947",3832:"674f22af",3859:"3d23bed5",3917:"c084ff6a",3964:"af95d558",3968:"d620ee3e",4046:"72028b46",4058:"7658d33f",4133:"4fe6237e",4237:"1af7698d",4242:"86d6283a",4274:"113ac0d7",4526:"b25dbe75",4574:"8cc6619e",4615:"989976c1",4645:"eb87dccb",4778:"503413a7",4784:"19c2475e",4806:"942c9720",4841:"0dbf7e7c",4867:"bd452b6d",4891:"a6f5d292",4919:"90150382",4930:"735dc4f7",4931:"b047a2e5",4954:"2089d195",4973:"6ab821a6",5107:"52134134",5109:"5fd03d0f",5138:"2974a363",5179:"f4718ef9",5195:"a247a93f",5281:"894274ed",5284:"2d12589d",5290:"6d6d5ccc",5304:"44e87bea",5339:"8bb81d35",5395:"14c93a0a",5448:"6f3b8f90",5457:"2c054663",5467:"52554cb1",5474:"cef6a3d8",5475:"0e75bfd4",5513:"602f4848",5514:"c69cb535",5562:"f6fb643e",5572:"2abf6715",5628:"a412885c",5647:"de125c50",5673:"8aa7ed13",5716:"8e8510e2",5718:"022d2886",5742:"60b1d5b2",5772:"dcc60132",5799:"dec5550f",5824:"1ade0363",5852:"5cfc7420",5865:"eb2ec8a3",5866:"45393cb5",5883:"a6deffa9",5894:"774bfc60",6003:"9fe3dd51",6008:"7c60b9b8",6010:"04a7b1a9",6053:"6f93aa26",6079:"dbae8d0d",6080:"cb777fbd",6147:"b6cb9ae3",6201:"d255f7c7",6214:"46fa6a6f",6281:"bdef7e30",6332:"7d86a66f",6343:"f7a3a9d8",6350:"a7f0a219",6419:"74aab13e",6445:"c07ef100",6473:"b5e32ff9",6511:"1c42717c",6559:"3ecd1117",6649:"e1c11ed5",6682:"bdd6c26a",6688:"d995a879",6753:"8f96b000",6757:"6ddd1dbf",6890:"caa49c65",6920:"27ba1972",6934:"d2ceb12e",6949:"546cd061",7088:"15cbcb58",7098:"fc1f6434",7108:"23d3e7f3",7118:"e3580a56",7142:"9d2974d8",7159:"7b157ae0",7165:"54e9a894",7211:"80040a76",7338:"3f04ba13",7339:"ad3f44bc",7359:"5107c9cc",7397:"385da999",7408:"53504ec0",7453:"c4a0736a",7462:"809898cb",7472:"cc943b29",7507:"61a0217a",7713:"9a259485",7847:"93678ac2",7894:"9c6943d4",8054:"73b4f2dd",8064:"5e674ccc",8085:"f1b714c7",8102:"7430d61a",8158:"20de8b80",8184:"2b8756bf",8188:"89270f8a",8196:"35fc12e6",8208:"58fc3dea",8245:"3f135851",8298:"38915481",8304:"85acf80a",8356:"3a9577e7",8374:"24ac5a03",8401:"c1ed24c3",8504:"74acbc05",8598:"8db01706",8601:"c0454c32",8661:"f6c8fc85",8679:"0435f16b",8913:"47209f3b",8927:"f69a919e",8929:"b2960eff",9004:"dd503df6",9036:"a1ce8500",9048:"bdc69ee3",9099:"447347d4",9126:"7b33fab3",9141:"e3c47d68",9195:"66dc5f7b",9263:"fbc71d6e",9371:"57020972",9431:"52a520fc",9453:"236b431f",9455:"53fb31d3",9476:"b6b16752",9479:"42531913",9483:"7b8cea7a",9495:"49162ef8",9509:"455a3865",9555:"3e213e40",9619:"d8a80867",9642:"3db78773",9647:"5cb928a1",9681:"49fdb41c",9705:"9211ef49",9716:"923492f6",9731:"7627a688",9751:"57ea365f",9752:"54dc42e9",9789:"b26e7e84",9857:"2b246be5",9888:"92cb77be",9905:"07e10722",9914:"e775b627"}[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={},f="langflow-docs:",r.l=(e,a,c,b)=>{if(d[e])d[e].push(a);else{var t,o;if(void 0!==c)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var f=d[e];if(delete d[e],t.parentNode&&t.parentNode.removeChild(t),f&&f.forEach(e=>e(c)),a)return a(c)},s=setTimeout(u.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=u.bind(null,t.onerror),t.onload=u.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r.p="/",r.gca=function(e){return e={10156854:"5107",17896441:"8401",19136925:"9141",25255263:"9751",64045095:"3576",83998924:"2841",98058046:"5395",d2df9b4e:"11","03e862ce":"31",b7251463:"51","0be1d5fe":"145","74e1dc40":"187",c643a6d5:"191","32c42bbe":"202",bc63ae25:"230",d3ca7a96:"265",eca2a4e0:"266","9b5a408c":"299","6e1a9721":"321",d9527026:"338","07c30ae4":"368","93e16042":"417","14f42f9e":"444","86b18dd0":"730","4af57a32":"762","6d684b63":"768","672a0eba":"787",a4c0ff01:"800",dc7b1ef3:"868",d3600190:"944",c141421f:"957","05d835b4":"964","021496c4":"982","8a61012d":"1022","24d32e91":"1035",f5818e36:"1079",c2de64b8:"1185","647965d5":"1227",beb998f3:"1349",ac3cc3f5:"1488","1e9025f7":"1500","264ffc80":"1556","3ef76b56":"1563","22dd74f7":"1567","92852ade":"1625","41a97a99":"1690","7b257a20":"1765","2ab0d4f5":"1845",fe6f9601:"1956","7b7db446":"2073","338a6f8e":"2097","9cc9f218":"2100","1a4e3797":"2138","051d841d":"2182","64f4662c":"2206",e756fa26:"2273",faf7ef88:"2288","0123c128":"2341","394022bb":"2551","8ff68e6f":"2624",a3ab51d1:"2657",b3ba68b4:"2777",a9b73094:"2818","6923853f":"2935","89e8c924":"3043","8cea976c":"3099","6a2beaac":"3110","99a4401d":"3225","914b1bec":"3266","6aa941bb":"3327",b5257597:"3347",f66238ae:"3391",c2b1730c:"3694",f113d167:"3740",c85076de:"3795",c3d82421:"3832","7679ca6e":"3859",c8dad5f1:"3917","829ff4d2":"3964","0e5205b8":"3968","9ac856ad":"4046","5cf11f26":"4133","8abbbbe8":"4237","31ead0b1":"4242",b6bf934a:"4274","8311683c":"4526",bc0ebe55:"4574","6801371f":"4615",fef056e9:"4645",e189eece:"4778","438e4337":"4784",fba42286:"4806","8298c1cb":"4841",d73246f8:"4867",ca67d85f:"4891","6debce21":"4919",d2ad385b:"4930",a9b4f8aa:"4931",a71efd4a:"4954","2d2c4fcb":"4973","3542ed72":"5109","309383dc":"5138","41e3c105":"5179",b1ab2a41:"5195",a0511a5b:"5281","64ca91f1":"5284",fa10e583:"5290","7dbff1af":"5304","9447891f":"5339","5c480e8b":"5448","856a5d6e":"5457","40d13080":"5467",d175aa8b:"5474","18f3809a":"5475","20d49d07":"5513","02955c09":"5514","20e9af62":"5562","873ebc27":"5572",bd7ab245:"5628","885eb549":"5647","73af8c33":"5673","946d1cee":"5716","5ccf4833":"5718",aba21aa0:"5742","4e7126f8":"5772","364e949f":"5799","214b2cc2":"5824","38718c49":"5852",e1766139:"5865","3b577cbb":"5866","61cfab8e":"5883",f178e9b3:"5894","4d983c8e":"6003","445668ec":"6008","60c70af6":"6010",dfc50084:"6053","472dc73b":"6079","4d15791b":"6080",ab17fe15:"6147","9ab37888":"6201",b1220dbd:"6214",c96ce3ed:"6281","873508e7":"6332","7334cbc9":"6343","188ee668":"6350","96eb0e67":"6419","9fb9a766":"6445","4c5e977b":"6473","320c2db0":"6511","6f13807a":"6559","02e43f39":"6649","5a6d6120":"6682","388c3769":"6688",ff349d2f:"6753","86bd0a2e":"6757","8b85e1d0":"6890",c817e236:"6920",d745f4e6:"6934",b36bb719:"6949","91282a5c":"7088",a7bd4aaa:"7098","688feaef":"7108","4ce9199e":"7118",d0c1f670:"7142",aecfdd3d:"7159","547df4a1":"7165",cacdc615:"7211",c39b795e:"7338","7a774ddf":"7339","738cd2f5":"7359","3ae94ad4":"7408",fdefa9a8:"7453","921b5fc1":"7462","744aaf8b":"7472","651ef245":"7507","3a82b27e":"7713","5362f2c1":"7847","0f44198a":"7894","85112c90":"8054","274fd934":"8064",cc44357e:"8085","019dbd1f":"8102","222029a9":"8184",ecd67556:"8188","75a9e1e0":"8196","216e3ed7":"8208","5e834a3c":"8245","153f2b62":"8298","73d1a090":"8304",c6a5eaec:"8356","261f8123":"8374",e6c6a4d2:"8504","44dfcf75":"8598","04ee7e22":"8601","8f774222":"8661","3705a9c0":"8679",ae68aa8b:"8927","172b3cfb":"8929","4f1ba371":"9004","850d3674":"9036",a94703ab:"9048",b1bc5ffe:"9099","169603ea":"9126",f450da80:"9195","5f3b2a41":"9263","991799c5":"9371",cd8dccb5:"9431","913561e8":"9453","54175a6c":"9455","57c9a2b8":"9476","4e038a6a":"9479","7823fa72":"9483","49311ca0":"9509",dedd5914:"9555","29b8e27a":"9619",eae80ce0:"9642","5e95c892":"9647","5ff9f4db":"9681",ee3b5967:"9705","01db5f27":"9716","52edee88":"9731","72d61395":"9752","537e1953":"9789","09f5326a":"9857",be76515e:"9888","43df3697":"9905","5217df3c":"9914"}[e]||e,r.p+r.u(e)},(()=>{var e={5354:0,1869:0};r.f.j=(a,c)=>{var d=r.o(e,a)?e[a]:void 0;if(0!==d)if(d)c.push(d[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var f=new Promise((c,f)=>d=e[a]=[c,f]);c.push(d[2]=f);var b=r.p+r.u(a),t=new Error;r.l(b,c=>{if(r.o(e,a)&&(0!==(d=e[a])&&(e[a]=void 0),d)){var f=c&&("load"===c.type?"missing":c.type),b=c&&c.target&&c.target.src;t.message="Loading chunk "+a+" failed.\n("+f+": "+b+")",t.name="ChunkLoadError",t.type=f,t.request=b,d[1](t)}},"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,c)=>{var d,f,b=c[0],t=c[1],o=c[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(c);n{"use strict";var e,a,c,d,b,f={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var c=t[e]={id:e,loaded:!1,exports:{}};return f[e].call(c.exports,c,c.exports,r),c.loaded=!0,c.exports}r.m=f,r.c=t,e=[],r.O=(a,c,d,b)=>{if(!c){var f=1/0;for(i=0;i=b)&&Object.keys(r.O).every(e=>r.O[e](c[o]))?c.splice(o--,1):(t=!1,b0&&e[i-1][2]>b;i--)e[i]=e[i-1];e[i]=[c,d,b]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,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 b=Object.create(null);r.r(b);var f={};a=a||[null,c({}),c([]),c(c)];for(var t=2&d&&e;"object"==typeof t&&!~a.indexOf(t);t=c(t))Object.getOwnPropertyNames(t).forEach(a=>f[a]=()=>e[a]);return f.default=()=>e,r.d(b,f),b},r.d=(e,a)=>{for(var c in a)r.o(a,c)&&!r.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:a[c]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((a,c)=>(r.f[c](e,a),a),[])),r.u=e=>"assets/js/"+({11:"d2df9b4e",31:"03e862ce",51:"b7251463",145:"0be1d5fe",187:"74e1dc40",191:"c643a6d5",202:"32c42bbe",230:"bc63ae25",265:"d3ca7a96",266:"eca2a4e0",299:"9b5a408c",321:"6e1a9721",338:"d9527026",368:"07c30ae4",417:"93e16042",444:"14f42f9e",730:"86b18dd0",762:"4af57a32",768:"6d684b63",787:"672a0eba",800:"a4c0ff01",868:"dc7b1ef3",944:"d3600190",957:"c141421f",964:"05d835b4",982:"021496c4",1022:"8a61012d",1035:"24d32e91",1079:"f5818e36",1185:"c2de64b8",1227:"647965d5",1349:"beb998f3",1488:"ac3cc3f5",1500:"1e9025f7",1556:"264ffc80",1563:"3ef76b56",1567:"22dd74f7",1625:"92852ade",1690:"41a97a99",1765:"7b257a20",1845:"2ab0d4f5",1956:"fe6f9601",2073:"7b7db446",2097:"338a6f8e",2100:"9cc9f218",2138:"1a4e3797",2182:"051d841d",2206:"64f4662c",2273:"e756fa26",2288:"faf7ef88",2341:"0123c128",2551:"394022bb",2624:"8ff68e6f",2657:"a3ab51d1",2777:"b3ba68b4",2818:"a9b73094",2841:"83998924",2935:"6923853f",3043:"89e8c924",3099:"8cea976c",3110:"6a2beaac",3225:"99a4401d",3266:"914b1bec",3327:"6aa941bb",3347:"b5257597",3391:"f66238ae",3576:"64045095",3694:"c2b1730c",3740:"f113d167",3795:"c85076de",3832:"c3d82421",3859:"7679ca6e",3917:"c8dad5f1",3964:"829ff4d2",3968:"0e5205b8",4046:"9ac856ad",4133:"5cf11f26",4237:"8abbbbe8",4242:"31ead0b1",4274:"b6bf934a",4526:"8311683c",4574:"bc0ebe55",4615:"6801371f",4645:"fef056e9",4778:"e189eece",4784:"438e4337",4806:"fba42286",4841:"8298c1cb",4867:"d73246f8",4891:"ca67d85f",4919:"6debce21",4930:"d2ad385b",4931:"a9b4f8aa",4954:"a71efd4a",4973:"2d2c4fcb",5107:"10156854",5109:"3542ed72",5138:"309383dc",5179:"41e3c105",5195:"b1ab2a41",5281:"a0511a5b",5284:"64ca91f1",5290:"fa10e583",5304:"7dbff1af",5339:"9447891f",5395:"98058046",5448:"5c480e8b",5457:"856a5d6e",5467:"40d13080",5474:"d175aa8b",5475:"18f3809a",5513:"20d49d07",5514:"02955c09",5562:"20e9af62",5572:"873ebc27",5628:"bd7ab245",5647:"885eb549",5673:"73af8c33",5716:"946d1cee",5718:"5ccf4833",5742:"aba21aa0",5772:"4e7126f8",5799:"364e949f",5824:"214b2cc2",5852:"38718c49",5865:"e1766139",5866:"3b577cbb",5883:"61cfab8e",5894:"f178e9b3",6003:"4d983c8e",6008:"445668ec",6010:"60c70af6",6053:"dfc50084",6079:"472dc73b",6080:"4d15791b",6147:"ab17fe15",6201:"9ab37888",6214:"b1220dbd",6281:"c96ce3ed",6332:"873508e7",6343:"7334cbc9",6350:"188ee668",6419:"96eb0e67",6445:"9fb9a766",6473:"4c5e977b",6511:"320c2db0",6559:"6f13807a",6649:"02e43f39",6682:"5a6d6120",6688:"388c3769",6753:"ff349d2f",6757:"86bd0a2e",6890:"8b85e1d0",6920:"c817e236",6934:"d745f4e6",6949:"b36bb719",7088:"91282a5c",7098:"a7bd4aaa",7108:"688feaef",7118:"4ce9199e",7142:"d0c1f670",7159:"aecfdd3d",7165:"547df4a1",7211:"cacdc615",7338:"c39b795e",7339:"7a774ddf",7359:"738cd2f5",7408:"3ae94ad4",7453:"fdefa9a8",7462:"921b5fc1",7472:"744aaf8b",7507:"651ef245",7713:"3a82b27e",7847:"5362f2c1",7894:"0f44198a",8054:"85112c90",8064:"274fd934",8085:"cc44357e",8102:"019dbd1f",8184:"222029a9",8188:"ecd67556",8196:"75a9e1e0",8208:"216e3ed7",8245:"5e834a3c",8298:"153f2b62",8304:"73d1a090",8356:"c6a5eaec",8374:"261f8123",8401:"17896441",8504:"e6c6a4d2",8598:"44dfcf75",8601:"04ee7e22",8661:"8f774222",8679:"3705a9c0",8927:"ae68aa8b",8929:"172b3cfb",9004:"4f1ba371",9036:"850d3674",9048:"a94703ab",9099:"b1bc5ffe",9126:"169603ea",9141:"19136925",9195:"f450da80",9263:"5f3b2a41",9371:"991799c5",9431:"cd8dccb5",9453:"913561e8",9455:"54175a6c",9476:"57c9a2b8",9479:"4e038a6a",9483:"7823fa72",9509:"49311ca0",9555:"dedd5914",9619:"29b8e27a",9642:"eae80ce0",9647:"5e95c892",9681:"5ff9f4db",9705:"ee3b5967",9716:"01db5f27",9731:"52edee88",9751:"25255263",9752:"72d61395",9789:"537e1953",9857:"09f5326a",9888:"be76515e",9905:"43df3697",9914:"5217df3c"}[e]||e)+"."+{11:"ddffb539",31:"512a7dbc",51:"19586245",145:"6cdeea52",187:"b502a1cf",191:"aadedcf6",202:"bb132cdf",230:"cbd60976",265:"1c141ac3",266:"86f91caf",299:"6d646080",321:"114d93d5",338:"844de73d",368:"b2f23bda",416:"3c613765",417:"4baee8ce",444:"ede97042",730:"76480870",762:"bfdf7c57",768:"26f203bb",787:"0a3c8357",800:"d5e09d54",868:"cf5340d0",900:"7cc4aadf",944:"f9d5ae7d",957:"da9e1d2b",964:"33abc783",982:"6f7d4e8f",1022:"5a4439b8",1035:"0c86126e",1079:"190b683e",1185:"78cdce51",1227:"60592d56",1349:"d7ba8c72",1488:"feb8009a",1500:"0c85b4f3",1556:"65dbb0ec",1563:"d7436e55",1567:"ce7eb99e",1625:"14cdddbe",1690:"caae242c",1765:"cf64219b",1845:"34f9cf71",1956:"2eaf3c8d",2073:"00253b7e",2097:"1e4acafb",2100:"cfbd806e",2138:"f62f93d0",2182:"e36ae030",2206:"667a8388",2237:"8bc4ac99",2273:"8b568bd6",2288:"c2b7f1f1",2341:"7399e249",2551:"4934cf0e",2624:"7dc3f376",2657:"cc88b22c",2777:"b39ea441",2818:"a6236419",2841:"31e77c15",2935:"ea7d000a",3043:"8bf21f39",3099:"16984174",3110:"420f6787",3225:"1cba44f1",3266:"c1c0de92",3327:"95a387c0",3347:"077bbafe",3391:"1d66c778",3477:"a7eba177",3576:"a10399fd",3694:"7f775c03",3740:"6119c76b",3795:"22b68947",3832:"674f22af",3859:"3d23bed5",3917:"c084ff6a",3964:"af95d558",3968:"87751c5d",4046:"72028b46",4058:"7658d33f",4133:"4fe6237e",4237:"1af7698d",4242:"86d6283a",4274:"113ac0d7",4526:"015842e5",4574:"8cc6619e",4615:"989976c1",4645:"eb87dccb",4778:"503413a7",4784:"19c2475e",4806:"ec9f467f",4841:"0dbf7e7c",4867:"bd452b6d",4891:"a6f5d292",4919:"baa31064",4930:"735dc4f7",4931:"b047a2e5",4954:"2089d195",4973:"6ab821a6",5107:"52134134",5109:"5fd03d0f",5138:"2974a363",5179:"f4718ef9",5195:"a247a93f",5281:"894274ed",5284:"2d12589d",5290:"6d6d5ccc",5304:"44e87bea",5339:"8bb81d35",5395:"14c93a0a",5448:"6f3b8f90",5457:"2c054663",5467:"52554cb1",5474:"cef6a3d8",5475:"0e75bfd4",5513:"602f4848",5514:"c69cb535",5562:"f6fb643e",5572:"2abf6715",5628:"a412885c",5647:"347ccb7c",5673:"8aa7ed13",5716:"8e8510e2",5718:"022d2886",5742:"60b1d5b2",5772:"dcc60132",5799:"dec5550f",5824:"1ade0363",5852:"5cfc7420",5865:"eb2ec8a3",5866:"45393cb5",5883:"a6deffa9",5894:"774bfc60",6003:"9fe3dd51",6008:"7c60b9b8",6010:"04a7b1a9",6053:"6f93aa26",6079:"dbae8d0d",6080:"cb777fbd",6147:"b6cb9ae3",6201:"d255f7c7",6214:"46fa6a6f",6281:"bdef7e30",6332:"7d86a66f",6343:"f7a3a9d8",6350:"a7f0a219",6419:"74aab13e",6445:"c07ef100",6473:"b5e32ff9",6511:"1c42717c",6559:"3ecd1117",6649:"e1c11ed5",6682:"bdd6c26a",6688:"d995a879",6753:"8f96b000",6757:"6ddd1dbf",6890:"caa49c65",6920:"27ba1972",6934:"d2ceb12e",6949:"546cd061",7088:"15cbcb58",7098:"fc1f6434",7108:"23d3e7f3",7118:"e3580a56",7142:"9d2974d8",7159:"7b157ae0",7165:"54e9a894",7211:"80040a76",7338:"90d69f0f",7339:"ad3f44bc",7359:"5107c9cc",7397:"385da999",7408:"39d01eb4",7453:"774f69c8",7462:"78f1d79f",7472:"cc943b29",7507:"61a0217a",7713:"9a259485",7847:"93678ac2",7894:"9c6943d4",8054:"73b4f2dd",8064:"5e674ccc",8085:"f1b714c7",8102:"7430d61a",8158:"20de8b80",8184:"2b8756bf",8188:"89270f8a",8196:"35fc12e6",8208:"58fc3dea",8245:"3f135851",8298:"38915481",8304:"85acf80a",8356:"3a9577e7",8374:"24ac5a03",8401:"c1ed24c3",8504:"ec93064c",8598:"8db01706",8601:"c0454c32",8661:"f6c8fc85",8679:"0435f16b",8913:"47209f3b",8927:"f69a919e",8929:"b2960eff",9004:"f48824d5",9036:"a1ce8500",9048:"bdc69ee3",9099:"447347d4",9126:"7b33fab3",9141:"e3c47d68",9195:"66dc5f7b",9263:"fbc71d6e",9371:"57020972",9431:"52a520fc",9453:"236b431f",9455:"53fb31d3",9476:"b6b16752",9479:"42531913",9483:"7b8cea7a",9495:"49162ef8",9509:"455a3865",9555:"3e213e40",9619:"d8a80867",9642:"3db78773",9647:"5cb928a1",9681:"49fdb41c",9705:"9211ef49",9716:"923492f6",9731:"7627a688",9751:"57ea365f",9752:"54dc42e9",9789:"b26e7e84",9857:"2b246be5",9888:"92cb77be",9905:"07e10722",9914:"e775b627"}[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={},b="langflow-docs:",r.l=(e,a,c,f)=>{if(d[e])d[e].push(a);else{var t,o;if(void 0!==c)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var b=d[e];if(delete d[e],t.parentNode&&t.parentNode.removeChild(t),b&&b.forEach(e=>e(c)),a)return a(c)},s=setTimeout(u.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=u.bind(null,t.onerror),t.onload=u.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r.p="/",r.gca=function(e){return e={10156854:"5107",17896441:"8401",19136925:"9141",25255263:"9751",64045095:"3576",83998924:"2841",98058046:"5395",d2df9b4e:"11","03e862ce":"31",b7251463:"51","0be1d5fe":"145","74e1dc40":"187",c643a6d5:"191","32c42bbe":"202",bc63ae25:"230",d3ca7a96:"265",eca2a4e0:"266","9b5a408c":"299","6e1a9721":"321",d9527026:"338","07c30ae4":"368","93e16042":"417","14f42f9e":"444","86b18dd0":"730","4af57a32":"762","6d684b63":"768","672a0eba":"787",a4c0ff01:"800",dc7b1ef3:"868",d3600190:"944",c141421f:"957","05d835b4":"964","021496c4":"982","8a61012d":"1022","24d32e91":"1035",f5818e36:"1079",c2de64b8:"1185","647965d5":"1227",beb998f3:"1349",ac3cc3f5:"1488","1e9025f7":"1500","264ffc80":"1556","3ef76b56":"1563","22dd74f7":"1567","92852ade":"1625","41a97a99":"1690","7b257a20":"1765","2ab0d4f5":"1845",fe6f9601:"1956","7b7db446":"2073","338a6f8e":"2097","9cc9f218":"2100","1a4e3797":"2138","051d841d":"2182","64f4662c":"2206",e756fa26:"2273",faf7ef88:"2288","0123c128":"2341","394022bb":"2551","8ff68e6f":"2624",a3ab51d1:"2657",b3ba68b4:"2777",a9b73094:"2818","6923853f":"2935","89e8c924":"3043","8cea976c":"3099","6a2beaac":"3110","99a4401d":"3225","914b1bec":"3266","6aa941bb":"3327",b5257597:"3347",f66238ae:"3391",c2b1730c:"3694",f113d167:"3740",c85076de:"3795",c3d82421:"3832","7679ca6e":"3859",c8dad5f1:"3917","829ff4d2":"3964","0e5205b8":"3968","9ac856ad":"4046","5cf11f26":"4133","8abbbbe8":"4237","31ead0b1":"4242",b6bf934a:"4274","8311683c":"4526",bc0ebe55:"4574","6801371f":"4615",fef056e9:"4645",e189eece:"4778","438e4337":"4784",fba42286:"4806","8298c1cb":"4841",d73246f8:"4867",ca67d85f:"4891","6debce21":"4919",d2ad385b:"4930",a9b4f8aa:"4931",a71efd4a:"4954","2d2c4fcb":"4973","3542ed72":"5109","309383dc":"5138","41e3c105":"5179",b1ab2a41:"5195",a0511a5b:"5281","64ca91f1":"5284",fa10e583:"5290","7dbff1af":"5304","9447891f":"5339","5c480e8b":"5448","856a5d6e":"5457","40d13080":"5467",d175aa8b:"5474","18f3809a":"5475","20d49d07":"5513","02955c09":"5514","20e9af62":"5562","873ebc27":"5572",bd7ab245:"5628","885eb549":"5647","73af8c33":"5673","946d1cee":"5716","5ccf4833":"5718",aba21aa0:"5742","4e7126f8":"5772","364e949f":"5799","214b2cc2":"5824","38718c49":"5852",e1766139:"5865","3b577cbb":"5866","61cfab8e":"5883",f178e9b3:"5894","4d983c8e":"6003","445668ec":"6008","60c70af6":"6010",dfc50084:"6053","472dc73b":"6079","4d15791b":"6080",ab17fe15:"6147","9ab37888":"6201",b1220dbd:"6214",c96ce3ed:"6281","873508e7":"6332","7334cbc9":"6343","188ee668":"6350","96eb0e67":"6419","9fb9a766":"6445","4c5e977b":"6473","320c2db0":"6511","6f13807a":"6559","02e43f39":"6649","5a6d6120":"6682","388c3769":"6688",ff349d2f:"6753","86bd0a2e":"6757","8b85e1d0":"6890",c817e236:"6920",d745f4e6:"6934",b36bb719:"6949","91282a5c":"7088",a7bd4aaa:"7098","688feaef":"7108","4ce9199e":"7118",d0c1f670:"7142",aecfdd3d:"7159","547df4a1":"7165",cacdc615:"7211",c39b795e:"7338","7a774ddf":"7339","738cd2f5":"7359","3ae94ad4":"7408",fdefa9a8:"7453","921b5fc1":"7462","744aaf8b":"7472","651ef245":"7507","3a82b27e":"7713","5362f2c1":"7847","0f44198a":"7894","85112c90":"8054","274fd934":"8064",cc44357e:"8085","019dbd1f":"8102","222029a9":"8184",ecd67556:"8188","75a9e1e0":"8196","216e3ed7":"8208","5e834a3c":"8245","153f2b62":"8298","73d1a090":"8304",c6a5eaec:"8356","261f8123":"8374",e6c6a4d2:"8504","44dfcf75":"8598","04ee7e22":"8601","8f774222":"8661","3705a9c0":"8679",ae68aa8b:"8927","172b3cfb":"8929","4f1ba371":"9004","850d3674":"9036",a94703ab:"9048",b1bc5ffe:"9099","169603ea":"9126",f450da80:"9195","5f3b2a41":"9263","991799c5":"9371",cd8dccb5:"9431","913561e8":"9453","54175a6c":"9455","57c9a2b8":"9476","4e038a6a":"9479","7823fa72":"9483","49311ca0":"9509",dedd5914:"9555","29b8e27a":"9619",eae80ce0:"9642","5e95c892":"9647","5ff9f4db":"9681",ee3b5967:"9705","01db5f27":"9716","52edee88":"9731","72d61395":"9752","537e1953":"9789","09f5326a":"9857",be76515e:"9888","43df3697":"9905","5217df3c":"9914"}[e]||e,r.p+r.u(e)},(()=>{var e={5354:0,1869:0};r.f.j=(a,c)=>{var d=r.o(e,a)?e[a]:void 0;if(0!==d)if(d)c.push(d[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var b=new Promise((c,b)=>d=e[a]=[c,b]);c.push(d[2]=b);var f=r.p+r.u(a),t=new Error;r.l(f,c=>{if(r.o(e,a)&&(0!==(d=e[a])&&(e[a]=void 0),d)){var b=c&&("load"===c.type?"missing":c.type),f=c&&c.target&&c.target.src;t.message="Loading chunk "+a+" failed.\n("+b+": "+f+")",t.name="ChunkLoadError",t.type=b,t.request=f,d[1](t)}},"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,c)=>{var d,b,f=c[0],t=c[1],o=c[2],n=0;if(f.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(c);n
-
+
@@ -49,41 +49,41 @@
Click to test the command and retrieve the list of tools provided by the MCP server.
-
-
-
In the Tool field, select a tool that you want this component to use, or leave the field blank to allow access to all tools provided by the MCP server.
+
Click Refresh to test the command and retrieve the list of tools provided by the MCP server.
If you select a specific tool, you might need to configure additional tool-specific fields. For information about tool-specific fields, see your MCP server's documentation.
At this point, the MCP connection component is serving a tool, but nothing is using the tool. The next steps explain how to make the tool available to an Agent component so that the agent can use the tool in its responses.
diff --git a/mcp-component-astra.html b/mcp-component-astra.html
index 993e430aba..ff738919e8 100644
--- a/mcp-component-astra.html
+++ b/mcp-component-astra.html
@@ -21,7 +21,7 @@
-
+
diff --git a/mcp-server.html b/mcp-server.html
index ab4900c119..8ef8aa8032 100644
--- a/mcp-server.html
+++ b/mcp-server.html
@@ -21,7 +21,7 @@
-
+
diff --git a/memory-chatbot.html b/memory-chatbot.html
index a55a5517b6..535cc020d3 100644
--- a/memory-chatbot.html
+++ b/memory-chatbot.html
@@ -21,7 +21,7 @@
-
+
@@ -67,7 +67,7 @@ The Message history component is connected to this port to stor
_10
Hi, my name is Luca.
_10
Please tell me about PostgreSQL.
_10
What is my name?
_10
What is the second subject I asked you about?
The chatbot remembers your name and previous questions.
-
To view the Message Logs pane, click , and then click Message Logs.
+
To view the Message Logs pane, click Options, and then click Message Logs.
The Message Logs pane displays all previous messages, with each conversation sorted by session_id.
The vector store RAG flow is built of two separate flows for ingestion and query.
-
The Load Data Flow (bottom of the screen) creates a searchable index to be queried for contextual similarity.
+
The Load Data Flow (bottom of the screen) creates a searchable index to be queried for contextual similarity.
This flow populates the vector store with data from a local file.
It ingests data from a local file, splits it into chunks, indexes it in Astra DB, and computes embeddings for the chunks using the OpenAI embeddings model.
-
The Retriever Flow (top of the screen) embeds the user's queries into vectors, which are compared to the vector store data from the Load Data Flow for contextual similarity.
+
The Retriever Flow (top of the screen) embeds the user's queries into vectors, which are compared to the vector store data from the Load Data Flow for contextual similarity.
Chat Input receives user input from the Playground.
OpenAI Embeddings converts the user query into vector form.
@@ -77,10 +77,10 @@ It ingests data from a local file, splits it into chunks, indexes it in Astra DB
Configure the OpenAI model component.
-
To create a global variable for the OpenAI component, in the OpenAI API Key field, click the Globe button, and then click Add New Variable.
-
In the Variable Name field, enter openai_api_key.
-
In the Value field, paste your OpenAI API Key (sk-...).
-
Click Save Variable.
+
To create a global variable for the OpenAI component, in the OpenAI API Key field, click the Globe button, and then click Add New Variable.
+
In the Variable Name field, enter openai_api_key.
+
In the Value field, paste your OpenAI API Key (sk-...).
+
Click Save Variable.
@@ -117,7 +117,7 @@ Complete the Name, Cloud provider, and If you used Langflow's Global Variables feature, the RAG application flow components are already configured with the necessary credentials.