Files
langflow/get-started-quickstart.html
github-merge-queue[bot] e52fcf0f43 deploy: c57ed6f464
2025-02-25 23:21:43 +00:00

194 lines
38 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.

This file contains Unicode characters that might be confused with other characters. 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-Get-Started/get-started-quickstart" data-has-hydrated="false">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
<title data-rh="true">Quickstart | 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/get-started-quickstart"><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="Quickstart | Langflow Documentation"><meta data-rh="true" name="description" content="Get to know Langflow by building an OpenAI-powered chatbot application. After you&#x27;ve constructed a chatbot, add Retrieval Augmented Generation (RAG) to chat with your own data."><meta data-rh="true" property="og:description" content="Get to know Langflow by building an OpenAI-powered chatbot application. After you&#x27;ve constructed a chatbot, add Retrieval Augmented Generation (RAG) to chat with your own data."><link data-rh="true" rel="icon" href="/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://docs.langflow.org/get-started-quickstart"><link data-rh="true" rel="alternate" href="https://docs.langflow.org/get-started-quickstart" hreflang="en"><link data-rh="true" rel="alternate" href="https://docs.langflow.org/get-started-quickstart" hreflang="x-default"><link data-rh="true" rel="preconnect" href="https://UZK6BDPCVY-dsn.algolia.net" crossorigin="anonymous"><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-XHC7G628ZP"></script>
<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-XHC7G628ZP",{anonymize_ip:!0})</script>
<link rel="preconnect" href="https://www.googletagmanager.com">
<script>window.dataLayer=window.dataLayer||[]</script>
<script>!function(e,t,a,n){e[n]=e[n]||[],e[n].push({"gtm.start":(new Date).getTime(),event:"gtm.js"});var g=t.getElementsByTagName(a)[0],m=t.createElement(a);m.async=!0,m.src="https://www.googletagmanager.com/gtm.js?id=GTM-NK5M4ZT8",g.parentNode.insertBefore(m,g)}(window,document,"script","dataLayer")</script>
<link rel="search" type="application/opensearchdescription+xml" title="Langflow Documentation" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.e5a88218.css">
<script src="/assets/js/runtime~main.222d37de.js" defer="defer"></script>
<script src="/assets/js/main.fa64d841.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-NK5M4ZT8" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();null!==e?t(e):window.matchMedia("(prefers-color-scheme: dark)").matches?t("dark"):(window.matchMedia("(prefers-color-scheme: light)").matches,t("light"))}(),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="navbar navbar--fixed-top navbarHideable_m1mJ"><div class="navbar__inner"><div class="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/langflow-logo-black.svg" alt="Langflow" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src="/img/langflow-logo-white.svg" alt="Langflow" class="themedComponent_mlkZ themedComponent--dark_xIcU"></div></a></div><div class="navbar__items navbar__items--right"><a href="https://github.com/langflow-ai/langflow" target="_blank" class="navbar__item navbar__link header-github-link"></a><a href="https://twitter.com/langflow_ai" target="_blank" class="navbar__item navbar__link header-twitter-link"></a><a href="https://discord.gg/EqksyE2EX9" target="_blank" class="navbar__item navbar__link header-discord-link"></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="Switch between dark and light mode (currently light mode)" aria-label="Switch between dark and light mode (currently light mode)" aria-live="polite" aria-pressed="false"><svg viewBox="0 0 24 24" width="24" height="24" class="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" class="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></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="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/langflow-logo-black.svg" alt="Langflow" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src="/img/langflow-logo-white.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-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/">Welcome to Langflow</a></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="/get-started-installation">Get started</a></div><ul style="display:block;overflow:visible;height:auto" 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="/get-started-installation">Install Langflow</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/get-started-quickstart">Quickstart</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="/starter-projects-basic-prompting">Starter projects</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="/tutorials-blog-writer">Tutorials</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">Concepts</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="/components-agents">Components</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-overview">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="/configuration-api-keys">Configuration</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/deployment-docker">Deployment</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">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="/integrations-apify">Integrations</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">Contributing</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 href="https://github.com/langflow-ai/langflow/releases/latest" target="_blank" rel="noopener noreferrer" class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false">Changelog</a></div></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" itemscope="" itemtype="https://schema.org/BreadcrumbList"><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">Get started</span><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Quickstart</span><meta itemprop="position" content="2"></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>Quickstart</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>Get to know Langflow by building an OpenAI-powered chatbot application. After you&#x27;ve constructed a chatbot, add Retrieval Augmented Generation (RAG) to chat with your own data.</p>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="prerequisites">Prerequisites<a href="#prerequisites" class="hash-link" aria-label="Direct link to Prerequisites" title="Direct link to Prerequisites"></a></h2>
<ul>
<li><a href="https://platform.openai.com/" target="_blank" rel="noopener noreferrer">An OpenAI API key</a></li>
<li><a href="https://docs.datastax.com/en/astra-db-serverless/get-started/quickstart.html" target="_blank" rel="noopener noreferrer">An Astra DB vector database</a> with:<!-- -->
<ul>
<li>An Astra DB application token scoped to read and write to the database</li>
<li>A collection created in <a href="https://docs.datastax.com/en/astra-db-serverless/databases/manage-collections.html#create-collection" target="_blank" rel="noopener noreferrer">Astra</a> or a new collection created in the <strong>Astra DB</strong> component</li>
</ul>
</li>
</ul>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="open-langflow-and-start-a-new-project">Open Langflow and start a new project<a href="#open-langflow-and-start-a-new-project" class="hash-link" aria-label="Direct link to Open Langflow and start a new project" title="Direct link to Open Langflow and start a new project"></a></h2>
<ol>
<li>From the Langflow dashboard, click <strong>New Flow</strong>, and then select <strong>Blank Flow</strong>. A blank workspace opens where you can build your flow.</li>
</ol>
<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>If you don&#x27;t want to create a blank flow, click <strong>New Flow</strong>, and then select <strong>Basic Prompting</strong> for a pre-built flow.
Continue to <a href="#run-basic-prompting-flow">Run the basic prompting flow</a>.</p></div></div>
<ol start="2">
<li>
<p>Select <strong>Basic Prompting</strong>.</p>
</li>
<li>
<p>The <strong>Basic Prompting</strong> flow is created.</p>
</li>
</ol>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="build-the-basic-prompting-flow">Build the basic prompting flow<a href="#build-the-basic-prompting-flow" class="hash-link" aria-label="Direct link to Build the basic prompting flow" title="Direct link to Build the basic prompting flow"></a></h2>
<p>The Basic Prompting flow will look like this when it&#x27;s completed:</p>
<p><img decoding="async" loading="lazy" alt="Completed basic prompting flow" src="/assets/images/starter-flow-basic-prompting-09331815d7282bd6a3feedf84838ba20.png" width="2500" height="1528" class="img_ev3q"></p>
<p>To build the <strong>Basic Prompting</strong> flow, follow these steps:</p>
<ol>
<li>Click <strong>Inputs</strong>, select the <strong>Chat Input</strong> component, and then drag it to the canvas.
The <a href="/components-io#chat-input">Chat Input</a> component accepts user input to the chat.</li>
<li>Click <strong>Prompt</strong>, select the <strong>Prompt</strong> component, and then drag it to the canvas.
The <a href="/components-prompts">Prompt</a> component combines the user input with a user-defined prompt.</li>
<li>Click <strong>Outputs</strong>, select the <strong>Chat Output</strong> component, and then drag it to the canvas.
The <a href="/components-io#chat-output">Chat Output</a> component prints the flow&#x27;s output to the chat.</li>
<li>Click <strong>Models</strong>, select the <strong>OpenAI</strong> component, and then drag it to the canvas.
The <a href="/components-models#openai">OpenAI</a> model component sends the user input and prompt to the OpenAI API and receives a response.</li>
</ol>
<p>You should now have a flow that looks like this:</p>
<p><img decoding="async" loading="lazy" alt="Basic prompting flow with no connections" src="/assets/images/quickstart-basic-prompt-no-connections-f5887f67c3448c39b74f7e28b65a0b18.png" width="2528" height="1530" class="img_ev3q"></p>
<p>With no connections between them, the components won&#x27;t interact with each other.
You want data to flow from <strong>Chat Input</strong> to <strong>Chat Output</strong> through the connections between the components.
Each component accepts inputs on its left side, and sends outputs on its right side.
Hover over the connection ports to see the data types that the component accepts.
For more on component inputs and outputs, see <a href="/concepts-components">Components overview</a>.</p>
<ol start="5">
<li>To connect the <strong>Chat Input</strong> component to the OpenAI model component, click and drag a line from the blue <strong>Message</strong> port to the OpenAI model component&#x27;s <strong>Input</strong> port.</li>
<li>To connect the <strong>Prompt</strong> component to the OpenAI model component, click and drag a line from the blue <strong>Prompt Message</strong> port to the OpenAI model component&#x27;s <strong>System Message</strong> port.</li>
<li>To connect the <strong>OpenAI</strong> model component to the <strong>Chat Output</strong>, click and drag a line from the blue <strong>Text</strong> port to the <strong>Chat Output</strong> component&#x27;s <strong>Text</strong> port.</li>
</ol>
<p>Your finished basic prompting flow should look like this:</p>
<p><img decoding="async" loading="lazy" src="/assets/images/starter-flow-basic-prompting-09331815d7282bd6a3feedf84838ba20.png" width="2500" height="1528" class="img_ev3q"></p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="run-basic-prompting-flow">Run the Basic Prompting flow<a href="#run-basic-prompting-flow" class="hash-link" aria-label="Direct link to Run the Basic Prompting flow" title="Direct link to Run the Basic Prompting flow"></a></h3>
<p>Add your OpenAI API key to the OpenAI model component, and add a prompt to the Prompt component to instruct the model how to respond.</p>
<ol>
<li>
<p>Add your credentials to the OpenAI component. The fastest way to complete these fields is with Langflows <a href="/configuration-global-variables">Global Variables</a>.</p>
<ol>
<li>In the OpenAI components OpenAI API Key field, click 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-globe" aria-label="Globe"><circle cx="12" cy="12" r="10"></circle><path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"></path><path d="M2 12h20"></path></svg> <strong>Globe</strong> button, and then click <strong>Add New Variable</strong>.
Alternatively, click your username in the top right corner, and then click <strong>Settings</strong>, <strong>Global Variables</strong>, and then <strong>Add New</strong>.</li>
<li>Name your variable. Paste your OpenAI API key (sk-…​) in the Value field.</li>
<li>In the <strong>Apply To Fields</strong> field, select the OpenAI API Key field to apply this variable to all OpenAI Embeddings components.</li>
</ol>
</li>
<li>
<p>To add a prompt to the <strong>Prompt</strong> component, click the <strong>Template</strong> field, and then enter your prompt.
The prompt guides the bot&#x27;s responses to input.
If you&#x27;re unsure, use <code>Answer the user as if you were a GenAI expert, enthusiastic about helping them get started building something fresh.</code></p>
</li>
<li>
<p>Click <strong>Playground</strong> to start a chat session.</p>
</li>
<li>
<p>Enter a query, and then make sure the bot responds according to the prompt you set in the <strong>Prompt</strong> component.</p>
</li>
</ol>
<p>You have successfully created a chatbot application using OpenAI in the Langflow Workspace.</p>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="add-vector-rag-to-your-application">Add vector RAG to your application<a href="#add-vector-rag-to-your-application" class="hash-link" aria-label="Direct link to Add vector RAG to your application" title="Direct link to Add vector RAG to your application"></a></h2>
<p>You created a chatbot application with Langflow, but let&#x27;s try an experiment.</p>
<ol>
<li>Ask the bot: <code>Who won the Oscar in 2024 for best movie?</code></li>
<li>The bot&#x27;s response is similar to this:</li>
</ol>
<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>I&#x27;m sorry, but I don&#x27;t have information on events or awards that occurred after</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>October 2023, including the Oscars in 2024.</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>You may want to check the latest news or the official Oscars website</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>for the most current information.</span></div></div><br></code></div></div>
<p>Well, that&#x27;s unfortunate, but you can load more up-to-date data with <strong>Retrieval Augmented Generation</strong>, or <strong>RAG</strong>.</p>
<p>Vector RAG allows you to load your own data and chat with it, unlocking a wider range of possibilities for your chatbot application.</p>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="add-vector-rag-with-the-astra-db-component">Add vector RAG with the Astra DB component<a href="#add-vector-rag-with-the-astra-db-component" class="hash-link" aria-label="Direct link to Add vector RAG with the Astra DB component" title="Direct link to Add vector RAG with the Astra DB component"></a></h2>
<p>Build on the basic prompting flow and add vector RAG to your chatbot application with the <strong>Astra DB Vector Store</strong> component.</p>
<p>Add document ingestion to your basic prompting flow, with the <strong>Astra DB</strong> component as the vector store.</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>If you don&#x27;t want to create a blank flow, click <strong>New Flow</strong>, and then select <strong>Vector RAG</strong> for a pre-built flow.</p></div></div>
<p>Adding vector RAG to the basic prompting flow will look like this when completed:</p>
<p><img decoding="async" loading="lazy" alt="Add document ingestion to the basic prompting flow" src="/assets/images/quickstart-add-document-ingestion-5f9756b0a4b7e232b1507e12f335b15e.png" width="2848" height="1324" class="img_ev3q"></p>
<p>To build the flow, follow these steps:</p>
<ol>
<li>Disconnect the <strong>Chat Input</strong> component from the <strong>OpenAI</strong> component by double-clicking on the connecting line.</li>
<li>Click <strong>Vector Stores</strong>, select the <strong>Astra DB</strong> component, and then drag it to the canvas.
The <a href="/components-vector-stores#astra-db-vector-store">Astra DB vector store</a> component connects to your <strong>Astra DB</strong> database.</li>
<li>Click <strong>Data</strong>, select the <strong>File</strong> component, and then drag it to the canvas.
The <a href="/components-data#file">File</a> component loads files from your local machine.</li>
<li>Click <strong>Processing</strong>, select the <strong>Split Text</strong> component, and then drag it to the canvas.
The <a href="/components-processing#split-text">Split Text</a> component splits the loaded text into smaller chunks.</li>
<li>Click <strong>Processing</strong>, select the <strong>Parse Data</strong> component, and then drag it to the canvas.
The <a href="/components-processing#data-to-message">Data to Message</a> component converts the data from the <strong>Astra DB</strong> component into plain text.</li>
<li>Click <strong>Embeddings</strong>, select the <strong>OpenAI Embeddings</strong> component, and then drag it to the canvas.
The <a href="/components-embedding-models#openai-embeddings">OpenAI Embeddings</a> component generates embeddings for the user&#x27;s input, which are compared to the vector data in the database.</li>
<li>Connect the new components into the existing flow, so your flow looks like this:</li>
</ol>
<p><img decoding="async" loading="lazy" alt="Add document ingestion to the basic prompting flow" src="/assets/images/quickstart-add-document-ingestion-5f9756b0a4b7e232b1507e12f335b15e.png" width="2848" height="1324" class="img_ev3q"></p>
<ol start="8">
<li>
<p>Configure the <strong>Astra DB</strong> component.</p>
<ol>
<li>In the <strong>Astra DB Application Token</strong> field, add your <strong>Astra DB</strong> application token.
The component connects to your database and populates the menus with existing databases and collections.</li>
<li>Select your <strong>Database</strong>.
If you don&#x27;t have a collection, select <strong>New database</strong>.
Complete the <strong>Name</strong>, <strong>Cloud provider</strong>, and <strong>Region</strong> fields, and then click <strong>Create</strong>. <strong>Database creation takes a few minutes</strong>.</li>
<li>Select your <strong>Collection</strong>. Collections are created in your <a href="https://astra.datastax.com" target="_blank" rel="noopener noreferrer">Astra DB deployment</a> for storing vector data.</li>
</ol>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>If you select a collection embedded with NVIDIA through Astra&#x27;s vectorize service, the <strong>Embedding Model</strong> port is removed, because you have already generated embeddings for this collection with the NVIDIA <code>NV-Embed-QA</code> model. The component fetches the data from the collection, and uses the same embeddings for queries.</p></div></div>
</li>
<li>
<p>If you don&#x27;t have a collection, create a new one within the component.</p>
<ol>
<li>
<p>Select <strong>New collection</strong>.</p>
</li>
<li>
<p>Complete the <strong>Name</strong>, <strong>Embedding generation method</strong>, <strong>Embedding model</strong>, and <strong>Dimensions</strong> fields, and then click <strong>Create</strong>.</p>
<p>Your choice for the <strong>Embedding generation method</strong> and <strong>Embedding model</strong> depends on whether you want to use embeddings generated by a provider through Astra&#x27;s vectorize service, or generated by a component in Langflow.</p>
<ul>
<li>To use embeddings generated by a provider through Astra&#x27;s vectorize service, select the model from the <strong>Embedding generation method</strong> dropdown menu, and then select the model from the <strong>Embedding model</strong> dropdown menu.</li>
<li>To use embeddings generated by a component in Langflow, select <strong>Bring your own</strong> for both the <strong>Embedding generation method</strong> and <strong>Embedding model</strong> fields. In this starter project, the option for the embeddings method and model is the <strong>OpenAI Embeddings</strong> component connected to the <strong>Astra DB</strong> component.</li>
<li>The <strong>Dimensions</strong> value must match the dimensions of your collection. This field is <strong>not required</strong> if you use embeddings generated through Astra&#x27;s vectorize service. You can find this value in the <strong>Collection</strong> in your <a href="https://astra.datastax.com" target="_blank" rel="noopener noreferrer">Astra DB deployment</a>.</li>
</ul>
<p>For more information, see the <a href="https://docs.datastax.com/en/astra-db-serverless/databases/embedding-generation.html" target="_blank" rel="noopener noreferrer">DataStax Astra DB Serverless documentation</a>.</p>
</li>
</ol>
</li>
</ol>
<p>If you used Langflow&#x27;s <strong>Global Variables</strong> feature, the RAG application flow components are already configured with the necessary credentials.</p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="run-the-chatbot-with-retrieved-context">Run the chatbot with retrieved context<a href="#run-the-chatbot-with-retrieved-context" class="hash-link" aria-label="Direct link to Run the chatbot with retrieved context" title="Direct link to Run the chatbot with retrieved context"></a></h3>
<ol>
<li>Modify the <strong>Prompt</strong> component to contain variables for both <code>{user_question}</code> and <code>{context}</code>.
The <code>{context}</code> variable gives the bot additional context for answering <code>{user_question}</code> beyond what the LLM was trained on.</li>
</ol>
<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>Given the context</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>{context}</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>Answer the question</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>{user_question}</span></div></div><br></code></div></div>
<ol start="2">
<li>In the <strong>File</strong> component, upload a text file from your local machine with data you want to ingest into the <strong>Astra DB</strong> component database.
This example uploads an up-to-date CSV about Oscar winners.</li>
<li>Click <strong>Playground</strong> to start a chat session.</li>
<li>Ask the bot: <code>Who won the Oscar in 2024 for best movie?</code></li>
<li>The bot&#x27;s response should be similar to this:</li>
</ol>
<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>The Oscar for Best Picture in 2024 was awarded to &quot;Oppenheimer,&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>produced by Emma Thomas, Charles Roven, and Christopher Nolan.</span></div></div><br></code></div></div>
<p>Adding an <strong>Astra DB</strong> vector store brought your chatbot all the way into 2024.
You have successfully added RAG to your chatbot application using the <strong>Astra DB</strong> component.</p>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="next-steps">Next steps<a href="#next-steps" class="hash-link" aria-label="Direct link to Next steps" title="Direct link to Next steps"></a></h2>
<p>This example used movie data, but the RAG pattern can be used with any data you want to load and chat with.</p>
<p>Make the <strong>Astra DB</strong> database the brain that <a href="/agents-overview">Agents</a> use to make decisions.</p>
<p>Expose this flow as an <a href="/concepts-api">API</a> and call it from your external applications.</p>
<p>For more on the <strong>Astra DB</strong> component, see <a href="/components-vector-stores#astra-db-vector-store">Astra DB vector store</a>.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/get-started-installation"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Install Langflow</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/starter-projects-basic-prompting"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Basic prompting</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="#prerequisites" class="table-of-contents__link toc-highlight">Prerequisites</a></li><li><a href="#open-langflow-and-start-a-new-project" class="table-of-contents__link toc-highlight">Open Langflow and start a new project</a></li><li><a href="#build-the-basic-prompting-flow" class="table-of-contents__link toc-highlight">Build the basic prompting flow</a><ul><li><a href="#run-basic-prompting-flow" class="table-of-contents__link toc-highlight">Run the Basic Prompting flow</a></li></ul></li><li><a href="#add-vector-rag-to-your-application" class="table-of-contents__link toc-highlight">Add vector RAG to your application</a></li><li><a href="#add-vector-rag-with-the-astra-db-component" class="table-of-contents__link toc-highlight">Add vector RAG with the Astra DB component</a><ul><li><a href="#run-the-chatbot-with-retrieved-context" class="table-of-contents__link toc-highlight">Run the chatbot with retrieved context</a></li></ul></li><li><a href="#next-steps" class="table-of-contents__link toc-highlight">Next steps</a></li></ul></div></div></div></div></main></div></div></div><div style="position:fixed;right:20px;bottom:20px;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>