Files
langflow/components-logic.html
github-merge-queue[bot] d60d0d4ec2 deploy: f1e45c6e9c
2025-11-24 22:32:29 +00:00

230 lines
54 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-Components/components-logic" data-has-hydrated="false">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.8.1">
<title data-rh="true">Logic | Langflow Documentation</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://docs.langflow.org/components-logic"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Logic | Langflow Documentation"><meta data-rh="true" name="description" content="Logic components provide functionalities for routing, conditional processing, and flow management."><meta data-rh="true" property="og:description" content="Logic components provide functionalities for routing, conditional processing, and flow management."><link data-rh="true" rel="icon" href="/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://docs.langflow.org/components-logic"><link data-rh="true" rel="alternate" href="https://docs.langflow.org/components-logic" hreflang="en"><link data-rh="true" rel="alternate" href="https://docs.langflow.org/components-logic" hreflang="x-default"><link data-rh="true" rel="preconnect" href="https://UZK6BDPCVY-dsn.algolia.net" crossorigin="anonymous"><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Logic","item":"https://docs.langflow.org/components-logic"}]}</script><link rel="preconnect" href="https://www.google-analytics.com">
<link rel="preconnect" href="https://www.googletagmanager.com">
<script async src="https://www.googletagmanager.com/gtag/js?id=G-SLQFLQ3KPT"></script>
<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-SLQFLQ3KPT",{})</script>
<link rel="search" type="application/opensearchdescription+xml" title="Langflow Documentation" href="/opensearch.xml">
<script>window._ibmAnalytics={settings:{name:"DataStax",tealiumProfileName:"ibm-subsidiary"},trustarc:{privacyPolicyLink:"https://ibm.com/privacy"},"digitalData.page.services.google.enabled":!0},window.digitalData={page:{pageInfo:{ibm:{siteId:"IBM_"+_ibmAnalytics.settings.name},segment:{enabled:!0,env:"prod",key:"B04fNhD06DqDPuaRfQl5lZ2iQICdxxuh",coremetrics:!1,carbonComponentEvents:!1}},category:{primaryCategory:"PC230"}},commonProperties:{productTitle:"IBM Elite Support for Langflow",productCode:"5900BUB",productCodeType:"WWPC",UT30:"30AS5",instanceId:"docs-site",subscriptionId:"public-access",productPlanName:"Public",productPlanType:"freemium",userId:"IBMid-ANONYMOUS"}}</script>
<script src="//1.www.s81c.com/common/stats/ibm-common.js" async="true"></script>
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Sora:wght@550;600&amp;display=swap">
<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("consent","default",{ad_storage:"denied",ad_user_data:"denied",ad_personalization:"denied",analytics_storage:"denied"})</script>
<script>!function(){function e(){if(void 0!==window.truste&&window.truste.cma){var e=window.truste.cma.callApi("getConsent",window.location.href)||{},n=1===e[2],t=1===e[3];gtag("consent","update",{ad_storage:n?"granted":"denied",ad_user_data:n?"granted":"denied",ad_personalization:n?"granted":"denied",analytics_storage:t?"granted":"denied"})}}window.addEventListener&&(window.addEventListener("cm_data_subject_consent_changed",e),window.addEventListener("cm_consent_preferences_set",e)),"complete"===document.readyState?e():window.addEventListener("load",e)}()</script><link rel="stylesheet" href="/assets/css/styles.5b49702d.css">
<script src="/assets/js/runtime~main.242bb6bd.js" defer="defer"></script>
<script src="/assets/js/main.32dcbb69.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
</defs></svg>
<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||(window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light")),document.documentElement.setAttribute("data-theme-choice",t||"system")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="theme-layout-navbar navbar navbar--fixed-top navbarHideable_m1mJ"><div class="navbar__inner"><div class="theme-layout-navbar-left navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/lf-docs-light.svg" alt="Langflow" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src="/img/lf-docs-dark.svg" alt="Langflow" class="themedComponent_mlkZ themedComponent--dark_xIcU"></div></a></div><div class="theme-layout-navbar-right navbar__items navbar__items--right"><a href="https://github.com/langflow-ai/langflow" target="_blank" class="navbar__item navbar__link header-github-link" data-event="UI Interaction" data-action="clicked" data-channel="docs" data-element-id="social-github" data-namespace="header" data-platform-title="Langflow"></a><a href="https://twitter.com/langflow_ai" target="_blank" class="navbar__item navbar__link header-twitter-link" data-event="UI Interaction" data-action="clicked" data-channel="docs" data-element-id="social-twitter" data-namespace="header" data-platform-title="Langflow"></a><a href="https://discord.gg/EqksyE2EX9" target="_blank" class="navbar__item navbar__link header-discord-link" data-event="UI Interaction" data-action="clicked" data-channel="docs" data-element-id="social-discord" data-namespace="header" data-platform-title="Langflow"></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="system mode" aria-label="Switch between dark and light mode (currently system mode)"><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_g3eP lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_g3eP darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_g3eP systemToggleIcon_QzmC"><path fill="currentColor" d="m12 21c4.971 0 9-4.029 9-9s-4.029-9-9-9-9 4.029-9 9 4.029 9 9 9zm4.95-13.95c1.313 1.313 2.05 3.093 2.05 4.95s-0.738 3.637-2.05 4.95c-1.313 1.313-3.093 2.05-4.95 2.05v-14c1.857 0 3.637 0.737 4.95 2.05z"></path></svg></button></div><div class="navbarSearchContainer_Bca1"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search (Command+K)"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20" aria-hidden="true"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"></span></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="theme-layout-main main-wrapper mainWrapper_z2l0"><div class="docsWrapper_hBAB"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docRoot_UBD9"><aside class="theme-doc-sidebar-container docSidebarContainer_YfHR"><div class="sidebarViewport_aRkj"><div class="sidebar_njMd sidebarWithHideableNavbar_wUlq"><a tabindex="-1" class="sidebarLogo_isFc" href="/"><img src="/img/lf-docs-light.svg" alt="Langflow" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src="/img/lf-docs-dark.svg" alt="Langflow" class="themedComponent_mlkZ themedComponent--dark_xIcU"></a><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/">Get started</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/concepts-overview">Flows</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/agents">Agents</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/mcp-client">Model Context Protocol (MCP)</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/api-keys-and-authentication">Develop</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/deployment-overview">Deploy</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" role="button" aria-expanded="true" href="/concepts-components">Components reference</a></div><ul class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/concepts-components">Components overview</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" role="button" aria-expanded="true" tabindex="0" href="/components-io">Core components</a></div><ul class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/components-io">Input / Output</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/components-agents">Agents</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-3 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" tabindex="0" href="/components-models">Models</a></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/components-data">Data</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-3 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" tabindex="0" href="/components-processing">Processing</a></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/components-logic">Logic</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/components-helpers">Helpers</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/components-tools">Tools</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" tabindex="0" href="/components-bundle-components">Bundles</a></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/components-custom-components">Create custom Python components</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/api-reference-api-examples">API reference</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/contributing-community">Contribute</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/release-notes">Release notes</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/troubleshoot">Support</a></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 sidebar-ad">
<a href="https://www.langflow.org/desktop" target="_blank" class="menu__link">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_1645_37)">
<path d="M12 17H20C21.1046 17 22 16.1046 22 15V13M12 17H4C2.89543 17 2 16.1046 2 15V5C2 3.89543 2.89543 3 4 3H10M12 17V21M8 21H12M12 21H16M11.75 10.2917H13.2083L16.125 7.375H17.5833L20.5 4.45833H21.9583M16.125 11.75H17.5833L20.5 8.83333H21.9583M11.75 5.91667H13.2083L16.125 3H17.5833" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<defs>
<clipPath id="clip0_1645_37">
<rect width="24" height="24" fill="white"/>
</clipPath>
</defs>
</svg>
<div class="sidebar-ad-text-container">
<span class="sidebar-ad-text">Get started in minutes</span>
<span class="sidebar-ad-text sidebar-ad-text-gradient">Download Langflow Desktop</span>
</div>
</a>
</li></ul></nav></div></div></aside><main class="docMainContainer_TBSr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Components reference</span></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Core components</span></li><li class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link">Logic</span></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Logic</h1></header><style>[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; }</style>
<!-- -->
<p>Logic components provide functionalities for routing, conditional processing, and flow management.</p>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="if-else">If-Else (conditional router)<a href="#if-else" class="hash-link" aria-label="Direct link to If-Else (conditional router)" title="Direct link to If-Else (conditional router)"></a></h2>
<p>The <strong>If-Else</strong> component is a conditional router that routes messages by comparing two strings.
It evaluates a condition by comparing two text inputs using the specified operator, and then routes the message to <code>true_result</code> or <code>false_result</code> depending on the evaluation.</p>
<p>The operator looks for single strings in the input (<code>input_text</code>) based on an operator and match text (<code>match_text</code>), but it can also search for multiple words by matching a regex.
Available operators include:</p>
<ul>
<li><strong>equals</strong>: Exact match comparison</li>
<li><strong>not equals</strong>: Inverse of exact match</li>
<li><strong>contains</strong>: Checks if the <code>match_text</code> is found within <code>input_text</code></li>
<li><strong>starts with</strong>: Checks if <code>input_text</code> begins with <code>match_text</code></li>
<li><strong>ends with</strong>: Checks if <code>input_text</code> ends with <code>match_text</code></li>
<li><strong>regex</strong>: Matches on a case-sensitive pattern</li>
</ul>
<p>By default, all operators are case insensitive except <strong>regex</strong>.
<strong>regex</strong> is always case sensitive, and you can enable case sensitivity for all other operators in the <a href="#if-else-parameters">If-Else parameters</a>.</p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="use-the-if-else-component-in-a-flow">Use the If-Else component in a flow<a href="#use-the-if-else-component-in-a-flow" class="hash-link" aria-label="Direct link to Use the If-Else component in a flow" title="Direct link to Use the If-Else component in a flow"></a></h3>
<p>The following example uses the <strong>If-Else</strong> component to check incoming chat messages with regex matching, and then output a different response depending on whether the match evaluated to true or false.</p>
<p><img decoding="async" loading="lazy" alt="A conditional router connected to two OpenAI components" src="/assets/images/component-conditional-router-1fb27526613395545592fc9166c75c27.png" width="3532" height="3044" class="img_ev3q"></p>
<ol>
<li>
<p>Add an <strong>If-Else</strong> component to your flow, and then configure it as follows:</p>
<ul>
<li>
<p><strong>Text Input</strong>: Connect the <strong>Text Input</strong> port to a <strong>Chat Input</strong> component or another <code>Message</code> input.</p>
<p>If your input isn&#x27;t in <code>Message</code> format, you can use another component to transform it, such as the <a href="/components-processing#type-convert"><strong>Type Convert</strong> component</a> or <a href="/components-processing#parser"><strong>Parser</strong> component</a>.
If your input isn&#x27;t appropriate for <code>Message</code> format, consider using another component for conditional routing, such as the <a href="/components-processing#data-operations"><strong>Data Operations</strong> component</a>.</p>
</li>
<li>
<p><strong>Match Text</strong>: Enter <code>.*(urgent|warning|caution).*</code> so the component looks for these values in incoming input. The regex match is case sensitive, so if you need to look for all permutations of <code>warning</code>, enter <code>warning|Warning|WARNING</code>.</p>
</li>
<li>
<p><strong>Operator</strong>: Select <strong>regex</strong>.</p>
</li>
<li>
<p><strong>Case True</strong>: In the <a href="/concepts-components#component-menus">component&#x27;s header menu</a>, click <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sliders-horizontal" aria-hidden="true"><line x1="21" x2="14" y1="4" y2="4"></line><line x1="10" x2="3" y1="4" y2="4"></line><line x1="21" x2="12" y1="12" y2="12"></line><line x1="8" x2="3" y1="12" y2="12"></line><line x1="21" x2="16" y1="20" y2="20"></line><line x1="12" x2="3" y1="20" y2="20"></line><line x1="14" x2="14" y1="2" y2="6"></line><line x1="8" x2="8" y1="10" y2="14"></line><line x1="16" x2="16" y1="18" y2="22"></line></svg> <strong>Controls</strong>, enable the <strong>Case True</strong> parameter, click <strong>Close</strong>, and then enter <code>New Message Detected</code> in the field.</p>
<p>The <strong>Case True</strong> message is sent from the <strong>True</strong> output port when the match condition evaluates to true.</p>
<p>No message is set for <strong>Case False</strong> so the component doesn&#x27;t emit a message when the condition evaluates to false.</p>
</li>
</ul>
</li>
<li>
<p>Depending on what you want to happen when the outcome is <strong>True</strong>, add components to your flow to execute that logic:</p>
<ol>
<li>
<p>Add a <strong>Language Model</strong>, <strong>Prompt Template</strong>, and <strong>Chat Output</strong> component to your flow.</p>
</li>
<li>
<p>In the <strong>Language Model</strong> component, enter your OpenAI API key or select a different provider and model.</p>
</li>
<li>
<p>Connect the <strong>If-Else</strong> component&#x27;s <strong>True</strong> output port to the <strong>Language Model</strong> component&#x27;s <strong>Input</strong> port.</p>
</li>
<li>
<p>In the <strong>Prompt Template</strong> component, enter instructions for the model when the evaluation is true, such as <code>Send a message that a new warning, caution, or urgent message was received</code>.</p>
</li>
<li>
<p>Connect the <strong>Prompt Template</strong> component to the <strong>Language Model</strong> component&#x27;s <strong>System Message</strong> port.</p>
</li>
<li>
<p>Connect the <strong>Language Model</strong> component&#x27;s output to the <strong>Chat Output</strong> component.</p>
</li>
</ol>
</li>
<li>
<p>Repeat the same process with another set of <strong>Language Model</strong>, <strong>Prompt Template</strong>, and <strong>Chat Output</strong> components for the <strong>False</strong> outcome.</p>
<p>Connect the <strong>If-Else</strong> component&#x27;s <strong>False</strong> output port to the second <strong>Language Model</strong> component&#x27;s <strong>Input</strong> port.
In the second <strong>Prompt Template</strong>, enter instructions for the model when the evaluation is false, such as <code>Send a message that a new low-priority message was received</code>.</p>
</li>
<li>
<p>To test the flow, open the <strong>Playground</strong>, and then send the flow some messages with and without your regex strings.
The chat output should reflect the instructions in your prompts based on the regex evaluation.</p>
<div class="ch-codeblock not-prose" data-ch-theme="github-dark"><div class="ch-code-wrapper ch-code" data-ch-measured="false"><code class="ch-code-scroll-parent"><br><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>User: A new user was created.</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span></span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>AI: A new low-priority message was received.</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span></span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>User: Sign-in warning: new user locked out.</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span></span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>AI: A new warning, caution, or urgent message was received. Please review it at your earliest convenience.</span></div></div><br></code></div></div>
</li>
</ol>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="if-else-parameters">If-Else parameters<a href="#if-else-parameters" class="hash-link" aria-label="Direct link to If-Else parameters" title="Direct link to If-Else parameters"></a></h3>
<p>Some parameters are hidden by default in the visual editor.
You can modify all parameters through the <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sliders-horizontal" aria-hidden="true"><line x1="21" x2="14" y1="4" y2="4"></line><line x1="10" x2="3" y1="4" y2="4"></line><line x1="21" x2="12" y1="12" y2="12"></line><line x1="8" x2="3" y1="12" y2="12"></line><line x1="21" x2="16" y1="20" y2="20"></line><line x1="12" x2="3" y1="20" y2="20"></line><line x1="14" x2="14" y1="2" y2="6"></line><line x1="8" x2="8" y1="10" y2="14"></line><line x1="16" x2="16" y1="18" y2="22"></line></svg> <strong>Controls</strong> in the <a href="/concepts-components#component-menus">component&#x27;s header menu</a>.</p>
<table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>input_text</td><td>String</td><td>Input parameter. The primary text input for the operation.</td></tr><tr><td>match_text</td><td>String</td><td>Input parameter. The text to compare against.</td></tr><tr><td>operator</td><td>Dropdown</td><td>Input parameter. The operator used to compare texts. Options include <code>equals</code>, <code>not equals</code>, <code>contains</code>, <code>starts with</code>, <code>ends with</code>, and <code>regex</code>. The default is <code>equals</code>.</td></tr><tr><td>case_sensitive</td><td>Boolean</td><td>Input parameter. When <code>true</code>, the comparison is case sensitive. The default is <code>false</code>. This setting doesn&#x27;t apply to regex comparisons.</td></tr><tr><td>max_iterations</td><td>Integer</td><td>Input parameter. The maximum number of iterations allowed for the conditional router. The default is 10.</td></tr><tr><td>default_route</td><td>Dropdown</td><td>Input parameter. The route to take when max iterations are reached. Options include <code>true_result</code> or <code>false_result</code>. The default is <code>false_result</code>.</td></tr><tr><td>true_result</td><td>Message</td><td>Output parameter. The output produced when the condition is true.</td></tr><tr><td>false_result</td><td>Message</td><td>Output parameter. The output produced when the condition is false.</td></tr></tbody></table>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="loop">Loop<a href="#loop" class="hash-link" aria-label="Direct link to Loop" title="Direct link to Loop"></a></h2>
<p>The <strong>Loop</strong> component iterates over a list of input by passing individual items to other components attached at the <strong>Item</strong> output port until there are no items left to process.
Then, the <strong>Loop</strong> component passes the aggregated result of all looping to the component connected to the <strong>Done</strong> port.</p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="the-looping-process">The looping process<a href="#the-looping-process" class="hash-link" aria-label="Direct link to The looping process" title="Direct link to The looping process"></a></h3>
<p>The <strong>Loop</strong> component is like a miniature flow within your flow.
Here&#x27;s a breakdown of the looping process:</p>
<ol>
<li>
<p>Accepts a list of <a href="/data-types#data"><code>Data</code></a> or <a href="/data-types#dataframe"><code>DataFrame</code></a> objects, such as a CSV file, through the <strong>Loop</strong> component&#x27;s <strong>Inputs</strong> port.</p>
</li>
<li>
<p>Splits the input into individual items. For example, a CSV file is broken down by rows.</p>
<p>Specifically, the <strong>Loop</strong> component repeatedly extracts items by <code>text</code> key in the <code>Data</code> or <code>DataFrame</code> objects until there are no more items to extract.
Each <code>item</code> output is a <code>Data</code> objects.</p>
</li>
<li>
<p>Iterates over each <code>item</code> by passing them to the <strong>Item</strong> output port.</p>
<p>This port connects to one or more components that perform actions on each item.
The final component in the <strong>Item</strong> loop connects back to the <strong>Loop</strong> component&#x27;s <strong>Looping</strong> port to process the next item.</p>
<p>Only one component connects to the <strong>Item</strong> port, but you can pass the data through as many components as you need, as long as the last component in the chain connects back to the <strong>Looping</strong> port.</p>
<p>The <strong>If-Else</strong> component isn&#x27;t compatible with the <strong>Loop</strong> component.
For more information, see <a href="#conditional-looping">Conditional looping</a>.</p>
</li>
<li>
<p>After processing all items, the results are aggregated into a single <code>Data</code> object that is passed from the <strong>Loop</strong> component&#x27;s <strong>Done</strong> port to the next component in the flow.</p>
</li>
</ol>
<p>The following simplified Python code summarizes how the <strong>Loop</strong> component works.
This <em>isn&#x27;t</em> the actual component code; it is only meant to help you understand the general process.</p>
<div class="ch-codeblock not-prose" data-ch-theme="github-dark"><div class="ch-code-wrapper ch-code" data-ch-measured="false"><code class="ch-code-scroll-parent"><br><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>for i in input: # Receive input data as a list</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span> process_item(i) # Process each item through components connected at the Item port</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span> if has_more_items():</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span> continue # Loop back to Looping port to process the next item</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span> else:</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span> break # Exit the loop when no more items are left</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span></span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>done = aggregate_results() # Compile all returned items</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span></span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>print(done) # Send the aggregated results from the Done port to another component</span></div></div><br></code></div></div>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="loop-example">Loop example<a href="#loop-example" class="hash-link" aria-label="Direct link to Loop example" title="Direct link to Loop example"></a></h3>
<p>In the follow example, the <strong>Loop</strong> component iterates over a CSV file until there are no rows left to process.
In this case, the <strong>Item</strong> port passes each row to a <strong>Type Convert</strong> component to convert the row into a <code>Message</code> object, passes the <code>Message</code> to a <strong>Structured Output</strong> component to be processed into structured data that is then passed back to the <strong>Loop</strong> component&#x27;s <strong>Looping</strong> port.
After processing all rows, the <strong>Loop</strong> component loads the aggregated list of structured data into a Chroma DB database through the <strong>Chroma DB</strong> component connected to the <strong>Done</strong> port.</p>
<p><img decoding="async" loading="lazy" alt="Loop CSV parser" src="/assets/images/component-loop-csv-66c1b53f0722b36a900632806cb32d78.png" width="3876" height="3300" class="img_ev3q"></p>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_BuS1"><p>For more examples of the <strong>Loop</strong> component, try the <strong>Research Translation Loop</strong> template in Langflow, or see the video tutorial <a href="https://www.youtube.com/watch?v=9Wx7WODSKTo" target="_blank" rel="noopener noreferrer">Mastering the Loop Component &amp; Agentic RAG in Langflow</a>.</p></div></div>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="conditional-looping">Conditional looping<a href="#conditional-looping" class="hash-link" aria-label="Direct link to Conditional looping" title="Direct link to Conditional looping"></a></h3>
<p>The <strong>If-Else</strong> component isn&#x27;t compatible with the <strong>Loop</strong> component.
If you need conditional loop events, redesign your flow to process conditions before the loop.
For example, if you are looping over a <code>DataFrame</code>, you could use multiple <a href="/components-processing#dataframe-operations"><strong>DataFrame Operations</strong> components</a> to conditionally filter data, and then run separate loops on each set of filtered data.</p>
<p><img decoding="async" loading="lazy" alt="A flow with conditional looping." src="/assets/images/conditional-looping-756b330b8dc690b3dab1c44cc2fb05db.png" width="1482" height="673" class="img_ev3q"></p>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="notify-and-listen">Notify and Listen<a href="#notify-and-listen" class="hash-link" aria-label="Direct link to Notify and Listen" title="Direct link to Notify and Listen"></a></h2>
<p>The <strong>Notify</strong> and <strong>Listen</strong> components are used together.</p>
<p>The <strong>Notify</strong> component builds a notification from the current flow&#x27;s context, including specific data content and a status identifier.</p>
<p>The resulting notification is sent to the <strong>Listen</strong> component.
The notification data can then be passed to other components in the flow, such as the <strong>If-Else</strong> component.</p>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="run-flow">Run flow<a href="#run-flow" class="hash-link" aria-label="Direct link to Run flow" title="Direct link to Run flow"></a></h2>
<p>The <strong>Run Flow</strong> component runs another Langflow flow as a subprocess of the current flow.</p>
<p>You can use this component to chain flows together, run flows conditionally, and attach flows to <a href="/components-agents"><strong>Agent</strong> components</a> as <a href="/agents-tools">tools for agents</a> to run as needed.</p>
<p>When used with an agent, the <code>name</code> and <code>description</code> metadata that the agent uses to register the tool are created automatically.</p>
<p>When you select a flow for the <strong>Run Flow</strong> component, it uses the target flow&#x27;s graph structure to dynamically generate input and output fields on the <strong>Run Flow</strong> component.</p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="run-flow-parameters">Run Flow parameters<a href="#run-flow-parameters" class="hash-link" aria-label="Direct link to Run Flow parameters" title="Direct link to Run Flow parameters"></a></h3>
<p>Some parameters are hidden by default in the visual editor.
You can modify all parameters through the <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sliders-horizontal" aria-hidden="true"><line x1="21" x2="14" y1="4" y2="4"></line><line x1="10" x2="3" y1="4" y2="4"></line><line x1="21" x2="12" y1="12" y2="12"></line><line x1="8" x2="3" y1="12" y2="12"></line><line x1="21" x2="16" y1="20" y2="20"></line><line x1="12" x2="3" y1="20" y2="20"></line><line x1="14" x2="14" y1="2" y2="6"></line><line x1="8" x2="8" y1="10" y2="14"></line><line x1="16" x2="16" y1="18" y2="22"></line></svg> <strong>Controls</strong> in the <a href="/concepts-components#component-menus">component&#x27;s header menu</a>.</p>
<table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>flow_name_selected</td><td>Dropdown</td><td>Input parameter. The name of the flow to run.</td></tr><tr><td>session_id</td><td>String</td><td>Input parameter. The session ID for the flow run, if you want to pass a custom session ID for the subflow.</td></tr><tr><td>flow_tweak_data</td><td>Dict</td><td>Input parameter. Dictionary of tweaks to customize the flow&#x27;s behavior. Available tweaks depend on the selected flow.</td></tr><tr><td>dynamic inputs</td><td>Various</td><td>Input parameter. Additional inputs are generated based on the selected flow.</td></tr><tr><td>run_outputs</td><td>A <code>List</code> of types (<code>Data</code>, <code>Message</code>, or <code>DataFrame</code>)</td><td>Output parameter. All outputs are generated from running the flow.</td></tr></tbody></table>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="legacy-logic-components">Legacy Logic components<a href="#legacy-logic-components" class="hash-link" aria-label="Direct link to Legacy Logic components" title="Direct link to Legacy Logic components"></a></h2>
<!-- -->
<p>Legacy components are longer supported and can be removed in a future release.
You can continue to use them in existing flows, but it is recommended that you replace them with supported components as soon as possible.
Suggested replacements are included in the <strong>Legacy</strong> banner on components in your flows.
They are also given in release notes and Langflow documentation whenever possible.</p>
<p>If you aren&#x27;t sure how to replace a legacy component, <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-search" aria-hidden="true"><circle cx="11" cy="11" r="8"></circle><path d="m21 21-4.3-4.3"></path></svg> <strong>Search</strong> for components by provider, service, or component name.
The component may have been deprecated in favor of a completely new component, a similar component, or a new version of the same component in a different category.</p>
<p>If there is no obvious replacement, consider whether another component can be adapted to your use case.
For example, many <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-component" aria-hidden="true"><path d="M15.536 11.293a1 1 0 0 0 0 1.414l2.376 2.377a1 1 0 0 0 1.414 0l2.377-2.377a1 1 0 0 0 0-1.414l-2.377-2.377a1 1 0 0 0-1.414 0z"></path><path d="M2.297 11.293a1 1 0 0 0 0 1.414l2.377 2.377a1 1 0 0 0 1.414 0l2.377-2.377a1 1 0 0 0 0-1.414L6.088 8.916a1 1 0 0 0-1.414 0z"></path><path d="M8.916 17.912a1 1 0 0 0 0 1.415l2.377 2.376a1 1 0 0 0 1.414 0l2.377-2.376a1 1 0 0 0 0-1.415l-2.377-2.376a1 1 0 0 0-1.414 0z"></path><path d="M8.916 4.674a1 1 0 0 0 0 1.414l2.377 2.376a1 1 0 0 0 1.414 0l2.377-2.376a1 1 0 0 0 0-1.414l-2.377-2.377a1 1 0 0 0-1.414 0z"></path></svg> <strong>Core components</strong> provide generic functionality that can support multiple providers and use cases, such as the <a href="/components-data#api-request"><strong>API Request</strong> component</a>.</p>
<p>If neither of these options are viable, you could use the legacy component&#x27;s code to create your own custom component, or <a href="/contributing-github-issues">start a discussion</a> about the legacy component.</p>
<p>To discourage use of legacy components in new flows, these components are hidden by default.
In the visual editor, you can click <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sliders-horizontal" aria-hidden="true"><line x1="21" x2="14" y1="4" y2="4"></line><line x1="10" x2="3" y1="4" y2="4"></line><line x1="21" x2="12" y1="12" y2="12"></line><line x1="8" x2="3" y1="12" y2="12"></line><line x1="21" x2="16" y1="20" y2="20"></line><line x1="12" x2="3" y1="20" y2="20"></line><line x1="14" x2="14" y1="2" y2="6"></line><line x1="8" x2="8" y1="10" y2="14"></line><line x1="16" x2="16" y1="18" y2="22"></line></svg> <strong>Component settings</strong> to toggle the <strong>Legacy</strong> filter.</p>
<p>The following Logic components are in legacy status:</p>
<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>Condition</summary><div><div class="collapsibleContent_i85q"><p>As an alternative to this legacy component, see the <a href="#if-else"><strong>If-Else</strong> component</a>.</p><p>The <strong>Condition</strong> component routes <code>Data</code> objects based on a condition applied to a specified key, including Boolean validation.
It supports <code>true_output</code> and <code>false_output</code> for routing the results based on the condition evaluation.</p><p>This component is useful in workflows that require conditional routing of complex data structures, enabling dynamic decision-making based on data content.</p><p>It can process either a single <code>Data</code> object or a list of <code>Data</code> objects.
The following actions occur when processing a list of <code>Data</code> objects:</p><ul>
<li>Each object in the list is evaluated individually.</li>
<li>Objects meeting the condition go to <code>true_output</code>.</li>
<li>Objects not meeting the condition go to <code>false_output</code>.</li>
<li>If all objects go to one output, the other output is empty.</li>
</ul><p>The <strong>Condition</strong> component accepts the following parameters:</p><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>data_input</td><td>Data</td><td>Input parameter. The Data object or list of Data objects to process. This input can handle both single items and lists.</td></tr><tr><td>key_name</td><td>String</td><td>Input parameter. The name of the key in the Data object to check.</td></tr><tr><td>operator</td><td>Dropdown</td><td>Input parameter. The operator to apply. Options: <code>equals</code>, <code>not equals</code>, <code>contains</code>, <code>starts with</code>, <code>ends with</code>, <code>boolean validator</code>. Default: <code>equals</code>.</td></tr><tr><td>compare_value</td><td>String</td><td>Input parameter. The value to compare against. Not shown/used when operator is <code>boolean validator</code>.</td></tr></tbody></table><p>The <code>operator</code> options have the following behaviors:</p><ul>
<li><code>equals</code>: Exact match comparison between the key&#x27;s value and compare_value.</li>
<li><code>not equals</code>: Inverse of exact match.</li>
<li><code>contains</code>: Checks if compare_value is found within the key&#x27;s value.</li>
<li><code>starts with</code>: Checks if the key&#x27;s value begins with compare_value.</li>
<li><code>ends with</code>: Checks if the key&#x27;s value ends with compare_value.</li>
<li><code>boolean validator</code>: Treats the key&#x27;s value as a Boolean. The following values are considered true:<!-- -->
<ul>
<li>Boolean <code>true</code>.</li>
<li>Strings: <code>true</code>, <code>1</code>, <code>yes</code>, <code>y</code>, <code>on</code> (case-insensitive)</li>
<li>Any other value is converted using Python&#x27;s <code>bool()</code> function</li>
</ul>
</li>
</ul></div></div></details>
<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>Pass</summary><div><div class="collapsibleContent_i85q"><p>As an alternative to this legacy component, use the <a href="#if-else"><strong>If-Else</strong> component</a> to pass a message without modification.</p><p>The <strong>Pass</strong> component forwards the input message without modification.</p><p>It accepts the following parameters:</p><table><thead><tr><th>Name</th><th>Display Name</th><th>Info</th></tr></thead><tbody><tr><td>input_message</td><td>Input Message</td><td>Input parameter. The message to forward.</td></tr><tr><td>ignored_message</td><td>Ignored Message</td><td>Input parameter. A second message that is ignored. Used as a workaround for continuity.</td></tr><tr><td>output_message</td><td>Output Message</td><td>Output parameter. The forwarded message from the input.</td></tr></tbody></table></div></div></details>
<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>Flow As Tool</summary><div><div class="collapsibleContent_i85q"><p>This component constructed a tool from a function that ran a loaded flow.</p><p>It was deprecated in Langflow version 1.1.2 and replaced by the <a href="#run-flow"><strong>Run Flow</strong> component</a>.</p></div></div></details>
<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>Sub Flow</summary><div><div class="collapsibleContent_i85q"><p>This component integrated entire flows as components within a larger workflow.
It dynamically generated inputs based on the selected flow and executed the flow with provided parameters.</p><p>It was deprecated in Langflow version 1.1.2 and replaced by the <a href="#run-flow"><strong>Run Flow</strong> component</a>.</p></div></div></details></div></article><nav class="docusaurus-mt-lg pagination-nav" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/components-prompts"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Prompt Template</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/components-helpers"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Helpers</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#if-else" class="table-of-contents__link toc-highlight">If-Else (conditional router)</a><ul><li><a href="#use-the-if-else-component-in-a-flow" class="table-of-contents__link toc-highlight">Use the If-Else component in a flow</a></li><li><a href="#if-else-parameters" class="table-of-contents__link toc-highlight">If-Else parameters</a></li></ul></li><li><a href="#loop" class="table-of-contents__link toc-highlight">Loop</a><ul><li><a href="#the-looping-process" class="table-of-contents__link toc-highlight">The looping process</a></li><li><a href="#loop-example" class="table-of-contents__link toc-highlight">Loop example</a></li><li><a href="#conditional-looping" class="table-of-contents__link toc-highlight">Conditional looping</a></li></ul></li><li><a href="#notify-and-listen" class="table-of-contents__link toc-highlight">Notify and Listen</a></li><li><a href="#run-flow" class="table-of-contents__link toc-highlight">Run flow</a><ul><li><a href="#run-flow-parameters" class="table-of-contents__link toc-highlight">Run Flow parameters</a></li></ul></li><li><a href="#legacy-logic-components" class="table-of-contents__link toc-highlight">Legacy Logic components</a></li></ul></div></div></div></div></main></div></div></div><footer class="theme-layout-footer footer"><div class="container container-fluid"><div class="row footer__links"><div class="theme-layout-footer-column col footer__col"><div class="footer__title"></div><ul class="footer__items clean-list"><li class="footer__item"><div class="footer-links">
<span>© 2025 Langflow</span>
<span id="preferenceCenterContainer"> ·&nbsp; <a href="#" onclick='return"undefined"!=typeof window&&window.truste&&window.truste.eu&&window.truste.eu.clickListener&&window.truste.eu.clickListener(),!1' style="cursor: pointer;">Manage Privacy Choices</a></span>
</div></li></ul></div></div></div></footer><div style="position:fixed;right:21px;bottom:21px;z-index:100;display:flex;align-items:center;gap:10px;cursor:pointer"><div style="background-color:#f6f6f6;border-radius:50%;width:48px;height:48px;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 4px rgba(0,0,0,0.1)"><img src="/img/langflow-icon-black-transparent.svg" style="width:40px" alt="Search"></div></div></div>
</body>
</html>