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

239 lines
53 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-helpers" data-has-hydrated="false">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.8.1">
<title data-rh="true">Helpers | 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-helpers"><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="Helpers | Langflow Documentation"><meta data-rh="true" name="description" content="Helper components provide utility functions to help manage data and perform simple tasks in your flow."><meta data-rh="true" property="og:description" content="Helper components provide utility functions to help manage data and perform simple tasks in your flow."><link data-rh="true" rel="icon" href="/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://docs.langflow.org/components-helpers"><link data-rh="true" rel="alternate" href="https://docs.langflow.org/components-helpers" hreflang="en"><link data-rh="true" rel="alternate" href="https://docs.langflow.org/components-helpers" 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":"Helpers","item":"https://docs.langflow.org/components-helpers"}]}</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" 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 menu__link--active" aria-current="page" 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">Helpers</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>Helpers</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>Helper components provide utility functions to help manage data and perform simple tasks in your flow.</p>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="calculator">Calculator<a href="#calculator" class="hash-link" aria-label="Direct link to Calculator" title="Direct link to Calculator"></a></h2>
<p>The <strong>Calculator</strong> component performs basic arithmetic operations on mathematical expressions.
It supports addition, subtraction, multiplication, division, and exponentiation operations.</p>
<p>For an example of using this component in a flow, see the <a href="/components-processing#python-interpreter"><strong>Python Interpreter</strong> component</a>.</p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="calculator-parameters">Calculator parameters<a href="#calculator-parameters" class="hash-link" aria-label="Direct link to Calculator parameters" title="Direct link to Calculator parameters"></a></h3>
<table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>expression</td><td>String</td><td>Input parameter. The arithmetic expression to evaluate, such as <code>4*4*(33/22)+12-20</code>.</td></tr><tr><td>result</td><td>Data</td><td>Output parameter. The calculation result as a <a href="/data-types"><code>Data</code> object</a> containing the evaluated expression.</td></tr></tbody></table>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="current-date">Current Date<a href="#current-date" class="hash-link" aria-label="Direct link to Current Date" title="Direct link to Current Date"></a></h2>
<p>The <strong>Current Date</strong> 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.</p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="current-date-parameters">Current Date parameters<a href="#current-date-parameters" class="hash-link" aria-label="Direct link to Current Date parameters" title="Direct link to Current Date parameters"></a></h3>
<table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>timezone</td><td>String</td><td>Input parameter. The timezone for the current date and time.</td></tr><tr><td>current_date</td><td>String</td><td>Output parameter. The resulting current date and time in the selected timezone.</td></tr></tbody></table>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="message-history">Message History<a href="#message-history" class="hash-link" aria-label="Direct link to Message History" title="Direct link to Message History"></a></h2>
<p>The <strong>Message History</strong> component provides combined chat history and message storage functionality.
It can store and retrieve chat messages from either <a href="/memory">Langflow storage</a> <em>or</em> a dedicated chat memory database like Mem0 or Redis.</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>The <strong>Agent</strong> component has built-in chat memory that is enabled by default and uses Langflow storage.
This built-in chat memory functionality is sufficient for most use cases.</p><p>Use the <strong>Message History</strong> component for the following use cases:</p><ul>
<li>You need to store and retrieve chat memory for a language model component (not an agent).</li>
<li>You need to retrieve chat memories outside the chat context, such as a sentiment analysis flow that retrieves and analyzes recently stored memories.</li>
<li>You want to store memories in a specific database that is separate from Langflow storage.</li>
</ul><p>For more information, see <a href="/memory#store-chat-memory">Store chat memory</a>.</p></div></div>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="use-the-message-history-component-in-a-flow">Use the Message History component in a flow<a href="#use-the-message-history-component-in-a-flow" class="hash-link" aria-label="Direct link to Use the Message History component in a flow" title="Direct link to Use the Message History component in a flow"></a></h3>
<p>The <strong>Message History</strong> component has two modes, depending on where you want to use it in your flow:</p>
<ul>
<li><strong>Retrieve mode</strong>: The component retrieves chat messages from your Langflow database or external memory.</li>
<li><strong>Store mode</strong>: The component stores chat messages in your Langflow database or external memory.</li>
</ul>
<p>This means that you need multiple <strong>Message History</strong> components in your flow if you want to both store and retrieve chat messages.</p>
<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">Use Langflow storage</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">Use external chat memory</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><p>The following steps explain how to create a chat-based flow that uses <strong>Message History</strong> components to store and retrieve chat memory from your Langflow installation&#x27;s database:</p><ol>
<li>
<p>Create or edit a flow where you want to use chat memory.</p>
</li>
<li>
<p>At the beginning of the flow, add a <strong>Message History</strong> component, and then set it to <strong>Retrieve</strong> mode.</p>
</li>
<li>
<p>Optional: In the <strong>Message History</strong> <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> to enable parameters for memory sorting, filtering, and limits.</p>
</li>
<li>
<p>Add a <strong>Prompt Template</strong> component, add a <code>{memory}</code> variable to the <strong>Template</strong> field, and then connect the <strong>Message History</strong> output to the <strong>memory</strong> input.</p>
<p>The <strong>Prompt Template</strong> component supplies instructions and context to LLMs, separate from chat messages passed through a <strong>Chat Input</strong> component.
The template can include any text and variables that you want to supply to the LLM, for example:</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>You are a helpful assistant that answers questions.</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>Use markdown to format your answer, properly embedding images and urls.</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>History:</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>{memory}</span></div></div><br></code></div></div>
<p>Variables (<code>{variable}</code>) in the template dynamically add fields to the <strong>Prompt Template</strong> component so that your flow can receive definitions for those values from elsewhere, such as other components, Langflow global variables, or runtime input.
For more information, see <a href="/components-prompts#define-variables-in-prompts">Define variables in prompts</a>.</p>
<p>In this example, the <code>{memory}</code> variable is populated by the retrieved chat memories, which are then passed to a <strong>Language Model</strong> or <strong>Agent</strong> component to provide additional context to the LLM.</p>
</li>
<li>
<p>Connect the <strong>Prompt Template</strong> component&#x27;s output to a <strong>Language Model</strong> component&#x27;s <strong>System Message</strong> input.</p>
<p>This example uses the <strong>Language Model</strong> core component as the central chat driver, but you can also use another language model component or the <strong>Agent</strong> component.</p>
</li>
<li>
<p>Add a <strong>Chat Input</strong> component, and then connect it to the <strong>Language Model</strong> component&#x27;s <strong>Input</strong> field.</p>
</li>
<li>
<p>Connect the <strong>Language Model</strong> component&#x27;s output to a <strong>Chat Output</strong> component.</p>
</li>
<li>
<p>At the end of the flow, add another <strong>Message History</strong> component, and then set it to <strong>Store</strong> mode.</p>
<p>Configure any additional parameters in the second <strong>Message History</strong> component as needed, taking into consideration that this particular component will store chat messages rather than retrieve them.</p>
</li>
<li>
<p>Connect the <strong>Chat Output</strong> component&#x27;s output to the <strong>Message History</strong> component&#x27;s <strong>Message</strong> input.</p>
<p>Each response from the LLM is output from the <strong>Language Model</strong> component to the <strong>Chat Output</strong> component, and then stored in chat memory by the final <strong>Message History</strong> component.</p>
</li>
</ol></div><div role="tabpanel" class="tabItem_Ymn6" hidden=""><p>To store and retrieve chat memory from a dedicated, external chat memory database, use the <strong>Message History</strong> component <em>and</em> a provider-specific chat memory component.</p><p>The following steps explain how to create a flow that stores and retrieves chat memory from a <a href="/bundles-redis"><strong>Redis Chat Memory</strong> component</a>.
Other options include the <a href="/bundles-mem0"><strong>Mem0 Chat Memory</strong> component</a> and <a href="/bundles-cassandra#cassandra-chat-memory"><strong>Cassandra Chat Memory</strong> component</a>.</p><ol>
<li>
<p>Create or edit a flow where you want to use chat memory.</p>
</li>
<li>
<p>At the beginning of the flow, add a <strong>Message History</strong> component and a <strong>Redis Chat Memory</strong> component:</p>
<ol>
<li>
<p>Configure the <strong>Redis Chat Memory</strong> component to connect to your Redis database. For more information, see the <a href="https://redis.io/docs/latest/" target="_blank" rel="noopener noreferrer">Redis documentation</a>.</p>
</li>
<li>
<p>Set the <strong>Message History</strong> component to <strong>Retrieve</strong> mode.</p>
</li>
<li>
<p>In the <strong>Message History</strong> <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 <strong>External Memory</strong>, and then click <strong>Close</strong>.</p>
<p>In <strong>Controls</strong>, you can also enable parameters for memory sorting, filtering, and limits.</p>
</li>
<li>
<p>Connect the <strong>Redis Chat Memory</strong> component&#x27;s output to the <strong>Message History</strong> component&#x27;s <strong>External Memory</strong> input.</p>
</li>
</ol>
</li>
<li>
<p>Add a <strong>Prompt Template</strong> component, add a <code>{memory}</code> variable to the <strong>Template</strong> field, and then connect the <strong>Message History</strong> output to the <strong>memory</strong> input.</p>
<p>The <strong>Prompt Template</strong> component supplies instructions and context to LLMs, separate from chat messages passed through a <strong>Chat Input</strong> component.
The template can include any text and variables that you want to supply to the LLM, for example:</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>You are a helpful assistant that answers questions.</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>Use markdown to format your answer, properly embedding images and urls.</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>History:</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>{memory}</span></div></div><br></code></div></div>
<p>Variables (<code>{variable}</code>) in the template dynamically add fields to the <strong>Prompt Template</strong> component so that your flow can receive definitions for those values from elsewhere, such as other components, Langflow global variables, or runtime input.
For more information, see <a href="/components-prompts#define-variables-in-prompts">Define variables in prompts</a>.</p>
<p>In this example, the <code>{memory}</code> variable is populated by the retrieved chat memories, which are then passed to a <strong>Language Model</strong> or <strong>Agent</strong> component to provide additional context to the LLM.</p>
</li>
<li>
<p>Connect the <strong>Prompt Template</strong> component&#x27;s output to a <strong>Language Model</strong> component&#x27;s <strong>System Message</strong> input.</p>
<p>This example uses the <strong>Language Model</strong> core component as the central chat driver, but you can also use another language model component or the <strong>Agent</strong> component.</p>
</li>
<li>
<p>Add a <strong>Chat Input</strong> component, and then connect it to the <strong>Language Model</strong> component&#x27;s <strong>Input</strong> input.</p>
</li>
<li>
<p>Connect the <strong>Language Model</strong> component&#x27;s output to a <strong>Chat Output</strong> component.</p>
</li>
<li>
<p>At the end of the flow, add another pair of <strong>Message History</strong> and <strong>Redis Chat Memory</strong> components:</p>
<ol>
<li>
<p>Configure the <strong>Redis Chat Memory</strong> component to connect to your Redis database.</p>
</li>
<li>
<p>Set the <strong>Message History</strong> component to <strong>Store</strong> mode.</p>
</li>
<li>
<p>In the <strong>Message History</strong> <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 <strong>External Memory</strong>, and then click <strong>Close</strong>.</p>
<p>Configure any additional parameters in this component as needed, taking into consideration that this particular component will store chat messages rather than retrieve them.</p>
</li>
<li>
<p>Connect the <strong>Redis Chat Memory</strong> component to the <strong>Message History</strong> component&#x27;s <strong>External Memory</strong> input.</p>
</li>
</ol>
</li>
<li>
<p>Connect the <strong>Chat Output</strong> component&#x27;s output to the <strong>Message History</strong> component&#x27;s <strong>Message</strong> input.</p>
<p>Each response from the LLM is output from the <strong>Language Model</strong> component to the <strong>Chat Output</strong> component, and then stored in chat memory by passing it to the final <strong>Message History</strong> and <strong>Redis Chat Memory</strong> components.</p>
</li>
</ol><p><img decoding="async" loading="lazy" alt="A flow with Message History and Redis Chat Memory components" src="/assets/images/component-message-history-external-memory-7e32402d0b6e819f5539adfbfbd3620f.png" width="4000" height="1768" class="img_ev3q"></p></div></div></div>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="message-history-parameters">Message History parameters<a href="#message-history-parameters" class="hash-link" aria-label="Direct link to Message History parameters" title="Direct link to Message History 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>
<p>The available parameters depend on whether the component is in <strong>Retrieve</strong> or <strong>Store</strong> mode.</p>
<div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">Retrieve mode</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">Store mode</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><strong>Template</strong> (<code>template</code>)</td><td>String</td><td>Input parameter. The template to use for formatting the data. It can contain the keys <code>{text}</code>, <code>{sender}</code> or any other key in the message data.</td></tr><tr><td><strong>External Memory</strong> (<code>memory</code>)</td><td>External Memory</td><td>Input parameter. Retrieve messages from an external memory. If empty, Langflow storage is used.</td></tr><tr><td><strong>Number of Messages</strong> (<code>n_messages</code>)</td><td>Integer</td><td>Input parameter. The number of messages to retrieve. Default: 100.</td></tr><tr><td><strong>Order</strong> (<code>order</code>)</td><td>String</td><td>Input parameter. The order of the messages. Default: <code>Ascending</code>.</td></tr><tr><td><strong>Sender Type</strong> (<code>sender_type</code>)</td><td>String</td><td>Input parameter. Filter by sender type, one of <code>User</code>, <code>Machine</code>, or <code>Machine and User</code> (default).</td></tr><tr><td><strong>Session ID</strong> (<code>session_id</code>)</td><td>String</td><td>Input parameter. The <a href="/session-id">session ID</a> of the chat memories to retrieve. If omitted or empty, the current session ID for the flow run is used.</td></tr></tbody></table></div><div role="tabpanel" class="tabItem_Ymn6" hidden=""><table><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><strong>Template</strong> (<code>template</code>)</td><td>String</td><td>Input parameter. The template to use for formatting the data. It can contain the keys <code>{text}</code>, <code>{sender}</code> or any other key in the message data.</td></tr><tr><td><strong>Message</strong> (<code>message</code>)</td><td>String</td><td>Input parameter. The message to store, typically provided by connecting a <strong>Chat Output</strong> component.</td></tr><tr><td><strong>External Memory</strong> (<code>memory</code>)</td><td>External Memory</td><td>Input parameter. Store messages in external memory. If empty, Langflow storage is used.</td></tr><tr><td><strong>Sender</strong> (<code>sender</code>)</td><td>String</td><td>Input parameter. Choose which messages to store based on sender, one of <code>User</code>, <code>Machine</code>, or <code>Machine and User</code> (default).</td></tr><tr><td><strong>Sender Name</strong> (<code>sender_name</code>)</td><td>String</td><td>Input parameter. A backup <code>sender</code> label to use if a message doesn&#x27;t have sender metadata.</td></tr><tr><td><strong>Session ID</strong> (<code>session_id</code>)</td><td>String</td><td>Input parameter. The <a href="/session-id">session ID</a> of the chat memories to store. If omitted or empty, the current session ID for the flow run is used. Use custom session IDs if you need to segregate chat memory for different users or applications that run the same flow.</td></tr><tr><td><strong>Sender Type</strong> (<code>sender_type</code>)</td><td>String</td><td>Input parameter. Filter by sender type, one of <code>User</code>, <code>Machine</code>, or <code>Machine and User</code> (default).</td></tr></tbody></table></div></div></div>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="message-history-output">Message History output<a href="#message-history-output" class="hash-link" aria-label="Direct link to Message History output" title="Direct link to Message History output"></a></h3>
<p>Memories can be retrieved in one of two formats:</p>
<ul>
<li>
<p><strong>Message</strong>: Retrieve memories as <code>Message</code> objects, including <code>messages_text</code> containing retrieved chat message text.
This is the typical output format used to pass memories <em>as chat messages</em> to another component.</p>
</li>
<li>
<p><strong>DataFrame</strong>: Returns memories as a <code>DataFrame</code> containing the message data.
Useful for cases where you need to retrieve memories in a tabular format rather than as chat messages.</p>
</li>
</ul>
<p>You can set the output type near the component&#x27;s output port.</p>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="legacy-helper-components">Legacy Helper components<a href="#legacy-helper-components" class="hash-link" aria-label="Direct link to Legacy Helper components" title="Direct link to Legacy Helper 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 Helper components are in legacy status:</p>
<ul>
<li>
<p><strong>Message Store</strong>: Replaced by the <a href="#message-history"><strong>Message History</strong> component</a></p>
</li>
<li>
<p><strong>Create List</strong>: Replace with <a href="/components-processing">Processing components</a></p>
</li>
<li>
<p><strong>ID Generator</strong>: Replace with a component that executes arbitrary code to generate an ID or embed an ID generator script your application code (external to your Langflow flows).</p>
</li>
<li>
<p><strong>Output Parser</strong>: Replace with the <a href="/components-processing#structured-output"><strong>Structured Output</strong> component</a> and <a href="/components-processing#parser"><strong>Parser</strong> component</a>.
The components you need depend on the data types and complexity of the parsing task.</p>
<p>The <strong>Output Parser</strong> component transformed the output of a language model into comma-separated values (CSV) format, such as <code>[&quot;item1&quot;, &quot;item2&quot;, &quot;item3&quot;]</code>, using LangChain&#x27;s <code>CommaSeparatedListOutputParser</code>.
The <strong>Structured Output</strong> component is a good alternative for this component because it also formats LLM responses with support for custom schemas and more complex parsing.</p>
<p><strong>Parsing</strong> components only provide formatting instructions and parsing functionality.
<em>They don&#x27;t include prompts.</em>
You must connect parsers to <strong>Prompt Template</strong> components to create prompts that LLMs can use.</p>
</li>
</ul></div></article><nav class="docusaurus-mt-lg pagination-nav" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/components-logic"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Logic</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/components-tools"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Tools</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="#calculator" class="table-of-contents__link toc-highlight">Calculator</a><ul><li><a href="#calculator-parameters" class="table-of-contents__link toc-highlight">Calculator parameters</a></li></ul></li><li><a href="#current-date" class="table-of-contents__link toc-highlight">Current Date</a><ul><li><a href="#current-date-parameters" class="table-of-contents__link toc-highlight">Current Date parameters</a></li></ul></li><li><a href="#message-history" class="table-of-contents__link toc-highlight">Message History</a><ul><li><a href="#use-the-message-history-component-in-a-flow" class="table-of-contents__link toc-highlight">Use the Message History component in a flow</a></li><li><a href="#message-history-parameters" class="table-of-contents__link toc-highlight">Message History parameters</a></li><li><a href="#message-history-output" class="table-of-contents__link toc-highlight">Message History output</a></li></ul></li><li><a href="#legacy-helper-components" class="table-of-contents__link toc-highlight">Legacy Helper 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>